その本の「はじめに」には、著者の「伝えたいこと」がギュッと詰め込まれています。この連載では毎日、おすすめ本の「はじめに」と「目次」をご紹介します。今日は赤石雅典さんの 『最短コースでわかる Pythonプログラミングとデータ分析』 です。

【まえがき】

 「学問に王道なし」とよく言われます。その昔、当時の超一流の学者であるユークリッドが、プトレマイオス王から「簡単に幾何学を学ぶ方法はないのか」と質問されたのに対して、「王様。幾何学に王道はありません。誰でも一歩一歩学ぶしかないのです」と答えたところから出た故事成句といわれています。

 Pythonプログラミングから出発し、データ分析を学ぼうとするときにもやはり「データ分析に王道はなし」なのでしょうか。僭越ながら筆者はこの問いに対して、「王道はないが、一般道よりはるかに効率の良い高速道路ならある」と考えます。

最短コースでデータ分析ができるようになる3つのポイントとその先のツボ

 では、効率良く「最短コース」で学ぶためのポイントは、どこにあるのでしょうか。筆者が考えるのは次の3点です。

● 学習内容を最低限に抑える:学習対象の知識項目を必要最小限に抑え、相互の関連性に基づき体系的に学ぶ
● 演習問題でプログラミングの実地訓練を積む:抽象的な「要件」を具体的な「実装」に落とし込む訓練を繰り返す
● 開発環境(Google Colab)上の試行錯誤で体得:関数の細かい挙動はトライアンドエラーを繰り返して体験・実験により理解する

 本書が、この3点をどう実現しているか説明します。

 1つめの「学習対象の知識項目を必要最小限に抑え、相互の関連性に基づき体系的に学ぶ」ことはまさに、本書全体の中心的なテーマです。Pythonを使ったデータ分析を学習するときの最大のハードルは、必要な学習量の多さにあります。今までプログラミングの経験のない人にとって、Pythonを学ぶことだけでも相当ハードルが高いのに、データ分析を勉強したい場合、Pythonをマスターした後で、4つも5つもあるライブラリの使い方も学ぶ必要があります。それぞれのライブラリを解説した書籍は数多くありますが、いずれも分厚いものばかりです。これでは意欲がなくなってしまうのも、もっともです。

 筆者は、自身も日々の業務でPythonを使っていますし、大学院などで人に指導した経験も持っています。その経験を通じて、Pythonの文法もライブラリも、機能は多いが、データ分析で本当に必要なものは意外と少ないと思っています。それぞれの領域で本当に必要な機能のみに絞り込んだ上(1)で、機能間の関係性を整理し体系化して、1冊の本にまとめあげれば、それだけで価値があるだろうと考えたのです(2)

(1) 若い人にはわからないかもしれませんが、このコンセプトに対して「英語の『出る単』みたいなものだね」と評してもらったことがあります。
(2) このアプローチは、筆者が過去に執筆して好評をいただいている「最短コースでわかるディープラーニングの数学」とほぼ同じです。

 そして、せっかくこの企画を書籍化するなら、プログラミングの経験がない人でも読み始められる形にしようと考えました。これまでの著書でも付録にPythonの簡単な入門ガイドを含めたことはあったのですが、今回は初めて本格的にPythonプログラミングの入門編を執筆し、これを1章としました。2章はデータ分析で必須の3つのライブラリの解説をまとめました。3章・4章ではデータ分析の本丸のpandas解説と、総まとめの応用分析事例を記載しました。対象範囲を欲張って、本来なら3冊分にもなるような内容を1冊にまとめたため、全体で約400ページと厚い本になってしまいました。しかし、「この本1冊でPythonプログラミングからデータ分析の基礎まで一通りカバーする」という当初の目的は達成できたかと思っています。

 2つめのポイントは、実際の演習で「抽象的な『要件』を具体的な『実装』に落とし込む訓練を繰り返す」ことです。こういう訓練をすることは、データ分析に限らずプログラミング系のスキルの習得に必要不可欠ですが、書籍という形態でこの訓練を実現するのは難しいです。そこで自身の著書では初めての試みとして、各節の終わりに「演習問題」を解いてもらう形式を取ることにしました。

 演習問題の難易度は、該当する節、あるいはそれ以前の節の内容が十分に理解できた方ならギリギリ解ける線を狙いました。演習問題のテーマ選定も、「データ分析にふさわしい実用的で面白いもの」にこだわっています。節ごとの演習問題を制覇した上で次のステップに取り組むようにしてください。そうすることで、特にプログラミング系のスキルを効率良く身に付けられるでしょう。

 3つめはGoogle Colabを使って「トライアンドエラーを繰り返して体験・実験により理解する」ことです。

 本書では、すでに完成されたプログラムを読み込み、順に実行してそれぞれのコードの動きを確認し、最後に演習問題を解いて、自分の理解度を確認するという形で学習を進めます。

 プログラミング言語の学習ではよく「写経」といって、プログラムコードをすべて自分でタイピングして学習する方法を勧められることがありますが、筆者は学習効率が悪いと考えていてお勧めしません。

 それよりは、完璧に動くプログラムを自分で実行し、各ステップでの変数の状態を確認したり、あるいは一部のパラメータの値を変更したりなど、試行錯誤した結果がどうなるか確認する方が、より効率良くプログラミングで重要な概念を理解し学習を進められます。本書で実習の前提としている「Google Colab(3)」はこのような体験・実験をするのに最適な環境です。書籍の中でも一部、「XXの挙動に関しては自分でいろいろと試してみてください」と記載している箇所がありますが、同じような実験を、他の箇所でも自分から試してみたくなったらしめたものです。ぜひ、いろいろな実験を繰り返してプログラミングを体得してください。そのような実験こそが、数多くある関数・メソッドの挙動を最も効率良く身に付けられる方法だと筆者は考えています。

 以上、3つの「効率良く学ぶポイント」を説明してきましたが、本書のテーマである「データ分析」では、それだけでは足りない要素があります。データ分析における最終的な目的は洞察(4)の導出です。

