エンジニアナビ主催セミナーでnanapiのシステムについて話してきました
4/10に開催されたエンジニアナビ主催のイベントでnanapiのシステムについて話してきました。今回は珍しく、nanapiのワンマンライブ的な感じです。時間も40分ほどあったので何について話そうかなーといろいろと考えてました。
自分がインフラ出身なのでどうしてもその辺り中心にはなってしまいましたが、極力nanapiでの開発手法やフローなどについても話すように心がけました。イベント後のアンケートや質問などみても満足度が高かったようで良かったです。
質疑応答で答えられなかった内容
当日は付箋で質問をもらう形式だったのでたくさんの質問をいただくことができました。時間の関係で全部お答えすることができなかったので、もらった質疑応答に関してここでお答えします。近い質問は勝手にマージしちゃっています。
事業について
Q: 一人でやっているときの技術的な問題はどんなもので、どう解決したか?
A: 小さな技術的な問題はたくさんありましたが、エンジニアの知人などに質問して解決できるレベルの内容でした。そういった個人的なネットワークはあったほうがよいとおもいます。
Q: 海外向けのサービスの概要を知りたいです
A: 日本初のコンテンツを海外に届けるといったコンセプトでやっています。まだ国内では告知していませんが、英語圏でサービスが定着したらちゃんと国内でも告知したいと思っています。
Q: 収益のメインは何でしょうか?
A: 現時点では広告収益が主な収益源となっています。
Q: 一人CTOの時はどんなかんじでしたか?
A: すごい頑張っていました。電車のなかでもコードかいてて、エンターキーがうるさいってよこのサラリーマンに怒られたりしてました。また当時は受託開発もやっていたので、エンジニアとしてとにかくやることが多かったなぁという記憶です。
Q: エンジニアという道もあったがなぜCTOという道を選んだのか
A: 自己分析を行った結果、技術だけでなく経営やマネージメントなども含めた全体的なバランス感というのが自分の武器だと思ったからです。
チーム・組織
Q: コードレビューはどのようにして行っているか?
A: 基本的に、そのシステムのアーキテクチャを理解していないとコードレビューはできないので各チーム内でコードレビューは完結するようにしています。自分以外の人がレビューする、ということを必須としています。
Q: 非エンジニアむけの勉強会で嫌がる人はいないか?
A: いません。少なくとも現時点ではみんな前向きに受講してくれています。
Q: 非エンジニアむけの勉強会の内容
A: HTML/CSS/PHP/MySQLに加えて、どうやってインターネットはつながるかというネットワークに関する知識
Q: 「エンジニアの文化」を社内に広めるときに障害と感じたことは?
A: 今のところ特にありません。
Q: 人数が増えた時に開発/運営の自動化を考えたタイミング
A: いろいろな仕組みができてきたのはエンジニアが5名くらいになってからです。私一人で考えたというより、そういうことを好きで得意なエンジニアが入ってきてくれたというのが大きいです。
Q: 爆速かつ継続的な開発の仕組み化を図る秘訣
A: いままでの仕組みなどにとらわれずに、新しくて良さそうなものはどんどん取り入れることでしょうか。あと社内の面倒な手続きは極力排除しています。
Q: 小さな会社のエンジニア採用について
A: たしかに大変です。そのあたりはCTOの私が深くコミットしています。いかにして会社のことをわかってもらうかがエンジニア採用のキモなので、ブログや登壇するときなどもそのあたりを意識しています。
Q: エンジニアの自由とマネタイズでぶつかるが、それを解消する方法は?
A: All or Nothingではないので、本来であればそこはぶつからないはずだと思います。そういった問題が起きないよう、nanapiではエンジニアを事業に対してアサインしています。
技術
Q: 受け入れテストはどうしているか?
A: 開発環境で行うことが多いです。ここはもっと仕組み化していきたいところ。
Q: 中長期のタスク管理はどうしているか?
中長期になるとタスクというよりプロジェクトになるべきなので、管理方法が変わります。カンバンで管理されるべきタスクは、原則最長で1日で終わるものとしています。
Q: サーバ監視に利用しているツール
A: nagios, cacti, newrelic, sensuあたりです。環境によって最適なものを利用しています。
Q: サーバ台数はどれくらいか?
A: nanapiでは40台前後です。
Q: ローンチ済みのサービスへの緊急タスクなどはどう管理しているか?
A: スクラムを組む際に、バッファ用の時間を事前に確保しています。
Q: Chefでコミュニティのコードはどこまで利用しているか?
A: あるものはできるだけ活用しています。最初は全部書いていたので、過去の遺産が残っている部分もありますが。
Q: githubのissuesのタグは?
A: priority設定用のタグと、Problemやfeatureなどといった実装内容を示すタグを使っています。進捗は仕組みでは管理していません。
Q: デザイナー・非エンジニアはどの程度gitを使えるか?
A: branchきって開発して、pull request送ってくらいまでは全員できます。できない人には合わせずに、できる人の水準まで上がってもらっています。
Q: テストの自動化はどの程度やっているか?
A: phpunitをつかって、ユニットテストを書いています。
Q: インフラはAWS?オンプレミス?
A: nanapiはオンプレミスで、クララオンラインさんにおいています。それ以外のサービスは、AWSを使っています。
Q: クックブックのテストはどうやってるか?
A: まだテストはちゃんとかけていないです。serverspecでちゃんと書くべきだと思っています。
特に反響があった部分
スライドの中でも説明しましたが、特に反響があった部分が「エンジニアが成長し続けることができる制度」の部分でした。参加者の殆どがエンジニアだったということもあり、やはり興味のある内容だったのではないかと思います。
会社のブログの方にも書きましたが、年々テクノロジーの進化の速度は早くなっていっています。その進化に対してエンジニアがついていくことが大事で、それを会社として支援するといったような内容です。具体的な実施内容は以下からどうぞ。
http://nanapi.co.jp/blog/2014/04/09/the-system-where-an-engineer-can-grow/
当日の資料
別のエントリでもすでにアップしてしまっていますが、こちらになります。若干の修正を加えていますが、当日発表したものとほぼ同じ内容となっています。
こちらもどうぞ
公式のレポートもこちらにあがっていますのでどうぞ!