読者です 読者をやめる 読者になる 読者になる

NZ MoyaSystem

ニュージーランド在住のプログラマがあれこれ書くブログ

カテゴリ

【独学】ゼロからのプログラミング学習計画

最近読者の方から、「まったくの未経験からプログラミングを勉強したいのですが、何から手をつければいいですか?」と続けて問い合わせをいただいた。

世の中にプログラミングの参考書や学習サイトはあふれているが、それだけに、何を最初にやればいいのか初学者にはわかりにくい。

僕ももともとは文系大学生で、就職するまでは1行もプログラムを書いたことがなかったが、IT企業に内定をもらったのを機に勉強を始め、今では海外でプログラマとして働けるまでになった。

また2年ほど、プログラミング未経験の大学生にボランティアで開発技術を教えていたこともある。そこで教えた学生の中には、有名IT企業のプログラマとして就職した人もいる。

その経験を踏まえて、まったくのゼロから独学でプログラミングを学習するための計画を提案したい。これからプログラマを目指す人の参考になれば幸いである。



目次

ウェブサービスの技術を勉強しよう

初学者の方にはまず、ウェブサービスの勉強から始めるのをオススメする。ウェブサービスとは主にブラウザ(Microsoft Edge、Chrome、Safariなど)で動くシステムのことで、Facebook などの SNS、Amazon や楽天などのネットショッピングサイトがそれにあたる。このブログが使っている「はてなブログ」もウェブサービスの一種だ。

なぜウェブサービスなのか。その大きな理由はプログラムを動かすのが簡単だからだ。

プログラミングを学ぶには、プログラミングを行う環境を整えなければならず、ここでつまづいて挫折してしまう人もいる。スマホアプリ、特に iPhone アプリ開発はこの環境構築がかなり面倒くさい。高額の年会費を払う必要まである。

しかし、ウェブサービスのプログラミングならブラウザとエディタ(メモ帳)があれば始められる。発展的な内容に進むにしたがって、ウェブサーバやデータベースなど必要なものを追加していけばいいので簡単だ。最初は楽に作れるものから覚えよう。

また、ウェブサービスの基本的な構造(フロントエンド、サーバサイド、データベース)はスマホアプリにもそのまま応用が効く。世の中のITサービスがどう作られているのか、基礎の部分をしっかり理解すれば、アイデアを自由に実現化できる。

ということで、簡単に作れるウェブサービスで、応用の効く知識をしっかり身につけることを強くオススメする。

Keys

「ドットインストール」を活用しよう

今はインターネット上で無料でプログラミングを学べるコンテンツが充実しているので、わざわざ入門書を買う必要はない。まずはオンラインで勉強し、もっと深く学びたいと思ったときに初めて専門書を買えば十分だろう。

無料のオンライン講座では、ドットインストールというサイトが有名だ。僕も、プログラミング未経験の学生に開発技術を教える際には、まずはドットインストールのレッスンを受けることを勧めていた。

f:id:imo_jo_chu:20170114164417p:plain
ドットインストールの画面

ドットインストールでは、1レッスンが3分ほどの短い動画で構成されているので、テンポよく進めていくことができる。動画の視聴だけで完結するものもあるが、コーディングを伴うレッスンでは、もちろん実際に手を動かすことが求められる。環境構築やファイル作成も自分で行う必要があるものの、動画で丁寧にレクチャーしてもらえるので心配ない。

次に、ドットインストールの中でどの講座から始めればいいのか紹介していこう。

学習すべき内容

HTML, CSS ー 内容を記述する言語 ー

f:id:imo_jo_chu:20170114180331p:plain:w300
HTML CSS は、ウェブページの内容とレイアウトを記述する言語だ。普段パソコンやスマホから見ているウェブページは主にこの2つを組み合わせて作られている。HTML が文書の構造、CSS がそのレイアウト(画像の配置、文字の大きさなど)を定義する。

HTML と CSS を習得すると、皆さんが普段見ているようなウェブページを自分で作れるようになる。もしあなたがブログを書いているなら、デザインのカスタマイズも簡単に行えるようになるだろう。ウェブページがいったいどのようにして作られているのか、簡単に知っておくだけでも興味深いはずだ。

なお、このふたつは厳密に言うとプログラミング言語ではないのだが、ウェブサービスを開発する上では必須であり、さほど難しくはないので学習しておこう。

レッスンドットインストール HTML入門CSS入門


