見出し画像

公認会計士がゼロからSaaSを作った話

こんにちは、ナレッジラボCEOの国見です。
ナレッジラボではManageboardというSaaSを提供していますが、このサービスは構想段階から一貫して社内メンバーのみで作ってきたものになります。
でも創業当初からSaaS開発をやっていたわけではなく、社内で試行錯誤を繰り返しながら作り上げたものになります。

作り出した当初、僕はエンジニアではなく公認会計士としてのキャリアしかなかったのですが、2016年にWEBサービス立ち上げ構想を企て、2017年からSaaSプロダクト開発に取り組みました。

正確にいうとSaaSを作りたかったのですが何をエンジニアさんにお願いしたらよいかもわからなかったので、自分たちで作るしかないよねということで自分たちでコードを書き始めたというものでした。

プロダクト開発のハードルがどんどん下がっているといえども、非エンジニアである会計士がSaaSの開発に着手するというのは依然として見えない部分が多いかなと思い、4年ほど前のことではありますが、何から始めたのか、どこまでやったか、何をやらなかったかについて書いてみたいと思います。

0ヶ月目 どうしようか悩む

「自分たちがこれまで事業再生で提供してきた経営管理のノウハウをSaaS化したい!」

なんとしても作りたいWEBサービスの構想が出てきたのは2016年のことでした。でも当時の僕はちょっとITのことが好きな会計士でしかなく、WEBアプリケーション、いわゆるSaaSを作れるノウハウや知見は全く持ち合わせていませんでした。

大学時代は理系だったこともあり、周りにはエンジニアの友人もいたので相談はしてみたものの、そもそもこれと同じように作って欲しいというような参考になるサービスもなく、「お前が作るしかないんじゃないの?」みたいなことを言われ続けていました。

エンジニアリング自体には以前から興味があったことと、周りを見渡したときに若くてエンジニア経験のある古田(今の当社CPO)が同じような事業再生の経験者出会ったこともあり、まずは社内で独学しながらやってみようということになりました(無理矢理持っていきました)。

ちなみに、SaaS開発を始めようと決めたタイミングで僕のスペックはこんな感じでした。

・学生時代にプログラミングをやったことがある(学生時代は理系でした)
・監査法人時代はJ-SOXのIT統制を数年間やっていたくらい(業務システムがどうやって作られるかを監査目線で知っていた程度)
・Word Pressを使ったことがある

こんな感じでスタート時点では全くエンジニアではなく、古田も前職ではSIerで働いていましたが、WEBエンジニアの経験は全くなかったです。

こんな感じで、何から手をつけたらいいか全くわからないレベルでしたが、とりあえずやってみようということでのスタートとなりました。

1ヶ月目 言語の選択と独学スタート

まず、プログラミング言語を選択しないといけません。当時、技術的なことは全くわからなかったので、世の中のWEBサービスがどんな言語で作られているのかから考えていきました。

当時、いいサービスだなと思っていたのがマネーフォワードさん(後にグループインすることになります)、クックパッドさん、freeeさん、Wantedlyさんが使っていたのがRuby on Railsでした。

Ruby on Railsのことを調べていくとWEB開発に使えるいろんなライブラリがあり、書籍やコミュニティも豊富で事例に当たりやすいということだったのと、Ruby on Rails チュートリアルという当時は無料(今は一部有料になっている)で学べる学習サイトがあってこれがすごく評判がよかったので、まずはRuby on Railsからやってみることにしました。

スクリーンショット 2021-03-08 15.29.51

当時はまだWEB開発をやれるかどうかを判断する材料集めという意味合いが強かったこともあり、まずは僕一人でRuby on Rails チュートリアルを平日の夜や土日で1ヶ月くらいかけてやりました。

結果として、Ruby on Rails チュートリアルをやることで

・WEBアプリケーションがなぜ動くのか
・MVCのフレームワークのざっくりとした考え方
・フロントエンドとサーバーサイドの違い

この辺りがなんとなくわかった気がしました。

