はじめに
散々擦られたテーマで、本やブログなど既に沢山情報はありますが、今現在の自分の考えについて一旦まとめてみます。
未経験者の方はかなりの確率で何をどうやって学習すればいいのかわからないと悩んでいる人が多いと思います。少なからず自分もそうでした。
まず一番最初に突き当たる壁として「未経験者から初級者への壁」がありますが、自分の場合どうやって未経験者から脱却したのかを、初心に帰って思い出してみました。
何を学習するかについて
一言にITエンジニアといっても様々な技術があります。
もし既にIT企業に入社しているなら、何を学習すればいいのか上司や先輩に聞くのが一番です。
会社や案件によって使用する言語やツールが違うので、業務に沿って学習できるのは効率がいいです。
もしくは周りにエンジニアの知り合いがいるならその人に相談するのもいいでしょう。
既に興味のある技術ややりたい事があるなら、それを選ぶのもひとつです。
未経験者におすすめの言語
もしまったくの未経験で、やりたい事もまだわからない、エンジニアの知り合いもいない、という状態なら自分だったら以下をお勧めします。
- ExcelVBAもしくはJavaScript
- SQL
選んだ理由ですが、ExcelVBAとJavaScriptに関しては、未経験者が最初に挫折するであろう「プログラムを動かすための環境構築」が、ほとんど必要ないという点です。
SQLはデータベースを操作する為の言語で、プログラミング言語とは性質が異なります。実務では、プログラミング言語とデータベースはセットである事が多いので、最低限理解しておいて損はないです。
最初にこれらの学習をし、そのあとは自分がどんな事をしたいかによって、他の言語の学習を進めていけばいいでしょう。
主な言語について
いくつか主な言語と、その特徴について挙げていきます。
プログラミング言語
コンピュータプログラムを記述するための形式言語です。
ざっくりですが、上の方に比較的簡単に記述できる言語を、下の方に厳密に記述する必要のある言語をまとめました。
ウィキペディア プログラミング言語一覧 から抜粋しました。
- VBA
- Officeシリーズに搭載されている言語。手軽にプログラミングが始められる
- JavaScript
- PHP
- サーバーサイドで動的なWebページを作成するための機能を多く備えている言語
- Ruby
- まつもとゆきひろ(通称: Matz)により開発された言語
- Python
- 機械学習やAI開発で使用される事の多い言語
- Swift/Objective-C
- Apple製OS上で動作するアプリケーションの開発に用いられる言語
- C#
- Microsoftによって開発された言語。Javaと文法が似ている
- C
- 歴史が長い言語で汎用性が高いが、初心者には難解。ハードウェアを直接扱うのに向いている
- C++
- C言語から派生した言語。C言語の特徴であるハードウェアを開発するための言語としても、複雑なアプリケーションソフトウェアを開発するための言語としても使用可能
- Java
- Webアプリケーションで使用される事の多い言語
マークアップ言語
視覚表現や文章構造などを記述するための形式言語です。
- HTML
- Webページを表現するために用いられる言語
- CSS
- HTMLなどの要素を修飾するための言語
データベース言語
データベースを扱うためのコンピュータ言語の事です。
- SQL
- データベースを扱う為の言語。データベース製品によって少し書き方が異なる
学習方法について
次に、実際に自分が行った方法を中心に、いくつか学習方法を挙げます。
eラーニングサービスを使って学習する
eラーニングサービスとは、パソコンやスマートフォンなどの電子機器からインターネットを利用して学習する形態の事です。
動画の講座や、ゲーム感覚で学べるものもあります。
まずはこういったサービスを利用して、取っ掛かりをつかむのがお勧めです。
自分の場合は、ドットインストールというプログラミング学習サービスで無料のJavaScript入門の講座を受講しました。
ドットインストールは、プログラムを動かすための環境構築から動画で説明してくれるので、なにも分からない状態から学習する時に役立ちました。
1つの言語を一通り学習する
どれか1つの言語をある程度習得すると、他の言語でも置き換えて考える事ができます。
自分の場合は、先輩に勧められてJavaScriptである程度取っ掛かりをつかんでから、Javaを学習しました。
プログラムの構文やオブジェクト指向についてなど、基本はこの本で学習しました。
スッキリわかるJava入門
Javaを使ったWebアプリケーション3についてはこちらの本で学習しました。が、こちらは途中までしか読みませんでした。
スッキリわかるサーブレット&JSP入門
実際に何か作ってみる
ある程度学習が進めば、どんな簡単な物でもいいので、自分で実際に何かつくってみる事をお勧めします。
自分の場合は、ExcelVBAで作業を自動化してみたり、JavaScriptでブラウザに文字を表示してみるところから始めました。
そのあとJavaを学習して、Javaを使ってデータベースにデータを登録&参照するシステムを作りました。
知識をインプットするだけでなく、自分で課題を考えて手を動かしてアウトプットする事が重要です。
課題の例 JavaScript
ループを使って、ブラウザ上に1~10まで1つずつ■マークを増やして表示する。
課題の例 Java
CDの情報を登録・検索するWebシステムを作る。
2通りの学習方法
個人的に、学習方法は、大きく2通りあるのではと考えています。
自分が勝手に呼んでいるだけなのですが、「逆引き学習」と「体系的学習」の2通りです。
- 逆引き学習 … やりたい事を実現する為に、知識を身につける
- 自分がやりたい事を実現するために、本やネット調べる事によって、結果知識が身につく
- 体系的学習 … 技術書などで、体系立てた知識を身につける
- 技術書を読んだり、試験勉強をする事によって、体系的に知識を身につける
この2つの学習方法をバランスよく取り入れて学習できればよりいいのですが、何もわからないうちから技術書を読んで1から学習するのはハードルが高いと感じる人が多いでしょう。
まずは、とにかく手を動かして実際にやってみることが重要です。どんな小さな簡単な事でもいいので、自分で課題を考えて、それを実現するために手を沢山動かすのが一番です。
ある程度理解出来てきたら、改めて1から基礎を学ぶとより理解が深まります。
自分が行った学習について
参考になるかわかりませんが、自分がいままでどのように何を学習をしていたのかを時系列でまとめてみました。
時系列の後半は「未経験者から初級者になる」という本題からは外れていますが、折角なので直近までまとめています。
- HTML/CSS/JavaScript
- 趣味でHPを運営していた。見よう見まねのコピペだったので、ちゃんと理解はしていなかった。
- ExcelVBA
- 事務の仕事でExcelの単純作業に嫌気がさし、知り合いのエンジニアに教えてもらい処理を自動化するプログラムを作成した。
- JavaScript
- 本格的にIT企業へ転職を考え始めた時期。インターン先の先輩の勧めで、まずはJavaScriptの学習をした。
- 学習に使用したツール
- Java/JSP/サーブレット/SQL
- 何か1つプログラミング言語をしっかり学習したほうがいいとの事で、先輩の勧めでJavaを学習した。本を読み、自分でWebアプリケーションを作成した。
- 学習に使用した本
- SQL/Access
- AccessやSQL Serverを使用したデータ分析の現場に参画した。
- 学習に使用した本
- Accessの本は先輩から借りたのですが何を借りていたか忘れてしまいました…
- SQLポケットリファレンス
- bat/VBScript
- 業務効率化の為にbatなどを作成した。
- 学習に使用した本
- PHP
- 趣味で運営しているHPを動的に作り変えたり、Twitterのbotを作成した。
- 学習に使用した本
- 基本情報技術者試験
- 基本的なITの知識を身につける為、学習した。
- 学習に使用した本
- データベーススペシャリスト試験
- データベースに関係する固有技術を身につける為、学習した。(まだ受かってないです…)
- 学習に使用した本
- SQL Server
- SQL Serverの内部動作を理解する為、学習中。
おわりに
色々と書きましたが、もし興味を持っている技術があるのなら、その学習をするのが一番です。
つらい、やりたくない学習をやっていても効率が悪く身に付きにくいです。
まずは楽しいと感じることから始めて、取っ掛かりをつかみましょう。


