WirthCyberAgentのソフトウェアエンジニアです。これまでEコマース、SNS、動画ストリーミングなど多くのiOSアプリを開発してきました。Swiftがクロスプラットフォームであるように、Androidアプリやバックエンドサーバのコードも書いてます。コードを書いてない時は、ハイキングやボルダリングをしたり、東京近郊のおいしいタコライスを探し回ってます!https://twitter.com/cjwirth多くのMacやiOSアプリはバックエンドのサーバと通信します。今やSwiftはオープンソース化され、アプリ開発しているときと同じ言語でバックエンドの実装を行えるようになりました。サーバサイドSwiftを初める方法をお話しします。2016年3月5日おはようございます多くの方々は私がスケジュールに載っていなかったと思うかもしれません。カンファレンスのオーガナイザをしています。ミニマルなサーバーサイドSwiftアプリを作りましょうクライアントサイドでリクエストを送る時のコードはこのようなものですねPokedexからポケモンを取ってくると。サーバーサイドをする時、他ではどうしているのかを参考にできると思います。RubyではSinatraが人気。NodeでもRubyやJSを書きたい訳ではありませんね?誰かSwift書きたくないといつか言っていましたが(笑い)Swiftの利点は型があることです。クライアントサイドと変わりません。基本値なものだけ書いていますが、基本的型があれば何をサポートしているか分かる。/Out、サーバーは関数のようなものです。ソケットをリスニングする、コネクションを開く、スレッドを起動する、Lowレベルの作業したくないことがいっぱい。そこでフレームワークが使えますアプリの実装からこういった事柄を切り離すことが出来ます。一つの関数になりました。実行するとレスポンスが帰ってきます。Routingの面倒を見る必要があります。一つのサーバータイプでは対処できません。メンテナンス可能でシンタックスを使えるようにしたい。ルーターを作っていきます。ハンドルをしていきます。ルーティングを登録して、ハンドラーが集まってきたらハンドルファンクションも作れます。半トラータイプというのはThrowもできます。リクエスト失敗に500、のエラーを返すことも可能。リクエストを投げて存在しなければエラーを投げる。エラーはもう一つのレスポンスタイプになる。ハンドルファンクションはルーターと同じですね?サーバーにファンクショナリティを追加していきたいと思います。サーバーは何をしているかというとPokedexを作ります。捕まえたポケモンが見れる。すべてのポケモンを返していくようなものにしましょうシンプルですGetパスからポケモンを取ってきます。Jsonライブラリを使っているので簡単にやってしまいますポケモンが下で定義されていませんでしたサーバー側はポケモンを返す。リクエストボディをパースします。無ければBadRequest。ポケモンをリクエストから取る。パースして取れなければBadRequest、またパース自体に失敗してもBadRequestポケモンを追加して応答します最低限以上になります。試してみましょうFetchしてみます初めの三匹が入っています。エキサイティングですねでもこれでもまだ静的データをハンドリングしているだけです。実際にサーバーで何か実行したい。Postでなにか捕まえたモノを送りたいPostのレスポンスには何も戻ってきません。ステータスを出しただけで何も送ってないからです。次に、フェッチすると、入っています!(3匹にさらにピカチューが帰ってきた)いまはローカル環境のサーバーでやっているだけなので、これを本番環境にあげたい、「とりあえずリリースしようぜ!」マーク・ザッカーバーグが、多分動くと思うからリリースしようぜ、と、直接の引用ではないが言っております。Herokuでデプロイしてみましょう。SwfitEnvは必須ではないが便利です。ブランチにPushご自身でやるときはもう少し早いと思います、デバッグモードでやれば機能するプロダクション環境が出来たはずです。先ほどと同じように、でもローカルホストではなくてHerokuでホストされています。おっとコミットしていませんでしたビルド中にルーティングを書き直したいことがあるかもしれません。使えるものがあれば書き直す必要はありませんねライブラリを見てみましたPerfect:最も成熟している、セットアップが簡単、スタートがすぐ。この場で開発者の話を聞けると思います。IBMがKituraを出しています。モジュラー化されています。25日前にうまれた赤ちゃん賞でもあるVapor、私にとって最も直感的。私のコードが好きならこれが向いていると思います。デモが出来たようですDBライブラリは何が提供されているかPostgreSQL、MySQL、SQLiteなど。Vaporはまだ足りないようです。本当に完璧にできていなくてもリリースした方がいいでしょうか。みなさんのニーズ次第だと思います。作って壊したければどんどん出せば良いし。2日前のセッションではまだGCDはLinuxに向けて存在しないということですが、どのようにハンドリングしていますかリポジトリにはマージされたようだがこの段階ではまだ完成していなかった。やっているのか気になってみてみた。Perfectは自分のスレッドを管理している、Vaporも。コンカレンシーはまだ未完成、でもマージされたらいいと思います。この段階ではまだ至っていないという感じだと思います。”QAに行くなら日本語もできるのでよろしくお願いします。APIをポケモンに例えるの分かりやすいね。RailsのSwiftonなんてのもあるようです。Swiftのサービス一覧。スライドに紹介されていた。#tryswiftconf」をトゥギャりました。はてなのソフトウェアエンジニアです。はてなブログPro大学時代に耳が聞こえない生徒が講義に参加できるようにリアルタイムに文字起こしするバイトをしていました。いまはエンジニアとして働きつつ、勉強会やカンファレンスで話される技術分野の知見を文章に残し、検索可能にしたり、地方で活動する方に届けたいと思っています。お役に立ちましたら、支援いただけると幸いです。(24)注目記事はてなブログをはじめよう!niwatakoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。