Swift-洗練されたサーバーサイド言語

Swift-洗練されたサーバーサイド言語

AppleはもともとObjective-Cの後継としてSwiftを知っていたので、ネットワークがiOS、macOS、watchOS、tvOSアプリケーションをコーディングする方法を変更しました。

Swiftがオープンソースの段階に変わった時点で、Swiftは、モバイルおよびクライアント側のアプリケーションを超えて、言語に新しい考えられる結果をもたらしました。 Swiftはサーバーサイド言語にもなりました。この教育演習では、サーバー側のSwiftとは何か、およびバックエンドにSwiftが必要な理由を理解します。

サーバー側のSwiftアクティビティは、Vapor by Qutheory、IBMのKitura、Perfectの3つの著名なプロジェクトによって推進されており、Swift開発者に本格的なバックエンド管理を行う機会を与えることを目的としています。これにより、基本的に、そのようなエンジニアがフルスタック開発者に変わり、ノードまたはPHPへの依存の要件が無効になるか、GoogleのFirebaseなどのBaaSステージに制御が提供されます。

この記事のターゲット

この記事では、サーバー側のSwiftについて説明します。まず、サーバー側のSwiftがどのように機能するかを明確にし、その後、Kitura、Vapor、およびPerfectシステムから始めるためのベストプラクティスを示します。

サーバーサイドスウィフトの紹介

Swiftは2014年にAppleによって最初に発表され、急速に開発が進んでいるプログラミング言語の1つになりました。 Swiftは、Pythonなど、膨大な数の最高の現代言語を利用しており、優雅さと使いやすさを実現しています。これにより、エンジニアはObjective-Cの特殊な束縛から解放され、ますます流動的で本能的な作業が可能になります。

2015年12月、Appleは別の素晴らしい宣言を行い、サポートするライブラリ、デバッガー、パッケージマネージャーとともにSwift言語をApache 2.0ライセンスに基づくオープンソースプロジェクトとし、一般の人々がプルリクエストを行って貢献できるプラットフォームを開きました。 Objective-Cから遠く離れた動きは、App Storeに貢献している多くのObjective-C開発者を誘惑しただけでなく、すべてのスキルと基盤の開発者がSwiftを使用してAppleエコシステムに簡単に参加できるようにしました。

いずれにせよ、Appleの進歩したデバイスは、開発者がApp Store向けに外向きに説得力のある魅力的なアプリを開発することを確かに容易にしましたが、プロジェクトが複雑な情報駆動型アプリケーションを開発するために専門のバックエンド開発者を必要としたことは、1つの顕著なボトルネックでした。そのため、iOSおよびmacOSの開発者は、Python、PHP、またはNodeの開発者の助けを借りて、バックエンドデータベースを作成するか、自分で機能を取得する必要があります。

サービスとしてのバックエンド(BaaS)は、iOS開発者のヒーローとしての役割を果たしてきましたが、コードなしのバックエンドソリューション、たとえば、GoogleのFirebaseやApple独自の特別なCloudKitは、バックエンドの複雑さを軽減します。多くのグループやベンチャーがさらに多くを要求しています。これはサーバー側のSwiftが登場する場所であり、オープンソースで途方もなく構成可能な完全に本格的なマルチスレッドバックエンドサーバーを作成できます。

サーバー側のSwiftを使用すると、AWS、RackSpace、または独自の物理サーバーのいずれを使用するかに関係なく、バックエンドサーバーの使用方法を選択できます。同様に、サーバーの負荷を分散する方法(たとえば、NGINXなどの著名なサーバーソリューションを使用)と、データベース(たとえば、MongoDBなどのNoSQL配置、またはたとえば従来のデータベース)で情報を継続する方法を選択できます。 、Postgres、MySQL、またはOracle)。つまり、1つのパーツの配置に縛られることはないだけでなく、アプリケーションのコードベース全体に影響を与えることなく切り替えることができます。

実際のところ、Vapor by Qutheory、IBMのKitura、Perfectなどのオープンソースのサーバー側Swiftの配置を決定することで、バックエンドのみを設計できる膨大な数のモジュールを活用できます。あなたがそれを必要とする方法で、Swiftであなたの現在のグループの能力の範囲をそのように利用すること。

サーバーサイドのSwiftは絶対に説得力があるように聞こえますが、どの構造があなたにとって理想的ですか?次に、キツラをはじめ、一人一人をこのように調査します。

キツラから

Kituraを皮切りに、2016年2月に最初に解雇され、その後すぐにAppleのWWDCで紛れもない品質を獲得した段階があり、SwiftでサーバーサイドWebをサポートするIBMの侵入について話し、その後Appleの手からオープンソース。