(3) 厳密に言うと、Google Colabは「Jupyter Notebook」や「JupyterLab」として開発された機能をクラウドで提供しているものです。
(4)「洞察」という聞き慣れない言葉が何を意味しているのか疑問に思った読者もいると思います。実はこの言葉は、本書の中心的なテーマであり、その具体的な内容は3章と4章で徐々に説明します。今の段階では「本書の最終目標は洞察の導出」ということだけ押さえてください。

 ただし、このタスクは内容が抽象的なだけに、プログラミングのように体系的にはなかなか学べません。そこで本書では、3章と4章でできるだけ意識して、「この業務要件でこのデータを分析した場合、こんな洞察が得られる」という話を含めるようにしました。このようないくつもの具体例による経験を通して、自分自身のテーマに対しても洞察を導くためのヒントが得られるはずです。

想定読者:プログラミング経験がない読者でも取り組める

 次に本書が想定している読者について説明します。本書は先ほども説明したように3冊分の内容を1冊にコンパクトにまとめている点が特徴です。なので、幅広い層の読者にご活用いただけると考えています。

 最初の読者層は、「プログラミング言語自体を知らないが、データ分析のためにこれから勉強したい」という読者です。1章のPython入門は、初心者がつまずきやすい箇所を1つひとつ丁寧に解説しています。プログラミングが初めてという方は1章を節ごとに時間をかけて丁寧に読み、また、書籍のページを遡って見て構わないので、演習問題も自分で考えて解くようにしてください。このやり方で1章を読了したときには、1章の最初の方で紹介する、難解そうな「階乗計算」のプログラムが簡単に読めるようになっているはずです。

 近年はPythonの実習付きのAI・データ分析系書籍が非常に数多く出ています。筆者の知る限り、そのほとんどはPythonのプログラミングはもとより、NumPy、Matplotlib、pandasなどの必須ライブラリはある程度理解していることが前提です(5)。「Pythonのプログラミングは理解しているがライブラリが理解できていないのでAI書籍の実習コードがわからない」という方が、本書を読んでいただきたい2番目の読者層です。このような読者は、3つの必須ライブラリを解説した2章を重点的に読んでください。約90ページの2章を完全に理解しさえすれば、AI・データ分析系書籍の実装コードは簡単に読み解けるはずです。

(5) かくいう筆者も、過去に出版したAI系書籍は基本的にこの知識を前提にしています。

 3番目の読者層は、「AI関連のライブラリは一通り理解している。pandasも個々の機能はなんとなくわかっている。しかし、データ分析の全体像がつかめず、いざデータ分析をしようとするとどこから手を付けていいかわからない」と考えている方です。本書の3章は、データ分析のタスクを体系的に整理し、タスクと紐付ける形でpandasやseabornの関数を説明しています。このような読者は3章を読了し、理解すれば、悩みがなくなっていくはずです。

 どの段階から出発した読者も、4章の実習内容まで一通り理解できたあかつきには、自分の身近なデータを分析したいという話が出たときに、「このデータに対してXXの方針でアプローチし実装コードはYYにすればいい」といった分析の道筋を自分で考えついた上で、実装コードも組んで結果まで導き出せるはずです。これが、本書の最終的なゴールです。

 本書を最後まで読了した読者にはもう1つうれしい話があります。昨今、どの企業でもDXを推進しないといけない、しかしそれをできる人材がいないということが大きな課題です。DX人材で必要なスキルにはいくつかのカテゴリがありますが、その中で間違いなく大きなウェイトを占めているのが「データ分析」であり「プログラミング」です。これは本書で目標としているスキルそのものです。つまり、本書を読了した読者はニーズの高いDX人材のど真ん中に位置できるのです。そこを目指して、ぜひ、頑張ってください。

