その理由の1つは、言語がまだABIの安定性に達していないことです。新しいバージョンのリリース後、コードが破損しないことを誰も保証しません。 ただし、Appleはこの状況の修正を最優先事項としています。 そして最近、地平線上にバージョン3.0 が登場しました 。これにより、多くの新しいことがもたらされるはずです。 これはすべて、Swiftを真剣に考える時が来たということですか、それともSwiftを使用することの妥当性は依然として大きな問題ですか?

私たちは、Swiftを既に使用していて、このトピックに精通している大企業の3人の専門家の現在および将来の言語について質問することにしました。 私たちの質問に答えました:
- マキシム・ソコロフ (Avito);
- イゴール・カシュクタ ( バドゥ );
- エゴール・トルストイ (ランブラー&Co)。
あなたの会社でSwiftはどれくらい活発ですか?

Avitoは、いくつかのモバイル製品を開発しています。 私たちのチームは3つのモバイルアプリケーションに取り組んでいます。 私たちは積極的に使用しており、引き続きSwiftを使用します。 私たちのアプリの1つは完全にSwiftで書かれており、App Storeで入手できます。 他の2つはObjective-Cで記述を開始しましたが、現時点ではすべての新しいコードはSwiftでのみ記述されています。

Swiftを使用するだけでなく、GitHubでプロジェクトの一部を公開しました 。 Chattoは最初の兆候であり、CIインフラストラクチャおよびプロジェクト全体の言語の内訳であり、もちろん問題はありませんでしたが、成功しました。 将来的には、アプリケーションの残りの部分でSwiftを使用する予定です。