またチュートリアルだけでは細かい理解ができないので書籍を1冊購入しました。それがRuby on Rails 5アプリケーションプログラミングです。

スクリーンショット 2021-03-08 15.29.14

この本だけでは足りない部分はたくさんあるのですが、基本的な考え方はすごくよく理解できてボロボロになるまで繰り返し読んだ本になります。この本で足りない部分はWEB上に大量に転がっているので、印刷してこの本に貼り付けていくことで僕のバイブルにしていきました。

2〜3ヶ月目 自分が作りたいものにカスタマイズしながらチュートリアル2回目

この辺りから当時のナレッジラボで大きな売上を稼いでいた僕と古田の2人で、足元の売上を捨てて未知の領域に飛び込んでいくことになります(ここの意思決定が大きかった)。

繰り返しですが、Ruby on Rails チュートリアルはすごくよかったです。Twitterのようなアプリケーションを作っていくのですが、これを作っていくときにWEBアプリケーションの基本であるCreate(生成)、Read(読み取り)、Update(更新)、Delete(削除)をMVCのフレームワークに沿って学習できます。

チュートリアルを最後までやりながら、僕が作りたいサービスだったらこんな感じに実装していくのかな?みたいなことを想像していたので、2回目には単にチュートリアルをもう一回繰り返すのではなく、チュートリアルの順番に沿って自分が作りたいアプリケーションを作ってみようと考えました。

結果、これがめちゃよかったです

2回目に入る前にちゃんと考えたのが、自分がどんなサービスを作りたいか?です。それまで漠然とこんなサービスを作りたいと考えていましたが、具体的には

・どんな画面を作ってそこで何をしたいか?
・どんなデータを入力して、どういう処理をさせたいか?
・そうするためにはどのようなデータ構造にしないといけないか?

こんなことを2週間くらいしっかり考えました。具体的には、作りたい画面を絵に描きながら持たせたいデータや処理させたいロジックなどをエクセルに書き出していきました。

例えばこんな感じです

スクリーンショット 2021-03-08 22.30.15

これを考えながらプログラミング学習することがすごく重要だと考えています。これを考えずに学習してもわかった気になるだけで結局何も作れないままで終わってしまうリスクが格段に上がると思います。

チュートリアル2回目はこの要件を書き出したエクセルシートを片手に、今のManageboardの原型を作っていきました。

実際にチュートリアルに沿ってアプリケーションを作りながら要件を考えていくと見えてなかった部分がどんどん見えてきました。

・ログインはUser単位なので、Userにはどのようなデータを持たせないといけないか?
・UserとCompanyとの関係は?データとの関係は?
・どのデータをどんな画面から入力してどのようなデータ構造で保存するか?

こんなことをひたすら考えながら2ヶ月が過ぎていきました。

この2ヶ月間は今まで考えたこともなかったようなことをひたすら考えないといけなかったので精神的にも体力的にもかなりつらく古田と2人でもがき苦しんでいました。一方で、自分が作りたいWEBアプリケーションを実現するために必要となる大きな考え方や足りないものがなんとなくですが少しずつ見えてきたという成果も感じることができた貴重な2〜3ヶ月目となりました。

4〜5ヶ月目 ユーザーインターフェイスを作る

3ヶ月目まででなんとなくMVC(モデル・ビュー・コントローラー)の基本的な構造が作れたので、そこから画面の細かい実装をしながらいろんなロジックの調整、データ構造の見直しをしていきました。

このステップでもチュートリアルで学んだBootstrapというフロントエンドのフレームワークを使いながら入力画面やレポートを実装していきましたが、少し凝ったユーザーインターフェイスを実装しようすればすぐに詰まります。詰まったらインターネットでやり方を探すのですが、日本語のサイトに答えがあることは少なく、海外のエンジニアが描いてくれた記事やコミュニティなどを頼りに英語を訳しながら試行錯誤の実装を繰り返していきました。

この辺りから実装する内容がだんだん複雑になってくるので1日中ただひたすら同じバグと戦い続けるということも珍しくなく、心が折れそうになることもよくありましたが、ここまできたら後には引き下がれませんので前に進むのみです。自分を信じてガンガンやるのみです。もう引き下がれません。

