2016年9月、iOS開発者はワシントンで開催されたCocoaConf DCカンファレンスを訪れ、多くの興味深い経験を得ました。 さまざまな難易度のさまざまな方向で魅力的なレポートがたくさんありました。 この記事では、その珍しさと斬新さに興味を持っているレポートについてお話したいと思います-「お気に入りの言語でサーバー側アプリケーションを作成する:Swift!」By Jonathan Guthrie(
Twitter 、
Github )。 Jonathanは、サーバーアプリケーションの開発にSwift言語を使用できるフレームワークである
Perfectの開発者の1人です。 このトピックは、多くのiOS開発者にとって興味深いものです。「ホーム」のアイデアのほとんどは、サーバー側の実装の問題によって止められているためです。 同時に、追加の言語を学習したり、部外者を惹きつけたりしても、熱意は増しません。
この記事では、コードではなく、質問の理論的な部分に焦点を当てています。 実用ガイドは、「追加資料」セクションまたは検索エンジンで見つけることができます。
なぜ迅速なのですか?
レポートの冒頭で、聴衆の多くがSwiftサーバーのパフォーマンスについて質問しました。 結局のところ、ほとんどの開発者はおそらく、「ネイティブ」言語で異なるタイプのアプリケーションを実装するための新しいソリューションが生産性の低下という形で副作用をもたらすという事実に出くわしているでしょう。 このようなソリューションの鮮明な例は、iOS開発者に馴染みのあるPhoneGapです。 このフレームワークにより、JS開発者はiOSアプリケーションを作成できますが、結果のみが高速を誇ることはできません。 そして、最初の利点としてのスピーカー
は、言語の
パフォーマンスに注目しました。 この図は、Swift言語がJava(およびScala、Closure)に劣らず、JavaScriptに比べて桁違いに劣っており、Ruby、PHP、Pythonなどのスクリプト言語がはるかに遅れていることを示しています。
ベンチマーク
Swiftと他の言語のパフォーマンス比較。2番目の利点は、
言語に強力な静的型付けがあるという事実です。 つまり、変数と関数の最終的な型はコンパイル段階で決定され、言語は暗黙的な変換を実行しません。 したがって、文字列を数字で除算するなどの問題をほぼ即座に診断します。
3番目の重要な側面は、
RAMの
使用です 。 これは重要ではないようです。 多くの場合、バックエンドの開発者から「鉄をもっと購入する必要がある」というフレーズが聞かれます。 同様のコード(
Benchmark )を実行する場合、PerfectフレームワークはNode.JS、Java、またはRubyよりもはるかに少ないリソースで済みます。
Swiftのメモリ使用量と他の言語の比較。なぜこれが関連するのですか? 答えは簡単です-クラウドホスティングのコスト。 ほとんどすべての主要ベンダーで、価格に影響を与える主な基準はクラウドのRAMのサイズです。 もちろん、より高価な料金プランでは追加のCPU容量も割り当てられますが、実際には、より高価な料金プランに切り替える理由はメモリです。
たとえば、Amazon Web Servicesは次の価格プランを提供しています。
計画 | 価格(月額) |
---|
4 vCPU、16 GBのメモリ(0.239ドル/時間) | 172.08ドル |
1つのvCPU、1 GBのメモリ(0.13ドル/時間) | 9.49ドル |
サーバーがRAMの制限に「適合する」場合、約18のバランスの取れたインスタンスを使用できます。 これは、小規模なスタートアップや、何らかの理由で無料のプランに満足しなくなった開発者にとって楽しい瞬間です。
Perfectフレームワークは、負荷時または起動時(
Benchmark )に大量のメモリを必要としません。これは、マイクロサービスアーキテクチャを使用する場合に特に有益です。
SwiftとJSの負荷下でのメモリ消費量の比較。ジョンは
同型プログラミングの可能性にも注目した。 印象的なアイデアは、同じコードを使用してドメインドメインとビジネスロジックを記述することです。 これにより、開発者は既成の
テスト済みコードを再利用でき、開発が大幅に加速
され 、バグの数が減ります。 その結果、コストが削減され、コードの品質が向上します。 一方、これはすべて理論上は素晴らしいように思えますが、実際にはこのアプローチは実装がそれほど容易ではなく、落とし穴もあるため、この点を懐疑的な見方で十分に扱います。
代替フレームワーク
また、サーバー開発の観点からSwiftの開発の良い兆候は、フレームワーク間の健全な競争です。 市場での完璧な代替品は次のとおりです。
KituraはIBMで作成され、開発者は公式に、
IBM BluemixクラウドプラットフォームでのSwiftサービスの展開を最大化すると発表しました。
→
フレームワークの詳細な比較また、それぞれの長所と短所についても詳しく説明し
ます 。
Swift言語の範囲は積極的に拡大しています。 ジョナサンは、開発者は競争相手ですが、全員が良好な関係を維持し、特定の部分の実装について頻繁に議論し、将来、サーバーでSwift言語がますます使用されるように努めることに注意しました。 これはAppleによって促進されます。Appleは、サーバーAPIワーキンググループを作成しました。これには、自社の開発者に加えて、上記の企業の技術専門家が含まれています。 ワークグループマニフェスト:
https :
//swift.org/server-apis/このグループは次の問題に取り組んでいます:
- ネットワークの基本的な仕事。
- セキュリティと暗号化。
- HTTPおよびWebSocket。
基本インターフェイスの 実装標準や
HTTPの実装標準など、チームワークの成果がすでにいくつかあり
ます 。
これにより、通常のSwift開発者は次のことができます。
- ライブラリ開発者は、独自の「自転車」抽象化の記述を少なくして、代替フレームワークに入るためのしきい値を下げます。
- さまざまなライブラリのソリューションを簡単に置き換える(または組み合わせる)こともできます。
完璧なアシスタント
JonathanとPerfectチームは、最も直感的なグラフィカルインターフェイスを備えた
Perfect Assistantツールを開発しました。
機能メニューPerfect Assistant。次のことができます。
- プロジェクトの管理に便利。
- プロジェクトに依存関係を追加するのは簡単です。
- OS XだけでなくLinuxでもプロジェクトの動作を確認してください。
- Amazon S3およびGoogle Cloud Platformでプロジェクトをセットアップしてデプロイします。
このユーティリティは、サーバー開発の深みに飛び込み始めたばかりの開発者を大いに助けます。 初期段階での技術的に困難な多くの問題-サーバーの起動または展開-は、いくつかのボタンを押すことで解決されます。
補助的なグラフィカルインターフェイスを作成することは正しい方向だと思います。これは、関心のある人々の目に火をつけ続けるのに役立ち、Swiftサーバー開発のコミュニティが増えるからです。
結論
Swiftをサーバー開発に使用することは、有望なアイデアと呼ばれ、その人気は成長するだけです。 理由:
- 優れたパフォーマンスとメモリ消費。
- コミュニティは、多数のマニュアル、既製のモジュール、およびサポートツールの開発により成長します。
- メインフレームワークの開発者は、Appleのサポートを募り、Swiftエコシステム全体に好影響を与える一般的な問題の解決に協力しました。
- IBMのような真面目な企業のこのアイデアに興味があります。
残念なことに、現在Swiftが本番環境で使用されないようにする
いくつかの欠点があります。
- Linux開発には独自の特性があります。 一部のフレームワーク(Foundation、GCD)はまだ移植されていないため、Cで記述されたライブラリを使用する必要があります。
- Swift言語標準はまだ活発に開発されており、常に下位互換性があるわけではありません。
追加資料
スピーカー :
Twitter⬝Github⬝
中ビデオ :
→
スピーカーat try!.Swift NYC→
WWDC→
Kituraの開発者からの優れたレポート→
SwiftConf`16のレポート→
本番サーバーの構築記事 :
→
Habréのコード例を含む優れた記事→
フレームワークの比較→
完璧なアシスタント