現在、Swiftで2つのプロジェクトを開発しています。 元々この言語で開発されたそれらの1つは、1か月以内にApp Storeに表示されるはずです。 2番目のRambler。Mailは、もともとObjective-Cで作成されていましたが、リファクタリングの一環として最初のリリースが行われた後、チームは徐々に新しい言語に翻訳し始めました。
この経験は何をもたらしましたか? どのような落とし穴に遭遇しましたか? Swiftを他の人に使用することをお勧めしますか?
マキシム・ソコロフ
Swiftの使用には、長所と短所の両方があります。 まず、Xcode IDEの問題-コンパイラのクラッシュ、Xcode自体、構文の強調表示が落ちる可能性があるという欠点を含めます。 第二に、言語自体はまだ非常に若く、いくつかのツールが欠落している場合があります。たとえば、コミュニティにはユニットテストを書くのに役立つ適切なモックフレームワークがまだありません。 Swiftでサポートされている古き良きOCMockには、多くの要望が残されていますが、見逃されがちです。
一部の言語構成要素はコンパイル時間に大きな影響を与える可能性があり、このような問題は時に愚かなものです。 また、現在大きな問題は、Xcodeによるリファクタリングのサポートの欠如です。 Swift 3.0の今後のリリースについて検討する必要があります。 Appleが状況を改善するための措置を講じることを期待しましょう。
しかし、すべての欠陥にもかかわらず、開発者にSwiftの使用を開始することをお勧めします。 Appleは非常に積極的に開発を進めており、IBMなどの他の大企業の言語にも関心があります。 企業は将来この投資を検討する必要があります。そのため、AvitoはApp Storeに既にアプリがあり、完全にSwiftで記述されています。 Swiftは、製品の品質を大幅に向上させ、開発速度にプラスの影響を与えます。 言語の厳密な型付けにより、動作が予測可能なより安全なコードを書くことができます。 Objective-Cで使用できないジェネリックなどの新しい言語構造により、アプリケーション全体のアーキテクチャを再確認し、効果的に再利用できるコードを作成できるようになります。
イゴール・カシュクタ
克服できなかったものは何もありませんでした。すべての問題は解決されました。 言語のバグはどこにあったか(ところで、多くの場合、新しいバージョンのコンパイラによって修復され、よく行われています)、古いコードを迅速に使用できるように強化する必要がありました。 しかし、全体的に、すべてが順調に進んでいます。 個人的には、Objective-Cで新しいプロジェクトを開始する理由はありません。すぐにswiftで書きます。 C ++との相互運用が必要でない限り、objcでこの部分を実行する必要がありますが、swiftは単純に必要ありません。 しかし、繰り返しますが、これは解決可能です。objcでそれを実行し、上から迅速にジャムできます。
エゴール・トルストイ
この経験は興味深いものです。まず、さまざまな落とし穴を見つけて、それらに対処する方法を学びました。 第二に、彼らはコードジェネレータを書くことが急務であることに気づきました-ユニットテストを書くためのモカクラスを手動で作成するのに必要な時間は、単に非現実的です。 もちろん、他のすべての人と同様に、コンパイル時間で問題を解決できました。 現在、最適化に取り組んでいます。
推奨事項については-良い質問です。 他のほとんどの場合と同様に、明確な答えはありえません。 特定のプロジェクト、そのチーム、ビジネス要件を検討する必要があります。 プロジェクトが非常に大規模で長期にわたる場合、個人的には、Objective-Cに傾いています。
来年、Swiftに何が起こると思いますか。たとえば、バージョン3.0のリリースで人気が大幅に増加しますか? iOSエコシステム以外でも需要がありますか?
マキシム・ソコロフ
私はすでにSwiftの大人気に注目できます。 そして来年には、iOS向けのモバイル開発以外でSwiftを使用することになるでしょう。 Swiftはオープンソースプロジェクトであり、たとえば、backend'omやデータベースを操作するためのフレームワークの出現を既に見ることができます。
イゴール・カシュクタ
私の観点からは、バージョン3.0は本当に通常のバージョン1.0になります。子供の問題は解決され、ガイドが表示され、パッケージマネージャーがあり、ソースコードが添付されます。 人気が急上昇することはないと思います。言語が根本的に変わることはありません。今すぐ何かを始めるための障壁はありません。 新しいプロジェクトが登場するにつれて、成長がよりスムーズに行われることを期待しています。Objective-Cで何か新しいことを始める理由はほとんどないようです。
iOS以外(OS X、watchOS、tvOS)での使用に関しては、ここではすべてがバラ色ではありません。 iOSの場合、すべてが明確であり、以前にも選択肢はありませんでしたが、将来的にも選択肢はありません。 言語としてのSwiftには、開発者に使用を促す「チップ」はありません。 他の人と比較してください:Goはシンプルで、ゴルーチンがあります。 厳格で柔軟なタイピングに関するScala。ただし、複数年にわたるJVMベースに基づいています。 Clojure-複数年にわたるJVMベースに基づいて、言語に組み込まれた興味深いイデオロギーを持つlisp。 Node.jsの形式のJavaScriptを使用すると、クライアントとサーバーで同じコードを使用できます。これにより、同型アプリケーションへの道が開かれます。 Rustは非常に新しい安全なC ++であり、すべてが制御され、明確なオーバーヘッドと、ランタイムなしで使用することができます。
Swiftはすべての人から少しずつすべてを取りますが、それは非常に良いことですが、私はそれがどのようなニッチを占めることができるかまだ理解していません。 私自身も非常に興味がありますが、残っているのは観察することだけです。
エゴール・トルストイ
来年、誇大広告は徐々に減少すると思います。 一方、コミュニティは成長しており、開発者の生活を簡素化する新しいアーキテクチャアプローチ、コンポーネント、およびライブラリが開発されています。
私の意見では、生態系外の需要について話すのは時期尚早です。
6月4日、サンクトペテルブルクのメビウス会議で、すべての回答者がiOS開発に関するプレゼンテーションを行います。 彼らの報告の1つは、Swiftに関するものです。マキシム・ソコロフは 、Swiftでのジェネリックの使用について詳しく話します。 この資料の後に、プロジェクトでSwiftを使用する時期だと感じた場合は、お見逃しなく:)