非エンジニアがWebプログラミングで勉強すべき10のこと
プログラミング未経験の非エンジニアのために「Webプログラミングで勉強すべき10のこと」を紹介する記事。未経験からプログラマーに転身した現役エンジニアに話を聞いてまとめました。学ぶとWebサービスを作ることができます。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
まったくのプログラミング未経験の非エンジニアだと、「いったい何を勉強をすればいいのか」がわからないということもあるでしょう。そこで今回は、現役のエンジニアから、Webプログラミング習得のために何を勉強すればいいか伺いました。
伺ったのは、自身もプログラミング未経験から楽天のエンジニアに転身した経験を持つ村田佑介氏です。
お話を伺った人
村田佑介氏
株式会社AIトラベルCTO。2010年に楽天株式会社に新卒で入社し、最初は新卒採用の部署に所属。その後、開発部門の部署に異動して楽天ツールバーなどの開発に関わる。現在は株式会社AIトラベルのCTOとして活躍中。
自身のブログで書いた、プログラミング未経験者がWEBエンジニアになるためにやるべきことが以前に話題になりました。本記事ではこの内容をもとにお話を伺い、TechAcademyで再度まとめています。
以前の村田氏のインタビューによると、もともと非エンジニアの友人に「プログラミングを勉強するためにどうすればいいか」を聞かれて紹介していたものをまとめた記事だそうです。
Webプログラミングで勉強しておきたい10のこと
ここからは自力でWebサービスを作りたいならこれくらいを勉強しておいた方がいいという項目を10あげてみました。なお、村田氏のもとの記事ではドットインストールなどプログラミングのオンライン学習サービスのリンクが紹介されていますが、本記事では、今すぐ読んで大まかな内容がわかるよう、TechAcademyマガジンの記事・TechAcademyが寄稿した記事をリンクで紹介しています。
なお10項目は上から順番に勉強することがおすすめとのことです。
1. UNIXのコマンド操作
まずはプログラマーが使っているような黒い画面に慣れましょう。そのために、MacのPCを使っている場合はターミナルをどんどん使いましょう。なお、WindowsのPCであってもクラウド上で開発環境が用意できるCloud9を使うと、ブラウザ上でターミナルを動かせます。
また、Vagrantというツールを使ってローカルに仮想環境を構築しておくこともおすすめです。
主要なUNIXコマンドは下記の参考ページにも書いてありますので、フォルダを作る、ファイルをコピーする、編集するなど自分で操作してみてください。最初はエラーが出て戸惑うところもあるかもしれませんが、エラーメッセージを読んだり、調べたりして解決することが大事です。
参考ページ:
これだけは覚えておきたい!基本的なUNIXコマンド20
今さら聞けない!ターミナルの使い方
VagrantとVirtualBoxを使ってローカル開発環境を構築する方法
2. HTML/CSS
Webページを作るためにベースとなる技術です。Webサービスは基本的にRubyやPHPといったプログラムでHTMLを動的に作るものですので、まずはHTMLとCSSを理解しておく必要があります。
書き方の基本をおさえてから、どこかのサイトを真似てもいいので、自分でWebサイトを作ってみるといいでしょう。HTMLとCSSはブラウザとテキストエディタがあればPC上で簡単に表示できるので、特別な準備も必要ありません。
参考ページ:
まずはここから!HTMLの書き方
スタイルシート(CSS)の基本的な書き方
3. プログラミング言語
完璧でなくても大丈夫ですのでHTMLとCSSを書けるようになったら、何か1つプログラミング言語を使ってみましょう。言語は何でもいいそうですが、PHPとJavaScriptはWebと親和性が高く、作ったHTMLに埋め込みやすいのが特徴です。PHPの場合は開発環境の準備が必要になるので、XAMPPやMAMPを用意するのがいいでしょう。JavaScriptはHTML/CSSのようにテキストエディタがあれば、ブラウザ上で実行できます。
また、村田さんの個人的な趣味としてはRubyがおすすめだそうです。こちらも開発環境が必要ですが、Cloud9など統合開発環境を使うのも有効です。
いずれのプログラミング言語でも、変数、条件分岐、ループなどの基礎をおさえておくといいでしょう。
参考ページ:
今さら聞けない!Rubyとは【初心者向け】
今さら聞けない!PHPとは【初心者向け】
JavaScriptが学べる初心者向け記事の一覧
4. Git
Gitとは、プログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システムです。いつ/誰が/どこを/どのようにファイルを変更したかを、変更履歴として記録することができます。これにより、編集したファイルを過去の状態に戻したり、どこを編集したかの差分を表示したりすることができます。個人の開発でもチームの開発でも活躍するので、早い段階で使えるようにしておきましょう。
これはテキストを読むよりも、GitHubなどを使いながら覚えるのがよさそうです。GitHubはGitの仕組みを利用できるWebサービスです。下記の参考ページにGitの主要コマンドも紹介しているのでチェックしてみましょう。
参考ページ:
今さら聞けない!GitHubの使い方
5. Webの仕組み
普段Webサイトを見ていても、どうやって動いているのかわからない人もいるのではないでしょうか。
書籍としては「Webを支える技術」がおすすめだそうです。
書籍を読むと時間がかかるという人は下記の参考ページをまずは見ておきましょう。
参考ページ:
なぜWebアプリケーションは動くのか
6. データベース
ある程度動くプログラムが書けるようになったら、情報を保存するためのデータベースについて学びましょう。ユーザーのログイン機能を作る時もメールアドレスやパスワードの保存が必要です。
データベースを操作するための言語としてSQLがあります。まずは、オープンソース・ソフトウェアの「MySQL」あたりから使い始めるのがよいでしょう。他にもRuby on Railsのデフォルトで使われるSQLiteなどもあります。コマンドをいちいち覚えるのは大変ですので、調べながら使うことをおすすめします。
参考ページ:
非エンジニアでも知っておきたい!データベース・MySQLの基礎
データベースとは【初心者のための超基礎】
7. Webアプリケーションフレームワーク
本格的なWebアプリケーションを作るために必要な機能は様々ありますが、あらかじめ必要機能をまとめているフレームワークがほとんどのプログラミング言語にあります。フレームワークというだけあり、フレームワークの作法にしたがって開発すれば無駄な手間なくWebアプリケーションを作ることができます。
Rubyの場合はRuby on RailsやSinatraというフレームワークがあり、PHPにはCakePHPやFuelPHPといったフレームワークがあります。
Ruby on Railsは日本語に対応したチュートリアルサイトも充実しているので、それを見ながらまずは動かしてみるのがいいでしょう。動かすことができたら、自分でどう作ればいいかを考えてみることをおすすめします。そうすることで、徐々に応用ができるようになるそうです。
参考ページ:
Ruby on Rails入門に最適のチュートリアルサイト7選
初心者でもできた!Ruby on Rails開発環境の構築方法(Mac編)
8. 公開
Webアプリケーションを作れるようになったらいよいよ公開です。方法はたくさんありますが、外部のレンタルサーバーを借りてアプリを置くのが一般的です。
他にも、Herokuを使って簡単に公開する方法もあります。Herokuは、PaaS(Platform as a Service)と呼ばれるサービスで、アプリケーションを実行するためのプラットフォームです。Ruby on Railsで作ったアプリケーションはHeroku上で簡単に動かすことができるため、独自ドメインを割り当てて、Herokuでサービスを運用することも可能です。無料でも使えるので、最初はHerokuで試してみてもいいかもしれません。
Linuxをいじって勉強するならさくらVPS、本格的にWebサービスを運用したいならAWSを使ってみましょう。
参考ページ:
HerokuでRailsアプリを公開する方法
9. セキュリティ
Webサービスを公開する以上は、何かしらの攻撃を受ける可能性があります。そのため、攻撃でどんな被害があるか、どう対策すればいいかは知っておく必要があります。このあたりはまとまって学ぶ必要があるので、書籍を読むのがいいでしょう。
10. リーダブルコード
最初はコードをただ書くだけになってしまいがちですが、自分で書いたコードであってもすぐに意味がわからなくなることがあります。
書籍「達人プログラマー」を書いたデビッド・トーマスがこんなことを言っています。
いいコードの条件はただ一つ、変更しやすいことだ
コードの読みやすさ、すなわち可読性はこの変更のしやすさの重要なファクターです。
そんなコードの読みさすさを学ぶ書籍がこちらです。後ほど紹介するリブセンスのスライドでも、繰り返し読んでコードを見返してもらうためにおすすめされていました。
さいごに
ここまでプログラミングを独学で進める前提で紹介してきましたが、より効率的に学ぶにはメンターをつけるという手段もあります。リブセンスが公開している「人は一ヶ月でエンジニアになれるのか – 詳細解説」の資料でもメンターをつける重要性が紹介されています。
この資料ではメンターをつけることで、教材を選んでもらえる、質問することで躓いている時間をなくすことができる点をメリットとしてあげていました。身近にメンターをしてくれる人がいればお願いすることをおすすめします。
ぜひこの記事を参考にプログラミングの勉強を進めてみてください。
[お知らせ]TechAcademyでは、Webサービスを1人で開発できるまでのスキルが身につくオンラインブートキャンプを開催しています。現役エンジニアのパーソナルメンターが毎日の学習をサポートします。Ruby on Railsを使いHerokuで公開するまでを学習するので、本記事の内容は網羅されています。