もくもくろぐ

技術力

SNSを作っています。

SNSをつくっています。

これはなに

作業メモ兼報告です。iPhoneアプリを作ろうとしています。SNSアプリになればいいなあと思っています。

SNS とは

何を作っているかはもちろん全部出来てから話したいので詳しくは言いません。

やったこと

  • iPhoneアプリを作る(途中)
  • nginxを使ってサーバを立てる
  • Revel Go でAPIを作る(導入まで)

だいたい一週間前から、仕事終わって家帰ってきてからこつこつとやりました。
まぁサーバ立てとAPIはこの土日でやったけど…

iPhoneアプリを作る

もちろんSwiftです。
RootViewControllerにカスタムのUITableViewが乗っていて、セルをタップするとモーダルで何かができるPresentingViewControllerがニュッっとでてきます。ニュッとでる遷移もカスタムでやっています。
具体的には、UIPresentController と UViewControllerAnimationTransitioning をアレコレしてます。

参考:
[iOS 8] UIPresentationController でカスタムのモーダル表示を実装する | Developers.IO

できるだけ楽をしたいのでライブラリに頼りたい。
HTTPリクエストを送るところでは、Netを使っています。便利。
Modelクラスでは、こいつにリクエストを送るためのpathやらparametersやらを処理してあげて投げるだけで済みます。Closureも渡せるので大変分かりやすいですね。

参考:
nghialv/Net · GitHub

サーバを立てる

  • お名前.com でドメインを取得して
  • さくらのVPS を契約して(メモリ2GのHDDプラン)
  • nginx でリバースプロキシの設定をする

王道、といった感じですね。
リバースプロキシは、revel(後述)をサブドメインで運用したかったからです。
それと、nginxなのは、同僚の間で流行っている、というか最近はapacheよりもnginxで運用される例が多い(ソースは不明)からです。。

nginxを使った感想

CentOSでちゃんとデーモンで動くし(当たり前)、ファイル構成とかはApacheとそう大して変わらないと感じました。 むしろconfファイルはスクリプトみたいに書けてとてもよかった

参考:
nginxでサブドメインの指定 « kaihatsu

いろいろなところ参考にしたけどエラーなど出てしまったが、最終的にこれだけでよかった。

APIを作る

SNSなのでサーバと通信は避けられないというか、逆に今まで自前サーバを必要としない or サーバを誰かがやってくれる アプリしか作ってこなかったことが奇跡的だったと思います。

いろいろな言語とフレームワークがあるわけですが、選択基準としては

  • 貧弱でない
  • ドキュメントが揃っている
  • 書きやすい

これくらい満たしていれば十分かなと。 どうせどっかで詰まるし。

候補としては、

あたりが挙がりました。

結果的に Revel にしました。

  • sbtの導入で詰まった
  • Playをちょっとやったことがあった
  • golangSwift に文法が似ている(と思っている)

というのが理由です。 新しめでアツいフレームワークですが、公式ドキュメントがかなり充実していてよかったです。

日本語も導入あたりの記事がそこそこあってわかりやすかったです。

参考:

golangのWebフレームワーク、revelの機能紹介 — そこはかとなく書くよん。

Go言語製のWeb Application Framework - Revel - を触る - Qiita

Go - Revelの主な処理の流れ - Qiita

GoのウェブフレームワークRevelを試してみる - Qiita

とりあえず、 /status を叩くとサーバのステータス(200)が返ってくるAPIを実装できました。

今後

まだやることはたくさんあります。。

  • 残りのAPIを実装する
  • DBを使う
  • デプロイの自動化(したい)
  • TestFlightする

iOS側はいつもやっていることなのでヌルゲーですが、サーバ側の知識がイマイチなのでがんばりたい

iOS8なのでTestFlightは絶対やりたい

こんなところですね。なんだかリンク紹介になってますが、まあおもしろいのは出来てからということで。