こんにちは、フジワラ(@Fujiyama_Yuta)です!
普段はフリーランスのエンジニアとして働いています。仕事の合間や、休日のプライベートの時間を使って個人で勤怠管理サービスの開発・運用も行なっています。2ヶ月前にリリースして、現在は保守・運用をしつつ、ちょっとずつ改良をしています。
私もそうでしたが、エンジニアだったら「自分で考えたサービスを作ってみたい!」って思うことありますよね。でも、何から手をつけたらいいのか、どうしたらいいのかわからない...って人もきっと多いはずです。
今回の記事では、私が実際にサービスの企画・開発・運用までやってみてわかった、個人開発するメリットや、個人開発において大事なこと、モチベーション維持についてなどの知見を共有したいと思います。
個人開発、やってみたい!興味ある!という人の参考になればと思います。
1. 作ったもの - OFFICECLOCK
OFFICECLOCK - WebとLINEで勤怠管理ができるサービス
作ったサービスのイメージ
作ったものは勤怠管理ができるWebサービスです。
【勤怠画面】
こんな機能があります
このサービスは、ざっくり以下の4つの機能があります。
- 機能説明
- ①Webで勤怠管理ができる
- ②勤怠の出退勤の登録、休みの登録ができる
- ③エクセルの勤務表が作成できる
- ④LINEbotとも連携している
【HATARACLOCK - LINEで勤怠管理ができるbot】
開発スケジュール
私の場合は仕事のかたわらで開発していたというのもあり、リリースまで4ヶ月かかっています。平日は1日2〜3h、休日は5〜6hというサイクルを繰り返し、3ヶ月でカタチにして、1ヶ月で気になる部分を修正して、4ヶ月目にリリースをしました。1日8hかけてフルでコミットできるのであれば1ヶ月〜2ヶ月でリリースできたかもしれませんが…。仕事と並行して開発する場合は、どうしても毎日長い時間はとれないので、毎日1hでも2hでも「続けていく」ということが大切だと思います。
ざっくりしたスケジュール感は以下のようなイメージです。
フェーズ | 時間 |
---|---|
要件定義 | 20h |
設計 | 30h |
デザイン・モック | 15h |
実装 | 30h |
テスト | 10h |
バグ修正 | 30h |
リリース準備 | 10h |
リリース | 2h |
打ち上げ(@串カツ田中) | 2h |
2. 開発環境
最短で開発するための技術選定
個人開発なので、自分が得意な言語や、勉強したい言語を選定できますが、私は「どの言語で開発すれば最短でサービスを作れるか?」ということを最優先に考えました。自分の得意な技術や、技術の情報量の多さなどを考慮するとPHPとJQueryを使って開発する手法が一番早く開発できると思い、これらを採用しました(結果的に4ヶ月もかかりましたが...)。
今後、違うサービスを作るのであれば、フロントはAngular/TypescriptでサーバーサイドはCakePHPのフレームワークを使って書きたいと思っています。
役に立ったツール
開発中特に役に立ったツールをまとめてみました。
ツール | 機能 |
---|---|
Transmit | ファイル転送ツール |
BootstrapStudio | Bootstrapのフレームワークを使ったモックがGUIで簡単につくれるツール |
Wunderlist | タスク管理ツール |
POSTMAN | RESTを確認できるツール |
この中でもBootstrapStudioはとても役立ちました。このツールはドラック&ドロップでBootstrap製のモックを生成してくれます。そしてhtml・cssも自動で作ってくれます。メインページ以外にもログイン画面・サインオン画面のフォームなどは、Bootstrapstudioで作成しています。
もしモックも自分で作らなければいけない場合、このツールを使うのも一つの手法かもしれません。ベースになる部分は簡単に作成することができます。
【BootstrapStudio】
3. 個人開発で大切だと思うこと
個人開発で大切だと思うことを3つまとめました。
- モチベーションの維持
- 開発だけではなく運用面も考慮する
- このサービスは失敗かもしれないという恐怖
モチベーションの維持
個人開発で一番大変なことは「モチベーションの維持」でした。開発をはじめて1ヶ月目の作業はスムーズに進みました。大変だったのはモチベーションが落ちてしまったときです...。チーム開発の場合、PMやPLが士気を高めてくれたり、仲間がいたり、モチベーションを維持するための材料が多々あるのですが、個人で開発している場合、鼓舞してくれる人は自分しかいません。当たり前かもしれませんが、自分で自分を鼓舞なんて意味がありません。
この問題を解決する具体的な方法はないのですが「モチベーションに頼らない」ということを心がけていました。
雨の日も、風の日も、ツラいことがあった日も、飲みすぎた次の日も、モチベーションが低くても平日の朝7時30分〜9時30分の2時間はパソコンを開いていました(ずっとTwitterを眺めている日もあったのは秘密です...)。そしてこのサイクルを習慣化するというのが、とても大切だと思いました。
開発だけではなく運用面も考慮する
サービスをリリースして、しばらく経った時に知人から「アカウント登録できないんだけど...」と連絡をもらいました。すぐに調査すると、その日の朝に修正した箇所にバグがあり、本登録ができないという障害が発生していました。この時、多くのユーザーに影響があり、ご迷惑をかけてしまうということがありました。
リリースして間もなかったこともあり、障害を検知するための仕組みなどの運用面での考慮が足りていませんでした。当たり前のことですが、個人開発の場合、開発だけではなく運用も一人で対応できるフローを考えなければなりません。
これを機にエラーを検知したとき、slackに通知する仕組みや、質問がきたらslackでチャットでレスができる仕組みを取り入れたりしています。
このサービスは失敗かもしれないという恐怖
このサービスを開発している最中に『ヤバイ...これ全然面白くないかもしれない...』と、自分の作っているものが、とてつもなくつまらなく感じてしてしまう瞬間がありました。モックが完成した瞬間にその感覚を味わってしまい、開発を止めて、なにか別のモノを作ろうかと思いました。
この感覚は、何かを作り出している仕事をしていると、一度は味わう感覚だと思いますが、大丈夫です。「つまらないかもしれない」と感じている部分も、時間が経てば、どこがつまらないのかが見えてくるようになります。「もっといいサービスを作り上げるんだ!」という気持ちを忘れずに、開発を進めてみてください。きっと最後まで完成させることができます。
4. なぜ個人開発をするのか?(個人開発をするメリット)
スキルの習得
技術を習得しようとしたときに、どうすれば身につけることができるかは人それぞれですが、私の場合は(1)動かす(2)作る(3)公開するというやり方が、最短で技術を習得できる方法です。
プログラミングを習得する場合、自分で手を動かしてコードを書くというアウトプットが非常に重要です。簡単なサービスでもいいので、公開するということを意識して開発を進めるといいと思います。
作ったものがアピールのポイントになる
これは私の経験上の話ですが、プロジェクトの面談で「個人でサービスを運用しています」と言うと、必ず話が盛り上がります。「ゼロからサービスを開発して、運用している」という点は「勉強しています」と書いているよりも、アピールのポイントになると思います。
お金になる(かもしれない)
「サービスを会社で使いたいんですけど、いくらですか?」など、「売却してくれませんか?」というような問い合わせをいただくことが実際にありました。現時点では収益にはなっていませんが、自分のサービスでお金を稼げるって、とても夢がありますよね。もしお金を稼ぐサービスになったとき、チームだったら利益もワリカンですが、個人開発だと全部自分がもらえますよね。そう考えると個人開発も悪くないな...。と、思ったりします。
5. まとめ
というわけで個人開発を通してわかったことの話でした。
一人で開発やっているとモチベーションの維持とか、時間の制限とか…大変なことも多々あります。でも、それ以上に自分で考えたサービスを自分の手で形にしていくのってすごく楽しいですし、勉強にもなります。何より、自分の作ったものが多くの方に使ってもらえるというのは、とてもうれしいことです!
作ったモノを見せられるというのは転職にも役に立つかと思いますので、皆さんもぜひチャレンジしてみてください!
「個人開発」と言うと初心者だとハードルが高く感じるかもしれませんが、paizaラーニングだとプログラミング未経験者から始められる「Ruby入門編」「Java入門編」などから、実際に動くWebアプリが作れる「Webアプリ開発入門」まで公開していますので、興味のある方はぜひごらんください。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。