2018年2月の発売以来、プログラミング書籍としては異例ともいえる1万部超を果たすほど広く読まれている『独学プログラマー Python言語の基本から仕事のやり方まで』。その著者であるコーリー・アルソフ氏が来日した機会をとらえ、訳者である清水川貴之氏と新木雅也氏を交えて2018年6月15日にインタビューを行った。独学プログラマーとして活躍するために必要なことをアルソフ氏自身の経験を踏まえてお話いただいた(関連記事「独学プログラマーのススメ」)。

左から『独学プログラマー』著者のコーリー・アルソフ氏、訳者の清水川貴之氏と新木雅也氏
左から『独学プログラマー』著者のコーリー・アルソフ氏、訳者の清水川貴之氏と新木雅也氏
[画像のクリックで拡大表示]
コーリー・アルソフ(Cory Althoff)
米クレムソン大学で政治学を専攻、卒業後にシリコンバレーに住みながら独学でプログラミングを身に付ける。一年後にeBayのソフトウェア・エンジニアとして就職。その後、シリコンバレーにて複数のスタートアップに参画し、主にフルスタック・エンジニアとして活躍。以下で本書などに関連する情報を発信中。
https://theselftaughtprogrammer.io/
https://medium.com/@coryalthoff

――最初の質問として、今どのような仕事をされているか、教えてもらえますか。「独学プログラマー」としてさまざまなIT企業で働かれたのち、現在は何をされているのでしょう。

アルソフ氏:自らの会社「セルフトートメディア(Self-Taught Media)」を約2年前に興しました。私の最初の本となる『独学プログラマー』を執筆したのち、直近6か月間は集中してウェブコースを作成していました。今後、セルフトートメディアを通じて、プログラマー養成講座やウェブデベロッパー養成講座をはじめとするオンラインコースを提供していく予定です。

独学プログラマーになるために必要なこと(画像)
[画像のクリックで拡大表示]

プログラマーになるための「全て」にニーズ

――『独学プログラマー』(ここでは原著の" The Self-Taught Programmer: The Definitive Guide to Programming Professionally "のこと)は、例えば米アマゾンで圧倒的高評価を得る(165レビューのうち、5つ星が109を占める。2018年6月30日現在)など、広く読者に受け入れられています。その理由をご自身はどのようにとらえていますか。

アルソフ氏:実は、ここまで受け入れられるとは、本書を執筆していたときは全く想像していなかったです。今になってみれば、市場に本書のニュースがあったというのが一番の理由だと思います。すでにPythonの本はたくさん発行されており、特に入門者向けの本は多いです。ただ、プログラマーになるための「全て」をカバーする内容の本は、これまで存在しませんでした。それが、『独学プログラマー』がこれだけ人気を得た原因だと考えています。

――プログラマーになるための「全て」をカバーするために、どのような内容構成にしたのですか。

アルソフ氏:内容構成を決めるのは、とても難しかったですね。最終的には、次のようにしました。第1部でPythonプログラミングの基礎、第2部でオブジェクト指向プログラミング入門、第3部で各種ツールの使い方、第4部でコンピューターサイエンスの基本、そして第5部で仕事の就き方、やり方までをカバーしています。これらの内容を入門者向けにどこまで伝えるか、そのバランスに苦労しました。特にデータ構造とアルゴリズムを扱ったコンピューターサイエンスの基本では、どこまでを含めるか、その判断が難しかったです。

自らの経験や先行読者からのフィードバックを反映

 そこで、とにかくまずは自らの経験、例えばeBayで働いていたときの経験などに基づいて、読者がどこまで求めるかを真剣に検討しました。eBayにいたときに自分が困ったこと、知りたかったことは、例えば、シェルや正規表現の使い方でした。そのため、第3部でそれらを盛り込んだのです。
 同時に、内容構成をまとめるときには、「読者が本書を最後まで読み切れること」を重視しました。読み切れるように、難易度を考慮したり、つまらなくならないように工夫しました。

独学プログラマーになるために必要なこと(画像)
[画像のクリックで拡大表示]

――各章のはじめには、有名人の言葉が巻頭言として挙げられており、やる気が高まるようになっていますね(例:「独学こそが唯一の教育である、私はそう強く信じている。── アイザック・アシモフ」「私は本からすべてを学んだ。── エイブラハム・リンカーン」)。これは読者にも好評のようです。また、各章に用語集や実際に手を動かして解くチャレンジ問題(章末にある課題)があったりして、知識をきちんと身に付けながら進めるようになっていますね。