そんなことを繰り返しながら、5ヶ月目くらいに僕が作りたかった最小限の予算管理アプリケーションをなんとかローカルな環境で動かすことができるようになりました!

感動でした!

6ヶ月目 インフラ作りにトライ&エンジニア探し

さあ、まだまだ動くと言ってもローカルな環境でのテストのみです。ここから本格的にサービスとしてリリースしていくためには多くの人にアクセスしてもらいながら動くアプリケーションを作らないと意味がないので、WEBサーバを探します。

有名なのはAWS(アマゾンウェブサービス)です。まずはAWSのアカウントを作成してドキュメントを読み始めました。

???

はっきりいってこれまで数ヶ月やってきた知識では全く歯が立ちません。でも本番環境としてインフラを整えていくことはマストですし、堅牢なインフラを作ることに対して少しでも不安があるのは絶対に避けないといけません。

ここからさらにインフラの勉強をするというのは無理!と思いました。

一方で、ここまでで僕がやるべきことは十分にやったという感覚もありました。

なぜなら、ここまでで僕が作りたいと考えていたWEBアプリケーションはこうやってこうやったら実現するという明確な感覚を手に入れることができましたし、当社として必要なエンジニアのスキルセットやエンジニアチームのイメージをかなり具体的に持つことができたからです。

また、サービスを拡大させていくために安全性、堅牢性、安定性などを確実なWEBアプリケーションを作っていく必要があったので、これ以上、僕たち2人で開発を続けていくべきではなく、経験豊富なエンジニアチームを早急に組成する必要があると考えていました。

ということで、改めてWEBサービスを開発できるエンジニアを探しました

そうすると6ヶ月前には何もできなかったエンジニアさんとの話がめちゃ具体的にこういうことがやりたいからこういう技術が必要だということを説明することができ、いろんなエンジニアさんを紹介していただくことができました。

そんな中で2016年12月一人目のエンジニアとして水野にジョインしてもらうという素晴らしいスタートを切ることができました。

何よりも経営者が自分でプロトタイプを作ろうとしているという会社の姿勢がエンジニアさんに面白い会社だなと思ってもらえるようになったことがすごく大きかったと思っています。

ちなみに、この後、続々と優秀なエンジニアメンバーを向かい入れることができたのですが、その優秀なメンバーの徹底したリファクタリングのおかげで僕が書いたコードはもはや一行もないのではないかというくらい綺麗なものになっているという話を聞いたことがあります。。

まとめ 最初の6ヶ月間で学んだこと

ここまでが非エンジニアである会計士の僕がWEBアプリケーションを作るという大きな第1歩目を踏み出したという話でした。

この6ヶ月があったから今のナレッジラボがあるのは間違いなく、すごく大きなチャレンジだったと思っています。

結果として2017年に3人でManageboardを本番サービスまで作り、2018年にエンジニアメンバーを増やすまでの間、僕もエンジニアリングを堪能しました。

今思えば、この経験がすごくよかったと思っています。よかった点はいろいろありますが、

・解決したい課題をどうやったらプロダクトで解決できるかのイメージがめちゃくちゃしやすくなった
・エンジニアの採用がしやすくなった
・エンジニアメンバーとの会話がしやすくなった
・ソフトウェア開発の大変さや難しさが具体的にわかった
・プロのエンジニアの凄さ、大変さがわかった

この辺りがよかったポイントですね。
この半年間がなければ2017年からのエンジニアチームの立ち上げは絶対にできていなかったと思っています。

何よりも、それまではナレッジラボはコンサルティングのみの会社だったのがこの半年間のチャレンジができたことによって、SaaS企業へと進化することができました。この半年間は他のメンバーに支えてもらってなんとか第1歩を踏み出せたと感謝しています。

非エンジニアや僕と同じ公認会計士でSaaSの開発をご検討中の方がいらっしゃれば、ご参考までに。





この記事が気に入ったらサポートをしてみませんか?