JavaScript ー 画面の情報を処理する言語 ー

f:id:imo_jo_chu:20170114181217p:plain
JavaScript は、主にブラウザ上で動くプログラミング言語である。画面上のアニメーションなどを実装するのに使われている。

最近はサーバサイド処理に使われたり、スマホアプリも作れるようになったりと活躍する場面が広がっており、まさにコスパ抜群の言語といえる。テキストエディタとブラウザさえあれば動かせる簡易さが魅力で、プログラミング初心者にはぜひとも覚えてほしい。

レッスンドットインストール JavaScript入門

JavaScript を習得すると、ウェブページ上の文字や画像を自由自在に操作できるようになる。アニメーションだけでなく、入力された値によって画面上の文字や画像を書きかえるといった、"プログラミングっぽい"ことが実装できる。

ここまでくるとプログラミングのおもしろさがわかってくるはずなので、初学者の方は JavaScript の基本を覚えるところまではがんばって進めてみてほしい。

基本を覚えたら、jQuery にも挑戦してみよう。これは JavaScript をより簡単に記述するために開発されたもので、多くの現場で使われている。複雑な処理が簡潔に実装できる、非常にパワフルな技術なので、覚えればプログラミングがよりいっそう楽しくなる。

レッスンドットインストール jQuery入門


MySQL ーデータベースを構築しようー

f:id:imo_jo_chu:20170114185745p:plain
ほぼ全てのシステムにおいて必須となっているデータベース。システムのユーザ、ブログの記事、通販サイトの商品など、あらゆる情報を格納するための技術だ。当然、プログラマもそれを扱う知識を持っていなければならない。

データベースにはいろいろ種類があるが、MySQL で基本を勉強しておけば、ほかにも応用が効くので大丈夫だ。

MySQL を習得することで、大量のデータをコンピュータに保存し、更新し、検索するといった一連の処理が行えるようになる。……と書くと、かなりプログラマっぽく聞こえるのではないだろうか?

レッスンドットインストール MySQL 入門


PHP ーサーバで情報を処理するための言語ー

f:id:imo_jo_chu:20170114193724p:plain
最後はサーバサイド処理を PHP で身につけよう。

PHP の役割は、ブラウザとデータベースの橋渡しだと考えよう。ブラウザから入力された値を受け取って処理しデータベースに保存したり、またデータベースから情報を取り出してブラウザに表示するといったことができる。

レッスンPHP入門PHPデータベース入門

ここまでくれば、ウェブサービスの基本的な技術が身についたと言っていい。


もちろんまだまだ先は長いのだが、ここまでレッスンを完了できていれば、ひとりで学習を続ける体力が備わっているはずだ。あとは個人の興味にしたがって、トピックを選んで勉強を続けていこう。Java や C# といった他の言語を学ぶもよし、すでに学んだ JavaScript や PHP の世界を深掘りするのもよしだ。

参考書籍

最後に、参考書籍を一冊だけ紹介したい。

その名の通り、読みやすいコードを書くためのテクニックが詰まった一冊。

プログラムは動けばいいというものではない。実際のシステム開発はチームで行うことが多いため、ほかの人から見て読みやすいか、メンテナンスしやすいかなども重要になってくる。

本書では、変数名のつけ方や関数の切り出し方、コメントのつけ方など、初心者がおろそかにしがちなポイントがきっちり押さえられている。自己流でおかしなコードを書き続けていると変な癖がついてしまい、いざ仕事で開発を始めたときに苦労するので、できるだけ早いうちに「きれいなコードとはどのようなものか」を理解したほうが良い。

おわりに

プログラミングは、世界中どこでも通用する技術だ。IT業界はとにかく人手不足であり、それなりの技術さえあれば国を選ばずに働くことができる。日本国内だけでなく、海外でも働ける可能性が手に入るという意味で、非常に価値のあるスキルだ。

また、プログラミングと聞くと、おそろしく難しいものかのように身構えてしまう人がいるが、決してそんなことはない。難しそうに見えるだけで、ごく普通の論理的思考力さえあれば、誰にでも身につけることが可能だ。

なんのスキルもない文系大学生だった自分も、プログラミングができるおかげで、海外で働く生活を実現するに至った。プログラミングを身につけることで、きっとあなたの人生にも新しい扉がひらけるはずだ。ぜひ、軽い気持ちで挑戦してみてほしい。

おすすめニュージーランドで就職した文系プログラマの技術力をさらす