独学プログラマーになるために必要なこと(画像)
[画像のクリックで拡大表示]

アルソフ氏:私は読書が好きなので、さまざまな本を参考にして章の構成や内容を検討しました。また、Facebookでグループを作って、できた原稿を先行して読んでもらい、感想を聞いたりしました。そのグループでの意見には例えば、「もっとチャレンジ問題をやりたい」というものがあったので、チャレンジ問題を増やしたりしました。

プロジェクトに取り組んでコードを書こう

――本を離れた質問をさせてください。独学プログラマーとして成功するためには何が必要だと思われますか。

アルソフ氏:とにかくプロジェクトをたくさんやることだと思います。私はいろんなプロジェクトに取り組んできました。一例ですが、Airbnbのサイトをスクレイピング(情報の抽出)して、米国内のどの町のどのような物件に投資するのが一番よいかを判断するプロジェクトなどです。これは個人で手がけたものですが、とてもおもしろい経験でしたね。興味を持ったプロジェクトをたくさんこなしながらコードをたくさん書くこと――。これが一番学びにつながるのではないかと思います。

――独学プログラマーのメリットとデメリットについてはどのようにお考えですか。

アルソフ氏:独学プログラマーの大きなメリットは、教育費用がかからないことです。米国では、大学の教育費用が高騰し、社会問題にもなっています。大学に行くことで数万米ドル(日本円で数百万円)のローンを抱えて卒業することがあるのです。独学することでこの費用がかからない、あるいはかなり安く済ませることができます。
 独学は時間の節約にもなります。大学では、プログラマーになるためには不必要なコースも取らざるを得ない場合があるからです。

独学プログラマーになるために必要なこと(画像)
[画像のクリックで拡大表示]

 さらに、独学することで「常に自分で考える」スタンスを学べるのではないかと思います。プログラマーになったときには、自ら問題を見つけて解決していく必要に迫られます。その姿勢を身に付ける準備として、独学はいい機会になるでしょう。
 一方のデメリットは、就職に関してです。大企業で特徴的なのですが、コンピューター科学やプログラミングの学位を持った人材を欲しがることが多く、そこでは独学プログラマーは選考外になってしまいます。ただ、最近はこうした傾向がどんどん変わってきており、これらの学位を持っていなくても、バックグラウンドを考慮して選考してくれることも多くなってきています。なので、不利な点はかなり薄れてきているのではないでしょうか。
 関連して付け加えると、コンピューター科学の勘所を自ら学ぶことはとても大事です。独学プログラマーだと、周りの学位を持っている人たちと競ったときに、コンピューター科学の領域の自らの知識が足りないのではと思いがちです。データ構造やアルゴリズムを基礎からきちんと学ぶことで、自分のスキルに自信が持てるようになるでしょう。

ジュンク堂書店池袋本店でトークセッションを開催
 ジュンク堂書店池袋本店にて2018年6月18日、本インタビューと同様にアルソフ氏と清水川氏、新木氏が参加して、来場者を対象にしたトークセッションが開催された。
 トークセッションでは、本インタビューの一部内容に加え、ソフトウェア・エンジニアとして働くことの意義や初心者にとって学びやすいPythonの魅力といった話題、さらには独学プログラマーとして継続してスキルアップしていくための方法などもアルソフ氏から語られた。具体的には、よきメンター(指導者、助言者)を得る、コードレビューをしてもらう、GitHubで実際のコードから学ぶ、ペアプログラミングを行う、という方法を紹介した。加えて、プログラミングを学ぶときには、まずは1つの言語に集中して取り組むことが習得の近道であると強調した。
 アルソフ氏はまた、オススメのプログラミング本として、「新装版 達人プログラマー 職人から名匠への道」(オーム社、2016年)、「退屈なことはPythonにやらせよう――ノンプログラマーにもできる自動化処理プログラミング」(オライリー・ジャパン、2017年)を挙げた。
独学プログラマーになるために必要なこと(画像)
[画像のクリックで拡大表示]

プログラマーになるためのスキル全般を独学できる本

本書は「Pythonだけ」を学ぶ本ではありません。Pythonを使ってプログラミングを紹介していますが、伝えたい内容はPythonに限らない「プログラミング全般」の知識です。Pythonプログラミングの基本に加え、必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。