残念な結論
はじめから残念な結果をお知らせしますが「プログラミングを学ぶのに必要な期間は一生です」。
例えば私が主に仕事で利用しているPHPでは最近はLaravelというフレームワークを使うことが多いです。
じゃあPHP×Laravelを覚えれば安泰かというと3年後にはおそらく今のままの技術では置いていかれるでしょうね。
それくらいトレンドが早い周期で入れ替わります。
そこがチャンスです
と思ってしまうかもしれませんが、逆にこれってチャンスです。
新しく出てきた言語や技術に対するスタートラインがプロであれ誰であれ同じだからです。
プロであっても「それってそんなことができるんだ、知らなかった」という方は多いです。
むしろ今自分が仕事で使っている言語でいっぱいいっぱいで逆に新しい技術を試している時間が無いって場合も多いでしょう。
基礎だけわかればいいなら1週間でも十分
その言語は何を得意とする言語なのか、どんなことができるのか、簡単なサンプルを作ってみる。
良さそうな入門書を買ってきてこれらのことを習得するだけなら1週間でも十分です。じゃあ次に具体的なアプリケーションを作成していくとなった時にどうするか。
これも実践編的な書籍を購入してやってみるのがいいでしょう、結構つまづくと思うので3週間くらいでしょうか。
本だけでは絶対に足りないので検索して調べることも必須です。それらを合わせて色々と問題はありながらも何となく動くものが作れるようになるってのが1カ月ぐらいですかね。
こんなサイトを作りたい
プログラミングは一生学び続けなきゃいけない、基本なんて一か月もあればある程度はできるということを書きました。
これはまぁざっくり言った場合であり、作りたいものが具体的に決まっている場合にはもう少し具体的なアドバイスが可能です。
facebookはどれぐらいの期間で作れる?
初心者が目指すにはややハードルが高いかもしれません。すべてを真似しようとせず以下のように切り分けて最低限の機能でミニマムに作っていくとします。
- ユーザー登録
- ログイン認証
- 投稿機能
- 友達申請関連
ざっくり見積もって3カ月くらいですかね、PHPやRubyなどのweb系言語とMySQLなどのデータベースの学習が必要です。
他の機能はあとから追加しておけばOKです。いきなり全部完璧に作ろうとすると多分挫折します。
インスタグラムはどれぐらいの期間で作れる?
上記のfacebookと同様に小さく切り分けてみます。
- ユーザー登録
- ログイン認証
- 写真投稿機能
- フォロー関連
昨日自体はおそらく簡単な部類です、ただ画像を扱うのが最初は難しく感じるかもしれません。
例えばユーザーが投稿してくる画像はサイズがバラバラなのでリサイズやトリミングなどを行いサイトの表示に適したサイズにトリミングやリサイズなどを行う部分です。
サーバーサイドでimagemagickを使うことも考えると3~4カ月くらいかなと。
ただし他のサイト作成で既にユーザー登録やログイン認証の方法について理解があるならばもっと早まります。
セキュリティの話
作ってみたいwebサイトがあるというのはすごくいいことです。そのサービスの作成を最終目標に学習をしていくのはおそらく最良の方法です。
その際に合わせて知っておいてほしいのがwebセキュリティのことです。
知らなかったとはいえセキュリティ的に穴のあるwebサイトを作ってしまった場合、利用者の情報を漏洩してしまったり、利用者にウイルスなどの被害を与えてしまう可能性もあります。
いきなりそれもやろうとするとほぼ挫折すると思いますので、まずはただ作り上げるだけでOKです。その後にセキュリティ的な問題が無いかをサイトチェックしてみてください。
チェックすべき項目は以下の記事でまとめているのでその際は参考にしてみてください。
(今さらっとみておいてもいいんですが、こんなに対応しなきゃいけないなら大変そうだから作ること自体やめようってなるのは勿体ないので、参考程度に見ておく感じでOKです)
プログラミング学習の挫折率
プログラミング学習の挫折率は90%と言われているそうです。
ただ、そもそも100人が学び始めて100人が習得できる技術なんてものはないですよね。
足し算くらいですかね、100人が勉強して100人が出来るようになることと言えば。
なので挫折率なんてものは気にする必要はないです。
プログラミングの適性のお話
ただし適正というものは確かにある気がします。
一つ言えるのは何か出来上がってうまく動いた時に楽しいと思えるかどうかは適性の一つだと思います。
例えば野球選手は野球が好きでしょうし、サッカー選手はサッカーが好きなはず、同じようにプログラミングが好きか、やっていて楽しいと思える部分があるかが大事な気がします。
適性の調べ方
じゃあそれをどうやって調べればいいかって話ですが、上記のように入門書を1週間でやってみて、実践編の書籍を3週間でやってみたらある程度わかると思います。
そこで全く何も楽しくない、ただただすべてが苦痛であれば他の楽しいと思えることに挑戦する方が有益です。
ぶっちゃけプログラミングなんてただの手段の一つですからね、できる人間が偉いわけでも、できなかった人間が駄目なわけでもないですよ。
プログラミング不要説
なんとなくの感覚ですが「プログラミングを学んでwebサイトを作れるようになりたいです!」という質問が結構多いように感じています。
で、そういう方にお伝えしたいのがwebサイト作るのにプログラミング言語の勉強なんて必要ないですよってことです。
プログラミングが必要なのは以下の様なサイトを作りたい場合です。
- ユーザー登録をしてログイン認証を行う必要がある
- ユーザーが入力した値をデータ登録する(口コミやレビューの投稿サイト等)
- たくさんのデータの中から検索条件で指定されたものを抽出して表示する
HTMLとCSSはプログラミング言語じゃない
まさにその通りなんですが、HTMLとCSSはプログラミング言語じゃないです。HTMLはマックアップ言語、CSSはスタイルシート言語(実は私も初めてこんな名前だと知りました…)
で、要はホームページを記述・装飾するための記述方法なだけです。難しいアルゴリズムが必要なわけでもないですし、正直HTMLとCSSくらいは中学生でも使えます。
プログラミング学習の挫折率が90%なら、HTMLとCSSは成功率が90%って感じです。
もちろんオシャレなwebサイトが作れるかはまた別の話です、最初は自分の作ったwebサイトのダサさに震えることでしょう(体験談)
それ作る必要ありません
webサイトではこういうものをサイト上に配置したいなと思った時に、それに近いサンプルなどが普通に公開されていることがほとんどです。
例えば「お問い合わせフォームを作って問い合わせを受けたいな、問い合わせ機能を作るにはプログラミングを勉強しなきゃ…」って思うかもしれないですが、Googleフォームを使えば画面上でフォームを作って後はコードをサイトに貼り付けるだけでOKです。
wordpressを使っている場合はプラグイン入れるだけですしね。
何かやりたいことがある時、それを実現するライブラリ等が公開されてないかなと検索することをおすすめします。
まとめ
- プログラミングを学ぶ期間は一生
- 基本だけなら1カ月もあれば十分
- 本当にプログラミングが必要なのかを考えてみる