原則として、キツラは設定より規約を中心にしています。構築したい明示的なフレームワークとライブラリを選択する前に、スタブを使用して基礎となるプロジェクトを構築します。 Kituraの認証プロセスは、独自のKitura-Credentialsミドルウェアフレームワークによってサポートされており、JSON Web Token(JWT)を処理するOpenIDを利用して、従来のユーザー名/パスワードからオンラインネットワーキングログインおよび統合検証まで、さまざまな検証システムを確認できます。 。

KituraのデータベースORM配置は、SQLの管理の複雑さを混乱させるために、Kueryによって制御され、MySQL、SQLite、PostgreSQLなどの基本的な合理的なデータベースをローカルでサポートし、さらに、NoSQLデータベースを含む他のデータベース配置を他のさまざまなプラグインを介してサポートします。

Kituraはさらに、StencilやMarkdownなどのよく知られたプラグインを利用して、HTMLテンプレートなどの他の貴重なプラグインを提供します。 IBMを起源とするサーバー側システムは、IBM Watson APIとの接続によってさらに利益を上げ、さらに、Bluemixクラウドプラットフォームに直接調整するためのmacOSサポートを提供します。これにより、Linux / UnixおよびmacOSサーバーを横断する他の従来の展開の選択肢とともに、利用可能な追加の選択肢が提供されます。

プラットフォームは、KueryからさまざまなIBM APIライブラリーに組み込む機能まで、並外れた機能セットを絶対に提供します。 Vaporが持っているネットワークの影響力はありません。 Kituraを受け取るには、Kueryの動作方法から認証メカニズムまで、物事を成し遂げるための独自の非正規の方法を認識して把握する必要があります。いずれにせよ、それが努力に注意を払っている広大な組織によって後援されていることを考えると、いくつかの将来の封印の確約が働いています。

Kituraのインストールと実行

開始する最も簡単な方法は、macOSとLinuxの両方でサポートされているKituraの方向線インターフェイス(CLI)を利用することです。よく知られているパッケージ管理ユーティリティHomebrewを利用して、次のように入力してKituraとKituraCLIをインストールします。

$ brew tap ibm-swift / kitura

$ brew installkitura

ベンチャーとして使用する未記入のオーガナイザー内で、付随するものを実行して、事業を再開します。

$ kitura init

スケルトンアプリケーションの作成が完了すると、HelloKitura.xcodeprojectという別のプロジェクトが表示されます。 Kituraのドキュメントを参照することで、プロジェクトの生成について詳しく知ることができます。最近作成したプロジェクトをXcodeで開き、重要なアプリケーションクラスであるApplication.swiftを変更して、サーバーのルートhttp:// localhost:8080 / URLへのすべての呼び出しを処理できます。

// "/"へのHTTPGETリクエストを処理します

router.get( "/"){リクエスト、レスポンス、ネクストイン

response.send( "Hello、World!")

次()

}

上記のコードピースは、模範的なHello、World!を復元することで反応します。 。最終的にプロジェクトを実行する前に、XcodeスキームをHelloKitura(アクティブなプロジェクト)を指すように変更し、 Command-Rを押して作業を開始します。サーバーの実行中に、選択したブラウザーでhttp:// localhost:8080にアクセスすると、ブラウザーにhelloworldが表示されます。

蒸気で始まる

Kituraの数か月後の2016年9月にリリースされた、Vapor by Qutheoryは、コミュニティのサイズとモジュールの数に関して一般的に最も有名であると考えられています。これは、AppleのSwift-nioフレームワークの上に構築されており、真の実行力を備えています。 Kituraや、Swiftで単純に作成されるのではなく、Node.jsやその他の中間パーサーで作成されるさまざまなステージとはまったく異なり、Vaporはそれらの依存関係から切り離されて、Swiftパーサーを提供し、明確で一貫性のあるAPIを提供します。

Vaporは、MySQLやPostgreSQLなどのSQLベンダー、およびKituraとしてのRedisやMongoDBなどのNoSQLベンダーにデータベースの徹底的な支援を提供します。 Kituraには独自のKueryORMソリューションがありますが、VaporはFluent ORMを利用して、先ほど参照したデータベースをサポートしているため、ORMを他のサードパーティデータベースプロバイダーに拡張するのはかなり簡単です。 Vaporは、Appleのプッシュ通知サービスをネイティブにサポートし、電子メール通知をプッシュするためのSMTPもサポートすることで、代替フレームワークから自身を分離します。

Kituraは独自の認証フレームワークを実現していますが、VaporにはStormpathのTurnstile認証ライブラリがネイティブに組み込まれています。 Kituraと同様に、プラットフォームは同様にMustacheとMarkdownの誘惑をサポートし、さらに独自のSwiftネイティブの表現型テンプレート言語に加えて、Vaporは他のサーバー側Swiftフレームワークと同様に独自のCLIモーターを備え、アプリケーションコマンドを拡張する機能を備えています。 -カスタムフラグを使用した行引数。

インストールと実行

