ビープラウドの 清水川貴之( @shimizukawa )さんが監訳、清水川貴之さんと新木雅也さんが翻訳した「独学プログラマー」を読みました。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログを見る
書籍の概要
著者のコーリー・アルソフは、大学卒業後(大学では政治学を専攻)、独学でプログラミングを学び始めました。1年の独学後、eBayでソフトウェアエンジニアとして働き始め、そのあともシリコンバレーのスタートアップでプログラマーとして働いています(2017年時点で28歳。インタビュー: "独学プログラマー" コーリー・アルソフ 【PyCharm Blog 翻訳】より )。
「独学プログラマー」は、仕事でプログラマーになったり、独学でプログラミングを学ぼうとする同じ立場の人たちに向けて書かれた書籍です。
仕事で通じるプログラマーになるために、必要な技術的知識(プログラミング、Python、オブジェクト指向プログラミング、アルゴリズム、ツールなど)、プログラミングの心構え、プログラミングを学ぶための情報源、仕事の選び方、面接の受け方などが自分の経験をもとに書かれています。
おすすめしたい人
以下のような方々におすすめします。
- 仕事でプログラミングをできるようになりたいひと
- プログラマーとして仕事を始めたばかりで、さらにスキルを高めたい人
- プログラミングの概念、用語などを復習し、理解を深めたい人
- プログラミングを教える立場の人
- プログラミングの課題がほしいひと
本書の特徴
私が本書を読み進めていく中で感じた特徴をいくつかあげてみます。
説明が簡潔で、プログラミングへの理解を深めやすい
本書を読んでいて一貫して感じたのは説明がわかりやすいということです。
本書では、説明に新しい概念や用語が登場した時には、以下のように書かれています。
XXX(概念・用語。太字で記載)とは〜(説明)です。
そして、概念・用語の説明は章末に用語集にまとめられています(用語集のメリットについては後述)。
たとえば「関数」は以下のように書かれています。
この章では関数について学びます。関数とは、入力値を受け取り、命令を実行し、出力値を返すまでの複合文のことです。
概念や用語の初出は太字で記載されていて、重要なことだと見た目ですぐにわかります。
「簡潔でわかりやすい説明+章末の用語集」という構成で、初学者も読んでいて迷子にならず理解できるようになっています*1。
用語集で概念を繰り返し復習し知識を定着できる
プログラミングを学ぶ時に、概念や用語などの理解は重要です。
プログラミングでは、それらの概念や用語を活用しながらコーディングしていくからです。
プログラミングを学び始めたばかりでは、プログラミングの概念に対する理解が定着せずに「あれ?これはなんだっけな」と、立ち止まることもしばしばです。
また、基本概念の理解が曖昧なままにプログラミングに取り組み、プログラムが動いたとします。
しかし、なぜ動いているのかを理解していない状態では、プログラミングへの理解が浅かったり、学習の進みが遅くなってしまいます。
本書の用語集を繰り返し確認することで、プログラミングの基本概念に対する理解を深め、知識を定着させることができるでしょう。
文法を学んだ後のステップアップにちょうど良い課題が用意されている
プログラミングの概念や文法を学び、プログラムの実行方法を覚えたあとは、実際に何かをつくってみるのがスキルアップの近道です。
しかし、いきなりライブラリやツールやプロダクトをつくるのもハードルが高いですし、何をつくって良いのかわからないこともあるでしょう。
本書では、以下のようにプログラミング課題を用意しています。
各章末:「チャレンジ」
章内で学んだことを少し発展させたプログラミング課題。学んだ文法で他のことを実行してみる
各Part末:「知識をひとつにまとめる」
Part内の各章で学んだ内容を、組み合わせて実践的なプログラムをつくる
用意されている課題は以下のとおりです。
Part1:ハングマン
- 目的:学んだ文法を組み合わせアプリケーションをつくる
- 内容:ループ、文字列マッチ、リスト、関数などを使い、文字列を予想するゲームをつくる
Part2:戦争(War)というカードゲーム
- 目的:オブジェクト指向プログラミングの概念を体感する
- 内容:Card、Deck、Player、Gameというクラスをつくり、相互に呼び出し合う
Part3:Googleニュースをスクレイピング
- 目的:プログラミングの強力さ、便利さを体感する
- 内容:スクレイピングでWebの情報(Googleニュース)を自動で収集する
本書に用意されている課題は、シンプルでありながら楽しい内容で、かつプログラミングの強力さや便利さを体感できる内容です。
従って、プログラミングの概念や文法を学んだあとの次のステップには、取り組みやすく、かつ実践的な課題ではないでしょうか。
興味のある方は取り組んでみてください。
プログラマーとしての心構えや考え方を学ぶことで職業意識が高まり、仕事の質があがる
プログラマーとして良い仕事をし続けるには、プログラミングスキルや知識だけでは足りません。
少しでも良い仕事をしよう、スキルを高めようという向上心や自分の仕事への誇りが、日々の仕事の質を上げてくれます。
本書では各章のはじめに、プログラマーやプログラミングに関する名言が書かれています。たとえば、以下のようなものです。
- 口ではなんとでも言える。コードを見せなさい。--- Linus Torvalds(リーナス・トーバルズ)
- 神話と伝説の魔法は我々の時代に現実のものとなる。呪文を正しくキーボードに入力すれば、ディスプレイに命が宿り、これまでに見たことがないものが示されるのだ ---Frederick Brooks(フレデリック・ブルックス)
これらの名言を自分の仕事や経験と照らし合わせることで、プログラマーとしての職業意識が高まり、仕事に対する誇りが生まれることでしょう。
仕事としてのプログラミングを強く意識した本書ならではの内容といえるでしょう。
また、23章のプログラミングのベストプラクティスに書かれている以下のような考え方も身につけていくと、プログラマーとしての仕事の質を高めることにつながるでしょう。
- コードを書くのは最終手段
- DRY
- 直交性
- どのデータも1か所で定義しよう
- 1つの関数には1つのことだけをさせよう
- 時間がかかりすぎるなら、たぶん何か間違えている
- 最初に良い方法で実装しよう
- 慣例に従おう
- 強力なIDEを使おう
- ロギング
- テスト
- コードレビュー
- セキュリティ
独学でプログラミングを学ぶために
プログラミングを身につけたい人にとって「プログラミングスキルをどのように学べばよいか?」「どのように仕事で通じるプログラミングができるようになるのか?」ということは大きな課題です。
本書の上記のような特徴により、これらの課題をクリアするための、プログラミングの学び方を本書は示しているといえるでしょう。
また、日本語版の独自コンテンツとして「継続して学ぶために」という補章で、基本知識やノウハウを学んだ上で、さらに独学するために役に立つ読みものや、Q&Aサイト、コミュニティ、学習サイトが紹介されています。
厳選された内容になっているので、プログラミングスキルを高めたい人は参照するとよいでしょう。
PyQとのコラボ
オンラインPython学習プラットフォームPyQに「独学プログラマー」とのコラボコンテンツを用意しています。
書籍内にコラボコンテンツのキャンペーンコードが記載されているので、登録してチャレンジしてみてください(3日間無料です。クレジットカードの登録が必要です)。
PyQ内の独学プラグラマーコラボコンテンツは、監訳者の清水川さん作成です*2。
最後に
現代は何かの仕事をするのに、さまざまな知識、技術が必要です。
それらの全てを人に教わることはほぼ不可能です。
したがって、プログラミングにかぎらず、知識や技術を独学で身につけていくことが求められます。
そして、独学するための書籍や情報は、インターネットや書籍を始めとしてここ数年で増えてきました(全ては無料ではありません)。
したがって、知識や技術が独学で身につくかどうかは、その人が本気でやるかやらないかにかかっているのではないでしょうか。
独学でプログラミングを身につけ、職業としてプログラマーになった経験をもとに書かれた本書は、知識や技術を独学で学ぶという視点で読んでみても新たな発見があることでしょう。
また最初に書きましたが、本書は説明が簡潔でとても読みやすく且つわかりやすいことが特徴です。
著者がそのように心がけたことももちろんあるでしょうが、監訳者、翻訳者、そしてレビューに関わった方々の力も大きいのではないでしょうか。
「独学プログラマー」は、仕事でプログラミングができるようになりたいという人への道標となるおすすめの1冊です。