新人ITエンジニアにおすすめの勉強法!読んでほしい技術書10選!
開発チームの下田です。
10年前、私が新人のころに勉強するときに辛かったことが、「どの技術書を読んでいいかわからない」ことでした。
IT系ではない学部を出ていたので、先輩に聞いた本やネットに書いてあるおすすめ本を読んでも、難しすぎてまったく理解できないこともありました。
また、最初の方はプログラミングの入門書から探そうとしていたのですが、実際にITエンジニアの仕事に携わってみると、プログラミング入門書以外にも必要な知識がたくさんありました。
そこで未経験でも読みやすく、どんな場合でも役に立つ基礎知識を蓄えられる技術書をセレクトしました。
できれば全部読んでほしいですが、いきなり10冊というと積んでしまう可能性が高いので、上から選んでいくとよいと思います。
Linux コマンドライン
入門者のLinux 素朴な疑問を解消しながら学ぶ
ITエンジニアなら、GUIよりコマンドラインを使うべきです!
コマンドラインは黒背景白文字の英語がずらずら流れてきて、とっつきづらい印象があるかと思います。たいていのことはマウスで操作するGUIでもなんとかなってしまうので避けて通りがちです。
見た目とは裏腹にCUIは単純です。その割にすごく便利なので、使わないのはもったいないです。コマンドラインはITエンジニアが行う仕事だと、多くの場面で効率が良くなります。
コマンドラインでの操作は文字を入力するだけです。文字だけということは、操作のほとんどはコピペで済んでしまいます。自分がやったことをメモしたり誰かに手順を伝えるときも、単純なテキストファイルやslackなどのチャットツールで済ませられます。GUIは簡単なように思えますが、操作を伝えようと思うと難しいです。教えるのが難しいということは、教わる方も苦労することになってしまいます。インターネットで検索できるプログラミング系の記事もコマンドラインでの操作説明が多いです。コマンドラインを覚えると学習効率を上がるので、ITエンジニアを志すのであればコマンドラインを覚えたほうがいいでしょう。
こちらの本はそんなLinuxのコマンドラインを基礎から丁寧に解説しています。基礎だけにとどまらず、コマンドラインの良いところを発揮した使い方も教えてくれます。
コマンドラインでは複数の操作を一つにまとめて、繰り返し操作がすごく簡単になる「ワンライナー」というテクニックなど、使いこなせるとかっこいいです。
もし普段Windows10をお使いなら、こちらの本では紹介されていませんがWindows上でLinuxが動くWindows Subsystem for Linuxが用意されてますので、そちらで勉強すると良いと思います。
プログラミング
退屈なことはPythonにやらせよう――ノンプログラマーにもできる自動化処理プログラミング
もし実際にプログラミングをやったことがないなら、一つは経験したほうが良いです。
「最初に触れるプログラミング言語は何が良いか?」という議論をときどき見かけますが、あまり意味がないと思います。プログラミングは手段であって、目的ではありません。どんなことをやりたいかのか、目的によって手段を選ぶべきだと思うからです。
やりたいことが明確な方は、それにあった本を選択していただければと思います。
とはいえ、なんとなくプログラミングをやってみたいという方もいらっしゃるはずです。そういう方にはこちらの本がおすすめです。
プログラミングとPythonの基礎を学べると同時に、プログラミングの基礎だけで実用的なプログラムの作り方を学べます。実用的なプログラムを書いてみると、プログラミングはどういうふうに使えるのか理解できます。知ると、「こんなことができるんじゃないかな?」とプログラミング的な発想ができるようになります。
HTML/CSS
きれいな画面を作るのは、プログラミングの醍醐味の一つです。ぱっと見ですごいものができると達成感がありますし、知り合いに自慢できます。やる気が出ます。
画面を作る方法はいろいろあるのですが、おすすめしたいのは普段インターネットで見てるようなWEBサイトを作れるHTML/CSSです。HTML/CSSは表示する内容をテキストで表すので、プログラミングと相性が良いです。
このテキストはチュートリアル形式でHTML、CSSを学べます。コードを追加すると見た目にどんな変化があるのかを確認しながら進む作りになっています。一つ一つのステップは簡単なことを丁寧に書いてあるので、わかりやすいです。
最後まで通してやってみると、きれいな見た目のWebサイトをすべて自力で作り上げています。
ネットワーク
ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識
ネットワークはITエンジニアが求められるスキルの中で、最も学びづらいと思います。何かできるようになるまでに、たくさんのことを覚えなくちゃならないです。一つのことを覚えてもできることが急に増えるわけではく、地道な学習が必要です。その割に家庭用のネットワーク機器はマニュアル通りに繋げばなんとなく動いてしまうところもあり、覚えなくても目的は達成してしまったりします。
とはいえ本当にすごいシステムを作るには、やっぱりネットワークの基礎知識が必要になってきます。
ネットワークを学ぶのに困るのは、たくさんのことを覚えなくちゃならないのに、どこから手をつけていいかわからないところです。ブラウザでページを表示しようとしたときに、ネットワークで一体なにが行われているのか?を解説しています。普段使っているものなので、具体的にイメージしやすくネットワークを勉強するきっかけになると思います。
3分間ネットワーク基礎講座
ネットワークは本当に覚えなければならないことが多いです。広い範囲のことを、浅く広く学べるように3分程度で読める量に区切って解説しています。
マスタリングTCP/IP 入門編
全体像を把握するにはネットワークの広い範囲を解説している技術書が良いですが、きちんと理解するにはものたりないものがあります。本格的に勉強するなら、各分野について解説している技術書を読むべきだと思います。とはいえ全部紹介しているときりがないので、一つだけ挙げます。
インターネットの根幹になっているTCP/IPについての本です。TCP/IPはインフラエンジニアはもちろん、アプリケーションエンジニアも必要になる場合があるので、きちんと理解して損はないかなと思います。
バージョン管理
わかばちゃんと学ぶ Git使い方入門
プログラミングを企業で仕事としてやる場合、必ずチームで行います。チームでプログラミングするときは必ず当たる問題がいくつかあるのですが、そのうちの一つがソースコードの管理です。誰が、いつ、何を、どんなふうに、どういう理由で修正したのか管理しないとなりません。バグが見つかったときの手がかりになったり、万が一同じところを別の人が同時に修正してしまったら上手く統合しなければならないからです。
履歴の管理をするソフトを「バージョン管理システム」と呼び、2018年時点で最もメジャーなものがGitです。Gitは慣れればすごく使いやすいのですが、初めて触ったときは独特の動きをするのでややこしく感じました。
チームで開発していないと、なぜ必要なのかイメージしづらく、退屈に思えるかもしれません。この本では、どんな場合にバージョン管理が必要なのかを漫画で説明してから、解説という流れになっています。
解説では実践形式になっているので、どんな場合に必要でどうやって使うかを覚えられます。
チームで作業したことがなくgitは初めてという方、使ってはいるがよくわからない動きをすると思っている方におすすめです。
この本ではSourceTreeというGUIのツールを使用していますが、巻末にも書いてあるようにコマンドラインのほうがgitの良さを活かせるので、本を読み終わったらぜひコマンドラインにも挑戦してほしいです。
ソフトウェアエンジニアリング・開発プロセス
ずっと受けたかったソフトウェアエンジニアリングの授業1
企業でプログラミングする際に必ず当たる問題の一つに「いくらかかるか事前にわからないといけないが、正確に見積もりできない」ことが挙げられます。
企業で働いている以上、会社から給料をもらいます。つまりプログラミングに時間をかければかけるほど、お金がかかります。
企業は営利目的で活動しているので、いくらかかるのかわからないと判断できません。5万円くらいなら「すぐやってよ」となるし、100万円くらいなら「ちょっと考えてみる」となるし、1億円くらいなら「ストップ」となります。
しかし極端なことを言うと、プログラミングにどれくらい時間がかかるかなんてやってみなければわかりません。半年かかるかもしれないものをスーパープログラマが一晩でやってくれました!ということもあるし、2,3日だろうと思ってたものが2ヶ月かかるなんてこともあります。
そんな中でも決まりに沿っていけば、ある程度近い金額は出せます。また、開発を進めてみたら最初に見積した金額が間違っていたかどうかを判断することもできます。
一通りの知識をつけておくと実際に開発プロジェクトに入ったとき、リーダーやマネージャーが何を求めているのか理解できるのではないかと思います。
データベース
おうちで学べるデータベースのきほん
データベースというのは、名前の通りデータのベース(基地)です。
なのでデータがないとあまり役に立ちません。個人で勉強するは、少しやりづらいかもしれません。
企業では大量のデータがあるので、大活躍します。きっとデータベースを使いこなせればどんなこともなんとかなります。
データベースは先に勉強するより、実際に使ってみてからの勉強したほうが理解しやすいと思います。なのでここではあまり説明せず、業務として使うようになってから読むことをおすすめします。
会計・簿記
スッキリわかる 日商簿記初級
前述の通り、企業は営利目的で活動しています。どこの企業でも必ず帳簿を付け、お金がどうなっているのか管理します。そしてそれはあらゆることに対して行われます。もしあなたが面接に行ったのであれば、面接でもらったパンフレット代や面接官の人件費、就活サイトへの広告料などが帳簿に記入されます。帳簿に記入するので簿記です。
企業での活動の場合、プログラミングも例外ではなく帳簿に記入されます。働けば働いただけ人件費として、ソフトウェアができれば資産として、作ったソフトウェアが売れたら売上として記入されていきます。
技術書かと言うと微妙なところですが、あえて簿記をおすすめするのには3つ理由があります。
1つは社会人としての常識のためです。くどいようですが、企業では営利目的で活動しています。経理はもちろん、営業も、エンジニアも、取引先の企業も、一般企業はすべてお金を中心に動いています。
もう1つはプログラミングの題材として最適です。仕様がかなり明確に決められていて、複数のフェーズに分かれてデータの流れがあります。ある程度プログラミングできるなら、読みながらどう実装するか考えると楽しいです。
最後の1つは簿記は優れたアルゴリズムだからです。企業はあらゆることを簿記というアルゴリズムで変換し、お金という絶対的なデータとして取り扱います。あらゆることを抽象化しデータにする。これってプログラミングの究極の目的ではないかと考えています。
終わりに
ここで紹介した技術書はどれも理解しやすく、最初の一歩を踏み出すのに最適だと思い選びました。
ITエンジニアが求められるスキルは異様に多いです。今回紹介しただけでも10冊もありますが、全部やっても初歩しか学べず、思い通りに開発できるようにはならないと思います。しかしプログラミングは思い通りにならなくとも、とてもとても楽しいことなので、最初の一歩さえ踏み出してしまえば楽しみながら知識が増えていきます。初歩を身につけると、他の技術書やWebに置いてあるドキュメントを取捨選択しながら読めるようになります。