Vaporから始めるには、すべてのライブラリ依存関係とCLIツールボックスで構成されるVaporツールキットをインストールすることから始めます。ターミナルに次のように入力して、Homebrewでインストールします。

$ brew installvapor / tap / vapor

インストールが完了した時点で、vapor —helpと入力して、Vaporが正常にインストールされたことを確認できます。プロジェクトを作成するには、次のように入力し、独自のプロジェクト名に置き換えます。

$蒸気新しい

Vaporエンジンは、次のようなフォルダー構造を構築します。

├──公開

├──出典

│├──アプリ

││├──コントローラー

││├──モデル

││├──boot.swift

││├──configure.swift

││└──routes.swift

│└──実行

│└──main.swift

├──テスト

│└──AppTests

└──Package.swift

Xcodeプロジェクトを実際に作成するには、同様に、プロジェクトフォルダ内から次のコマンドを明示的に入力する必要があります。

$蒸気xcode

最後に、プロジェクトをビルドして実行するには、Xcodeから[実行]スキームとMy Macの開発ターゲットデバイスを選択し、その後、他のXcodeプロジェクトの場合と同じように[実行]ボタンを押します。 Xcodeプロジェクトでエラーが発生しない場合は、ターミナルに次の確認メッセージが表示されます。

http:// localhost:8080で起動するサーバー

先に進み、任意のブラウザにそのURLを入力すると、アプリケーションが実行されていることがわかります。

パーフェクトから

最後に、VaporやKituraのような機能豊富なサーバーサイドプラットフォームであるPerfectlySoftによるPerfectを見ていきます。 Perfectには、MustacheやMarkdownでのテンプレート作成から、Webソケットでのネットワーキング、さらにApple Push NotificationとSMTPまで、以前のベンダーで発見したのと同様の標準的なベルとホイッスルが組み込まれています。

他のサーバー側プラットフォームと同様に、Perfectには独自のORM実装であるStORMプラットフォーム(Perfect StORM)があり、MySQL、PostgreSQL、その他の著名なリレーショナルデータベースに加えて、MongoDB、Redis、その他のNoSQLソリューションをネイティブサポートします。 Perfectからの顕著な除外の1つはCLIですが、フレームワークはネイティブmacOSアプリケーションでこれを補います。

Vaporと同様に、Perfectはさらに、認証メカニズムを強化するためにTurnstileを焼き付け、StORMとより密接に対話するように拡張しました。この配置が他の配置よりも優れているもう1つの条件は、独自のcURLラッパーや、ファイルやフォルダーを操作するためのツールなど、サポートするネイティブユーティリティライブラリのかなりの数にあります。 Perfectの開発者ベースは2番目に大きく、Vaporの開発者ベースとほぼ同じです。つまり、このプラットフォームを支援する強力なコミュニティがあり、豊富な教育リソースがあれば、それを選ぶチャンスがないことを確信できます。

インストールと実行

Perfectの起動と実行は、非常に簡単です。最初に、次のように入力して、PerfectlySoftリポジトリのクローンを作成します。

$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git

複製されたフォルダー内から、プロジェクトをビルドします。

$迅速なビルド

最後に、プロジェクトを実行します。これにより、アドレス0.0.0.0:8181でローカルサーバーが実行されます。

.build / debug / PerfectTemplate

次のように、最初に新しいプロジェクトを作成して、Xcodeでプロジェクトを実行することもできます。

$ swift package generate-xcodeproj

Xcodeの中では、あなたの実行可能なターゲットは、プロジェクトをビルドして実行する前に、どこでもMy Macで指摘されていることを確認。

結論

Swiftがオープンソースネットワークに登場したことで、クライアントアプリケーションを超えたSwiftソリューションの推進が促進され、バックエンドサーバーフレームワークが次のような郊外になりました。 Vapor by Qutheory、IBMのKitura、Perfectの3つの著名なプロジェクトに後押しされています。サーバーサイドSwiftは、iOS(およびmacOS)開発者がフルスタック開発者になることを可能にしました。これにより、Node.js、PHP、または.NETバックエンド開発者への依存を打ち消すことができます。さらに、サーバー側のSwiftを使用すると、グループはFirebaseやCloudKitなどのサーバーとしてのモバイルバックエンドソリューションに依存することなく、バックエンドを制御できます。

サーバーサイドのSwiftは万人向けではありません。バックエンドに必要な制御の量と、自分でロールすることが理にかなっているかどうかを判断する必要があります。さらに、どのサーバー側のSwiftソリューションが理想的であるかを教えようとはしませんでした。開発者は間違いなく決定のために台無しにされており、3人のそれぞれがユニークで成熟したテイクを与えており、実験する価値があります。サンプルコードのすべてを試して、言語構造を評価し、特定のコミュニティに接続して、どのソリューションが最適かを確認することをお勧めします。