SNSを作っています。
SNSをつくっています。
これはなに
作業メモ兼報告です。iPhoneアプリを作ろうとしています。SNSアプリになればいいなあと思っています。
SNS とは
何を作っているかはもちろん全部出来てから話したいので詳しくは言いません。
やったこと
だいたい一週間前から、仕事終わって家帰ってきてからこつこつとやりました。
まぁサーバ立てとAPIはこの土日でやったけど…
iPhoneアプリを作る
もちろんSwiftです。
RootViewControllerにカスタムのUITableViewが乗っていて、セルをタップするとモーダルで何かができるPresentingViewControllerがニュッっとでてきます。ニュッとでる遷移もカスタムでやっています。
具体的には、UIPresentController と UViewControllerAnimationTransitioning をアレコレしてます。
参考:
[iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | Developers.IO
できるだけ楽をしたいのでライブラリに頼りたい。
HTTPリクエストを送るところでは、Netを使っています。便利。
Modelクラスでは、こいつにリクエストを送るためのpathやらparametersやらを処理してあげて投げるだけで済みます。Closureも渡せるので大変分かりやすいですね。
サーバを立てる
王道、といった感じですね。
リバースプロキシは、revel(後述)をサブドメインで運用したかったからです。
それと、nginxなのは、同僚の間で流行っている、というか最近はapacheよりもnginxで運用される例が多い(ソースは不明)からです。。
nginxを使った感想
CentOSでちゃんとデーモンで動くし(当たり前)、ファイル構成とかはApacheとそう大して変わらないと感じました。 むしろconfファイルはスクリプトみたいに書けてとてもよかった
参考:
nginxでサブドメインの指定 « kaihatsu
いろいろなところ参考にしたけどエラーなど出てしまったが、最終的にこれだけでよかった。
APIを作る
SNSなのでサーバと通信は避けられないというか、逆に今まで自前サーバを必要としない or サーバを誰かがやってくれる アプリしか作ってこなかったことが奇跡的だったと思います。
いろいろな言語とフレームワークがあるわけですが、選択基準としては
- 貧弱でない
- ドキュメントが揃っている
- 書きやすい
これくらい満たしていれば十分かなと。 どうせどっかで詰まるし。
候補としては、
あたりが挙がりました。
結果的に Revel にしました。
というのが理由です。 新しめでアツいフレームワークですが、公式ドキュメントがかなり充実していてよかったです。
日本語も導入あたりの記事がそこそこあってわかりやすかったです。
参考:
golangのWebフレームワーク、revelの機能紹介 — そこはかとなく書くよん。
Go言語製のWeb Application Framework - Revel - を触る - Qiita
GoのウェブフレームワークRevelを試してみる - Qiita
とりあえず、 /status を叩くとサーバのステータス(200)が返ってくるAPIを実装できました。
今後
まだやることはたくさんあります。。
- 残りのAPIを実装する
- DBを使う
- デプロイの自動化(したい)
- TestFlightする
iOS側はいつもやっていることなのでヌルゲーですが、サーバ側の知識がイマイチなのでがんばりたい
iOS8なのでTestFlightは絶対やりたい
こんなところですね。なんだかリンク紹介になってますが、まあおもしろいのは出来てからということで。