個人開発したい人「個人開発をしようと思っているけど自分の持っているスキルで足りているか不安。個人開発に必要なスキルって何だろう。個人開発をしているプログラマーってすごいスキルを持っているのだろうな…自分にはムリかも…」
こういった疑問に答えます。
本記事の内容
- 個人開発をするために必要なスキル
- 個人開発は難しくない
- 今もっていないスキルはサービスを作りながら学べばOK
書いている人の実績
- Webサービスを個人開発してリリースした2009年から10年間運用
- 個人開発したサービスの総PVは6億を突破
- 現在の月間PVは約800万PV
本時期は初中級者向けです
初中級者の定義は以下です。
- 一つ以上のWeb向けプログラミング言語で開発したことがある
- プログラミング言語以外にもサーバー周りの知識を少しでも知っている
- 自分で個人開発をしようとしたことがある(途中でやめていてもOK)
プログラミングを仕事にしている人は、だいたいこの中に当てはまるのではないでしょうか。
もちろん「今からプログラミングを始める方」も理解できる内容になっています。
Webサービスの個人開発に必要なスキル
Webサービスの個人開発に必要なスキルは【必須スキル】と【あればよいスキル】に分別できます。
その中でも今回は【必須】のスキルを解説します。
【あればよい】は別の記事で解説していますのでそちらをご覧ください。
必須のスキル
Webを開発できる言語(Java/PHP/Rubyなど)
これは必須ですね。まずはWebを開発できるプログラミング言語を習得しましょう。
最近はJavaScriptでもサーバサイドを開発できるのでだいぶ敷居が低くなっています。
Webサービスを開発できる代表的なプログラミング言語は以下になります。
- Java
- PHP
- Ruby
- Node.jsに代表されるサーバサイドJavaScript環境
ここには書いていませんが、例えばPerlが得意だったらもちろんPerlでもOKです。
とにかく自分が一番得意な言語で開発するのが大事です。
そのことは以下の記事で書いています。
MVCフレームワーク
フルスクラッチでWebサービスを開発するのは現実的ではないのでMVCフレームワークを使いましょう。当然ですね。
各言語の代表的なMVCフレームワークは以下になります。
- Java
- Spring
- Seasar
- Struts
- PHP
- Laravel
- CakePHP
- Symfony
- Ruby
- Ruby on Rails
JavaはSeasarはサポート打ち切りになっているので、今だとSpringほぼ一択でよいと思います。詰まった時も参考になるサイトや記事も多いです。
ただし、かなり大規模なフレームワークですので慣れないと難しいかも知れません。頑張って習得しましょう。
PHPは最近はかなりLaravelが勢いがあります。しかしCakePHPも依然人気です。慣れたフレームワークを選択しましょう。
初挑戦だったら習得しやすいLaravelでOKです。
RubyはRuby on Rails一択ですね。あえて避ける必要もありません。
王道でいきましょう。
HTMLとCSS、それと少しのJavaScript
Webサービスを開発するなら必須ですね。
よほどリッチなことをしようとしないかぎり、難しいことは必要ありません。
JavaScriptはjQueryをさらっておけばOKです。
データベース(RDBMS)
Webサービスを開発するのであればRBDMS(Relational DataBase Management System)、いわゆるDBは使うことが多いと思います。
それでも深い知識は必要ありません。
インストールができて、権限周りの設定ができれば十分です。
コネクション数を調整したり、メモリ使用量を調整するようなパラメータチューニングはサービスが軌道に乗ってから習得する、でOKです。
MySQLやPostgreSQLなど無償の中で好きなものを選びましょう。
あえて有償のOracleを選ぶ必要はありません。
SQL
今はO/Rマッパーがあるので、SQLを直接書くことはあまり無いかも知れません。
それでもテーブルを作ったり、直接データを修正することはサービス開発初期にはよくあります。
最低限のSELECT,UPDATE,DELETE,INSERTと、テーブル作成のCREATE、それとテーブル内容を変更するときに使うGRANTぐらいを書ければ十分OKです。
「GRANTとかいきなり書けと言われても覚えてない…」
全然大丈夫です。僕もたまにしか書かないのでいつもググって書いています。
インフラ/サーバー構築(Linux)
今はクラウドが全盛なのでRed Hat系のコマンドが一通り打てるようにしておきましょう。
AWSで使われているAmazon Linuxも同じようなコマンドです。
Webサーバー(Apache、nginx)
WebサービスなのでWebサーバは当然使いますね。
Apacheかnginxの二択で好きな方を選びましょう。RubyならHerokuでもいいですね。
ドメイン取得/DNS設定
個人開発でもドメインは取得しましょう。
ドメイン取得ならお名前.comでOKです。僕もずっとお名前.comを使っています。
DNSは仕事だと自分で設定したことが無いプログラマーも多いかも知れません。
難しくはありません。いい経験になりますのでやってみましょう。
個人開発は難しくない、でも簡単でもない
一行で矛盾したことを言ってしまいましたが、これが本質ではないでしょうか。
一つ一つのスキルに対しては深い知識は必要ありません。
しかし、Webサービスを一気通貫で開発するためには結構な幅広いスキルが必要となります。
少し古い表現になりますが、フルスタックエンジニアとしてのスキルセットが必要になります。
必要なスキルを必要になっただけ学ぶ「パラシュート勉強法」
個人開発には様々なスキルが必要です。
全てのスキルを網羅的に熟練した知識にすることは不可能です。
必要なスキルを必要な分だけ学ぶ方法にパラシュート勉強法(遅延評価勉強法)というものがあります。
僕はいつもこの勉強方法で個人開発に必要なスキルを習得してきました。
オススメですので簡単に紹介します。
パラシュート(遅延評価勉強法)勉強法とは
パラシュート勉強法とは『「超」勉強法』の著者、野口悠紀雄氏の提唱する数学の勉強方法です。
例えば、Apacheを習得するときにApacheの技術書を買ったりすると思います。
その際に、1ページ目から順番に読むのではなく、自分が学びたいところだけをチョイスしてそれを実践します。
別にApacheに限らず、他のスキルでも同様です。
当たり前のように聞こえるかも知れませんが、これを実践している方は少なかったりします。
フルスタックエンジニアになるチャンス
普段の仕事ではWebサービス開発における全ての工程をさわることはあまりありません。
ですので「フルスタックエンジニアになろう」と思ってもなかなかなれないのが事実です。
しかし、自分一人で全ての工程を担当する個人開発の場合は、必然的にフルスタックエンジニアになる必要があります。
逆説的に言えば、個人開発サービスをリリースまで持っていければあなたはフルスタックエンジニアになることができます。
個人開発をリリースすることは難しいかも知れません。やらない理由はいくらでもあります。しかし挑戦する価値がそこにあります。
まとめ
- Webサービス個人開発のスキルは一つ一つに深い知識は必要ない
- 今もっていないスキルはサービスを作りながら習得すればOK
- まずは作ってみること、分からなければその時に調べればOK
- 個人開発でWebサービスをリリースできればフルスタックエンジニアになれる
それではよい個人開発ライフを!