CocoaConf DC 2016:Swiftサーバー側

2016年9月、iOS開発者はワシントンで開催されたCocoaConf DCカンファレンスを訪れ、多くの興味深い経験を得ました。 さまざまな難易度のさまざまな方向で魅力的なレポートがたくさんありました。 この記事では、その珍しさと斬新さに興味を持っているレポートについてお話したいと思います-「お気に入りの言語でサーバー側アプリケーションを作成する:Swift!」By Jonathan Guthrie( TwitterGithub )。 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の実装標準など、チームワークの成果がすでにいくつかあります



これにより、通常のSwift開発者は次のことができます。





完璧なアシスタント



JonathanとPerfectチームは、最も直感的なグラフィカルインターフェイスを備えたPerfect Assistantツールを開発しました。





機能メニューPerfect Assistant。



次のことができます。





このユーティリティは、サーバー開発の深みに飛び込み始めたばかりの開発者を大いに助けます。 初期段階での技術的に困難な多くの問題-サーバーの起動または展開-は、いくつかのボタンを押すことで解決されます。



補助的なグラフィカルインターフェイスを作成することは正しい方向だと思います。これは、関心のある人々の目に火をつけ続けるのに役立ち、Swiftサーバー開発のコミュニティが増えるからです。



結論



Swiftをサーバー開発に使用することは、有望なアイデアと呼ばれ、その人気は成長するだけです。 理由:





残念なことに、現在Swiftが本番環境で使用されないようにするいくつかの欠点があります。





追加資料



スピーカー



Twitter⬝Github⬝



ビデオ



スピーカーat try!.Swift NYC

WWDC

Kituraの開発者からの優れたレポート

SwiftConf`16のレポート

本番サーバーの構築



記事



Habréのコード例を含む優れた記事

フレームワークの比較

完璧なアシスタント



All Articles