寄付窓口はこちら

Swiftでソーシャルネットワークをつくろう | try! Swift Tokyo 2019 2-3

「本当にプロダクトに使用できる状態なの?」 サーバーサイドSwiftは、ここ数年で大きな発展を遂げました。Ian PartridgeとDavid Okunが、フルスタックSwiftが、いかにあなたの次のプロジェクトで実用的かお見せします。合わせて、クラウド環境で稼働させる際に活用できるオープン標準についてもご紹介します。 Swiftについて話すことに時間を使うより、Swiftを書くことにもっと時間を使いましょう!

f:id:niwatako:20190322103741j:plain

Ianです。Kituraフレームワークに取り組んでいます。Davidとプレゼンします。

DavidがどうやってSwift上でSNSを使うかお見せします

そのまえに私からServerSideSwiftの事例をご紹介します

それからSwiftのエコシステムに関するエキサイティングな発表

バックエンドテクノロジー

三者サービスのみを利用することもできる。どのサービスを使うかはアプリが決める。モバイルバックエンドやmBaaSを選ぶこともできる。バックエンドはサービスプロバイダに任せなくてはいけない。

自分で構築する、PHPRubyを使うこともできるが、新しいスキルが必要

f:id:niwatako:20190322104045j:plain

ServerSideSwiftは新しい選択肢になりうる

f:id:niwatako:20190322104050j:plain

自分でできる。

2つ目のユースケースはMicroservices。大規模からDockerで動くようなマイクロサービスに移行している。

Swiftはコアな特性からマイクロサービスに最適。

コンパイル済みでミリ秒単位で起動する。Swiftはメモリ使用量が少ない。パフォーマンスは予測可能。クラウドデプロイの場合メモリ使用量ベースで支払いますからコスト削減に繋がります。そして素晴らしいCライブラリとの互換性。

f:id:niwatako:20190322104213j:plain

Swift5ではPythonなどの動的言語も呼び出せるようになる

Allegroを紹介させてください。データセンターのコストを大幅に削減しました。

f:id:niwatako:20190322104315j:plain

SSSは様々な利点を提供できます。

f:id:niwatako:20190322104326j:plain

f:id:niwatako:20190322104333j:plain

Prometheus統合、Grafanaで視覚化できる、OpenAPIで自動化してドキュメンテーション

f:id:niwatako:20190322104403j:plain

iOSエンジニアはリモートAPIに慣れていると思います。

RESTAPIの文章化のオープン・スタンダード。

Kituraが自動生成したものです

f:id:niwatako:20190322104432j:plain

成功すると200とUserObjectを返す。これを皆さんが書く必要はありません

OpenAPIの強みはこのエコシステムにあります。クライアントSDKのコードジェネレータもある

これだけでは十分ではありません。技術だけでは十分ではないのです。

Appleのトムドロン氏がワーキンググループの話をしてくださいました。

Swift on Linuxのリリース速度は早まってきています。

f:id:niwatako:20190322104557j:plain

さて、新たなランゲージサーバープロトコルのリリースということですが、VSCodeなどの一級市民になっていく。

プラットフォームサポートも大きく進化。

f:id:niwatako:20190322104637j:plain

f:id:niwatako:20190322104641j:plain

reywenderlichと提携して本にしました。完全なKituraアプリケーションの築き方が書かれています。

ではデイビッドです

f:id:niwatako:20190322104727j:plain

Emojijurnal、Swiftで書かれたサンプルプロジェクト。フィーリングにフォーカスしたもの

f:id:niwatako:20190322104817j:plain

Xcodeなしでビルドも実行もできます。

f:id:niwatako:20190322104854j:plain

作っていきます

f:id:niwatako:20190322104907j:plain

LSPのおかげでVSCodeで開発出来ます。

OpenAPIを確認できる

f:id:niwatako:20190322104954j:plain

新しいGetエンドポイントを追加しましょう

f:id:niwatako:20190322105041j:plain

サーバーをリビルドします。

チェックをすると動いているようなのでOpenAPI上でどうなっているか見ます。

きちんと機能しています

f:id:niwatako:20190322105106j:plain

f:id:niwatako:20190322105131j:plain

ミドルウェアを見てみます。

私がやらなくてはならないのは正しいRouteを関連付けて立ち上げる。

ハードコードされたRouteをModifyしてUIに戻ってテスト

パラメータをRouteに追加するだけであとはKituraがやってくれました

f:id:niwatako:20190322105244j:plain

ここで新しいエントリーを追加しましょう

f:id:niwatako:20190322105256j:plain

iOSに反映されます。WebSocketを使っています。

f:id:niwatako:20190322105311j:plain

両側でメッセージの送受信ができます。

Webクライアントがメッセージングに対応するということでも非常にうまく機能する。

今度はiOSから追加、Webに反映されます。

f:id:niwatako:20190322105351j:plain

フルスタックのSNSがSwiftであるので、ぜひここから学んでください。

よく聞かれる質問があります本当に本番で使えるの?

f:id:niwatako:20190322105437j:plain

3つ実例を紹介します

f:id:niwatako:20190322105452j:plain

f:id:niwatako:20190322105517j:plain

MacOS用ノートアプリ。タイムラインに持っていく、Organizeする、iCloudで同期

f:id:niwatako:20190322105548j:plain

フリーミアムで高機能の部分だけ有料、ライセンスサーバーがKitura。

f:id:niwatako:20190322105611j:plain

もう一つ、これはドイツのINGという銀行でSSSを使ってIoTバンキングしている。

f:id:niwatako:20190322105635j:plain

IoTデバイスでスマートペイメントをセキュアに。

こちらがRESTAPIのプラットフォーム、CodableRoutingFeatureを使っています、プラットフォームのコアビジネスロジックが記述されている。

MySQL DBとやり取りしている。RestAPIとやり取りしてJSON でやり取りしている。

フロントエンドにNode.jsで実装したものがある。

iOS, Androidでステータスをチェックしたりできる。

ペイメントプロバイダとの通信でSwiftがデプロイされている

f:id:niwatako:20190322105838j:plain

メトリクスライブモニタリングの様子

f:id:niwatako:20190322105844j:plain

f:id:niwatako:20190322105905j:plain

このURLで25%OffのURLあります(参加者限定だと思うのでスライド掲載しません)

slack.kitura.io #tryandwin で無料プレゼントも。

あしたワークショップしています。

70人以上の申し込みがあったようで嬉しいです。

IBMのブースもあるので立ち寄ってください。

tryswiftconf