iOSアプリ開発者に最近の開発スタイルを訊いてまわる「iOSアプリ開発の現場で訊いてみた」待望の5社目に行ってきました。
今回はEightという名刺管理アプリを開発されているSansan株式会社!Android版のEightアプリはGoogle play 2014年のベストアプリに選ばれたこともあり、今回はAndroidアプリ開発についても訊いてきました。
訊いてきたこと
インタビューに応じてくださったのは@hedjirog(主にiOS担当)、@Gazyu(主にAndroid)のお二人です。
今回のインタビュアーはユビレジ編でインタビューに応じてくださった@kishikawakatsumi、フリル編でインタビューに応じてくださった@ninjinkunがインタビュアーとして参加しました。
Q.バージョン管理システムは何を使っているか
- GitHub
ちなみに
- デザイナにも社内のファイル共有でなくGitHubの利用を勧めたところ、リソース管理が楽になった
- コーディング規約も専用のリポジトリを作成して議論するように試し始めている
Q.コードレビューはどのように行っているか
iOS、Androidともにエンジニアはそれぞれ1名のみの開発体制だが、インターンの学生などが部分的にコミットしているので、GitHubのプルリクエストを利用したコードレビューをしている。
iOSではPull Request時にWIPなPull Requestを作成し、TODOや進捗が分かるようにしている。
手順としては
- 最初に何もコミットがない場合は空コミット
- タイトルにWIPと記載して途中であることを明示(まだMergeするほどじゃないという意思表示)
- 内容にGitHub Flavor markdownでTODOリスト作成
- Pull Requestをマージして欲しい場合(つまりレビューしてほしくなると)タイトルからWIPを消す
- TODOリストをチェックして埋める
- レビューした方が問題なければマージする
Q.ブランチはどのように運用している?
基本的にはgit-flow形式で行っていて、SourceTreeのgit-flowブランチ機能から作成している(ブランチ名のプレフィックスなどがあらかじめ決められる)。
工夫としてはGitHub上のメインブランチをmasterからdevelopに切り替えている。
Q.スモールリリースしてる?
だいたい2週間に一回から1ヶ月に1回ぐらいの頻度になった。
細かい施策であれば、Androidアプリだけ、もしくは、iOSアプリだけをリリースしてユーザーの反応を見るということもしている。
インパクトの有る大きな機能であればiOSとリリース日を合わせている。
Q.プロジェクト管理ツールは何を使っているか
プロジェクト/タスク管理にPivotalTrackerを使っていてgitと連携させている。連携してることでfeatureブランチを作るときはgitコマンドでユーザーストーリーとコミットを連携することができる。
Q.アジャイル開発(もしくはその一部のどのような部分)を取り入れているか
- 進行管理
- 詳細の進行管理はiOS/Android個々の開発者がやっている
- プロジェクトオーナー(PO)がいるがリリースは開発者がやっている
- Eightはデザイナ1人
- Flintoでモックを作ってもらう
Q. テスト自動化してる?
iOS
- KIFで統合テストをやっている
- 単体テストも導入し始めた
- 費用対効果の高そうなデータ同期の機構から導入を進めている
- 基本はXCTestで、OCMock、OHHTTPStubs、 Expectaを使っている
- 社内にMac miniを置いてjenkinsを動かしている
Android
- Robotiumを使っている
Q.「開発環境の改善とかコミュニケーション改善で自慢したいところ」とかある?
- 会社全体の情報共有はYammer
- 開発者間はQiita:Teamを使っている
- サーバー側の仕様が書かれていたりするのでサーバ側の開発者に聞きにいくきっかけになる
- ポエムを書く人もいる
- チャットツールはidobataを使っていたがSlackを使うようになった
- 社内制度としてKnow me!(ノーミー)という事業部をまたいで呑みに行くと上限3000円支給される制度があって利用している
- 月あたりの利用にも上限があり早い者勝ちなので利用されている
- スタンディングで仕事をしている人が多いのでそういう文化や取り組みに理解がある
Q.現状の開発に関する不満点やさらに改善したい点などある?
やりたいことはいっぱいある。アプリの信頼性を担保するためにテストの自動化を進めたり、現状だとサーバー側で行なっている名刺の矩形認識や画像の切り取りなどをもっとやりたい。iOS/Androidともに少数でやってるので開発メンバーがさらに増えてほしい。
Q. 採用について
iOS/Androidに限ればまだまだ少数なので、事業全体に必要な点を考えて自ら動ける人を採用したい。
社内風景
(今回も写真は許可を頂いてます)
フリースペース
インタビューしたフリースペース
屋根裏スペース的なものや徳島にあるラボの写真が表示されるディスプレイがありました
隠れ会議室
執務室へ
机
今回も机周りを撮影だー。急いで掃除
蛇足。オレはこう思ったっす
フリーランスエンジニアを経てSansan株式会社に入った@hedjirog。フリーランスというのは収入としてキャッシュが多くなるため、もう一度会社員になるというのは大きな決断が必要だったのではないかと伺ってみると、もともとフリーランスになったきっかけは企業をフラットに見たかったためで、ではなぜ今の会社を選んだかという問いについては「自分に欠けているものがSansanにあったから...」とのことでした!
また、名刺を電子化するEightアプリですが、実はインタビューをするまで「今現在でもうTwitterやFacebookが普及しまくってるので、名刺を渡す機会なんて少ないのに...」と思っていたのですが、その思いを@hedjirogぶつけると「名刺を電子化するのは名刺フリーになるこれからの世界の途中の手段であって、そのためのイノベーションを起こす前段階なんですよ...」とのことでした。
名刺でイノベーションって何?ということが気になる方や、フリーランスで自分に欠けているものがあるかもしれないと感じる方は、ちょうどiOS/Androidエンジニアを大募集中のようなので、応募してみるのもいいかもしれません。