こんにちは、増田です。
これはTECHSCORE Advent Calendar 2017 の 20日目の記事です。
僕はシナジーマーケティングに 2006年に新卒で入社し、Webアプリケーションエンジニアとしてアプリケーションを創り続けてきました。受託開発、研究開発、プロダクト開発、社内スタートアップなど様々なプロジェクトに関わってきて、今はエクメルンというメール配信サービスの開発を担当しています。
エクメルンは 2016年 4月にシナジーマーケティングの社内スタートアップとしてチームが結成され 9月にはローンチ、その後改良を重ねて 2017年の 3月にUIや機能を抜本的に強化したメジャーバージョンアップを行いました。メジャーバージョンアップ後の振返りMTGで、プロダクトオーナーがこう言いました。
- 「利益を生むプロダクトをつくることに加え、利益を生むプロダクトのレシピをつくることも僕たちの使命」
- 「新規事業の立ち上げ、新製品の開発をするなかで得た知見を、会社の資産として残していこう」
そこで、僕たちチームがクラウドサービスを作る過程で学んだナレッジを 2冊の小冊子にまとめ、外部公開しました。
クラウドサービスのつくり方(開発編)
- 対象者
- Webアプリケーションエンジニア
- プロジェクトの開始時にまとまった情報を探している方
- 他社製品のアーキテクチャが気になる方
- 新人研修の教材を探している方
クラウドサービスのつくり方(ビジネス編)
- 対象者
- これからクラウドサービス(SaaS)事業を立ち上げる方
- ウェブマーケティングをやっている方
- 制作会社のディレクターやプロデューサー
どういうものなのか
クラウドサービスを立ち上げるには様々な知識が必要です。アーキテクチャ、セキュリティ、テスト、保守・運用、etc...。
それらのまとまった資料が世の中になかったので、プロダクトオーナーと3人のエンジニアがエクメルンを作る過程で学んだことをまとめました。使っている技術を列挙するだけでなく、なぜそれを選んだのか考え方も伝わるように書いています。
僕が執筆した箇所を一部ご紹介します。
エンジニアとしての心得
“アイデアとは既存の要素の新しい組み合わせ以外の何ものでもない。”
--ジェームス・W・ヤングアプリケーションを作る上で大切なのは、アプリケーションが提供する価値にフォーカスしてものづくりを行うことです。
自分たちが時間やコストをかけて作らなくても、既にいいものがある場合は(コスト的に見合うものならば)積極的に利用しましょう。
そして時間を作り出し自分たちが本当に作りたいものだけに注力し生産性を向上させよう。
また、これから作ろうとしているものがどのようなものなのかある程度道筋を立ててから手を動かし始めるのがよい。
こんな感じで、エクメルンでの経験を越えて、エンジニアとしてのノウハウを書いています。
冊子はWeb上で閲覧することも出来ますし、PDFとしてダウンロードすることも可能です。
なぜつくったのか
きっかけはオーナーの一言でしたが、僕のモチベーションは大きく 2つでした。
- 自分のために
- 自分のスキルセット、考え方を知ってもらい認知してもらいたい
- ノウハウの棚卸し
- 組織のために
- 未来の仲間を助けるため
- こういう開発がやりたい人の目に止まってほしい
どうやって作ったのか
まずはじめにクラウドサービスを作るで必要なプロセスを洗い出し、以下の大カテゴリを設定しました。
- 調査
- 企画
- 設計
- 実装
- テスト
- 販売開始
- プロジェクトクロージング
大カテゴリを細分化して、それぞれ思い入れのある項目を担当にしました。
僕は、APIの設計・開発、Railsのプラクティス、Gitの運用を主に担当しました。
記事執筆
記事の執筆、原稿の管理にはQuipというウェブサービスを使いました。一言でいうなら、リアルタイムで共同編集可能な、WordとExcelのようなものです。Google Docsとは違って、チャット機能がついているので、文章を書きつつ、コミュニケーションを取りながら仕上げていくことが出来ました。
文章にコメントした内容が、タイムラインとして残るので校正作業がとてもはかどりました。
フォルダを作って、ドキュメントの状態管理を行ったのも良かったです。
当初はPowerPointにまとめて、Speaker Deckで公開しよう!ということで進めていたのですが、次第に文字数が増えスライドよりもドキュメントとして公開するほうがよいものになってきたので、簡潔に纏まったビジネス編と開発ノウハウがつまった開発編に分けて公開することになりました。
開発編
開発編の冊子の公開先にはGitBookを使いました。GitBookとは、Node.jsで動くGitでドキュメントを管理し、オンライン上で公開するためのツールです。Markdown形式で記述し、htmlやPDFやepubなどに体裁を整えて公開することが出来ます。先駆者としてフロントエンドデベロッパーがカバーする領域を広く俯瞰するのに便利な情報源「Front-End Developer Handbook 2017」がGitBook上で公開されていて、僕たちもこのように公開したいなーと思いGitBookを選びました。
今回の場合はQuip上で執筆を行いましたが、QuipからMarkdown形式でエクスポートして、GitBookにインポートすることでスムーズに原稿を移行できました。デフォルトのGitbookでは、日本語文章の表示が汚かったので以下の設定行し、見出しとフォントを整えました。
1 2 3 4 |
{ "plugins" : [ "anchor-navigation-ex", "japanese-support" ], "pdf": {"fontFamily": "IPAGothic"} } |
後述しますが、GitBookには簡単なアクセス解析も備わっています。
書いてどうだったのか
僕自身、エンジニアとして培ったノウハウの棚卸しとなる、とてもいい機会となりました。
内容に関しては、チームの開発者 3人が各々、思い入れのある部分を担当し執筆したので、プロジェクト開始から運用まで、一通り網羅した冊子が出来上がりました。自分の血となり肉となったナレッジを、自分が知らなかった頃をイメージして執筆する作業はとても大変で、一人では達成できなかったと思います。
各々のこだわりポイントは次のとおりです。
- 秋月: %w(アーキテクチャ セキュリティ インフラ)
- 西村: %w(開発環境 フロントエンド)
- 増田: %w(APIの設計 Railsのプラクティス)
どんな反応があったのか
勉強会の反応
定期的に参加している社外の勉強会で冊子を紹介したところ、うちの会社ではこのようにやっているよ!という意見や、新人研修に使えそうだ!という当初想定していなかった使い方の提案をもらえました。実際に新人研修で利用されて、技術力の底上げに貢献できたら嬉しいですね。
冊子の閲覧数
現時点のアクセス数はこちらです。(公開しているGitBookのanalytics)
緑線がPageView数、青色がユニークユーザ数です。
2017年5月に公開しました。
公開当初は開発者がそれぞれソーシャルで宣伝をしたのですが、それ以降は特に宣伝を行っていなかったので、まだ認知されていない状態だと思います。
最後に
より多くの人に読んでもらいたいので、良ければシェアいただければ嬉しいです。
この冊子を通じて誰かの役に立てることと、
日本からもっと多く、いいクラウドサービスが生まれることを願っています。