本書の構成:「Python プログラミング」「分析ライブラリ」「データ分析実践」の3つ

 次に、本書の構成について簡単にご紹介します。

 1章は、先ほども触れたようにPythonのプログラミング解説です。初心者向けのPythonの入門書は、すでに数多く出版されていますが、既存の書籍との最大の違いは「最初から目標をデータ分析に絞り込み必要最小限の内容を精選」している点にあります。データ分析の実務でほとんど登場しない機能は思い切って全部落としました。逆に例えば「辞書」のような、データ分析で必須の機能については、多少高度であっても逃げずに説明しています。

 2章は、NumPy、Matplotlib、pandasという、データ分析に必須のライブラリ群の解説です。従来の書籍では、それぞれのライブラリが別の本になっていて、初心者にとって最もハードルが高い部分でした。本書では、「ライブラリとはなんなのか」といった基本から始めて約90ページにまとめました。単に説明を簡略化し詰め込んでいるわけではなく、理解に図が必要と思われる重要な箇所は、わかりやすい図を付けました。「たったこれだけしか学ばないでいいの」と不安に思う読者もいると思いますが、論より証拠で3章と4章の実習コードは、この90ページの解説ですべてカバーできています。安心して読み進めてください。

 分析ライブラリを解説した2章を学ぶと、もう1つ副次的な効果があります。それは、世の中に数多くある機械学習の書籍を理解するためのベースラインになるという点です。例えばscikit-learnという機械学習用ライブラリは、実は使い方自体はあまり難しくありません。初心者がこうした書籍を難しいと感じる理由は、多くの場合、2章で解説している分析ライブラリの理解が不十分なためなのです。こうした書籍に挑戦して挫折した経験のある読者は、2章が終わった段階で読み直してみてください。すらすら実装コードが頭に入ってくることに驚くはずです。

 3章はpandasの機能を中心にデータ分析の主要タスクを順番に紹介する、本書の中心となるパートです。そのため7節で約130ページと本書の中でも最もボリュームが多いです。企画時点で、このパートは関数リファレンス的な書き方にするつもりでした。しかし、執筆途中でそれではあまりに無味乾燥すぎると思い、方針変更して、公開データセットを用いたシナリオベースの進め方に改めました。この結果、内容が面白くなったのはもちろんですが、データ分析において最も重要な「洞察の導出」のヒントになるような点も織り込めたのが良かったと考えています。

 4章は本書の総まとめです。「タイタニック・データセット」という有名なデータセットを題材に、3章までで学んだ知識を総動員して、いろいろな観点でデータ分析を進めていきます。筆者は仕事柄、研修などでこのデータを題材にすることが多いのですが、本当に奥が深く、分析しがいのあるデータです。読者にも、この題材を通じてデータ分析の面白さが伝わり、「身近なデータを使って自分も同じような分析をやってみたい」と感じるようになれば、筆者がこの本を執筆した目的はほぼ達成できたことになります。

 最後に、本書を執筆するにあたってお世話になった方々をご紹介します。

 編集を担当された日経BPの安東一真氏とは、本書を含めてこれで4冊目のお付き合いとなります。毎回同じことを書いていますが、「本は編集者との共同作業」であることを今回も改めて感じました。ややこしいところはすべて安東氏にフォローいただいているおかげで、最近の著作では執筆期間中に会議をすることがほとんどありません。今回もSlackで意見のやりとりをしているうちに自然にできあがってしまった感があり、こういう形で完成できたのもすべて安東氏のおかげと思っています。安東氏には、そのような点を含め改めて感謝の意を表したいと思います。

 同じ日経BPの久保田浩氏とも4冊目の関わりです。久保田氏は、特に企画段階でいただくアイデアが素晴らしいのですが、今回も筆者として感心するアイデアをいくつも出していただき、おかげさまで本書の魅力をより高めることができたと思っています。

 筆者は2021年3月にアクセンチュア勤務に変わり、2022年7月に定年退職、翌月から再雇用の形で2022年11月現在もアクセンチュアに勤務しています。本書の執筆は、入社前の知見に基づいてのものであるため、個人の資格での執筆となっています。アクセンチュアでAIグループを統括している保科学世氏には、入社時から今に至るまでずっとお世話になった上、今回の書籍に関しても業務外であるにもかかわらず細かくチェックをしていただきました。また、アクセンチュアの本多健人氏、前田礼生氏、高橋侑汰氏には、読者目線での有益なコメントを数多くいただきました。

 これらの方々に対しても、改めて厚く御礼申し上げます。

2022年11月 赤石 雅典


【目次】

画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示
画像のクリックで拡大表示