
研究室配属の時期ですね。この季節は学生さんからこんな質問を受けることが度々あります。教員からしてみれば、そんな甘ったれたこと…と思うかもしれません。しかし、時代は変わったのです。最近の学生さんにとって、PCの存在感は日に日に薄れていく一方です。
それに比べ、スマートホンやタブレットは大変身近な存在となっています。実験レポートや卒業論文をスマートホンで執筆する学生さんもいる程です。これからは、彼らの様なスマホネイティブな学生さん達が主流となるのです。
そんな彼らに適したプログラミングの学習方法を実体験に基づいてお話しします。

以前はC言語、Octaveなどを使って研究をしていましたが、
いまはPythonでほとんどの仕事を済ませています。
Pythonを活用する上での必要性からJavascriptも少し齧っています。
長年の教育経験をお話ししたいと思います。
どんな言語がいいですか?Pythonがお勧めです

スマホネイティブの学生さんたちはスマホ上で様々なアプリを駆使して驚くほど多様な作業を驚異的なスピードでこなしています。SNS でどのアプリを使うべきかを素早く調べあげ、ゲーム感覚で使いこなし、アプリを様々に連携させて最終的な目的を達成してゆきます。
この考え方は、Python プログラミングの考え方とよく似ています。Python では、予め準備されたモジュール(プログラムを作るための部品)を上手に組み合わせて目的の作業をプログラムして行きます。この辺りがスマホネイティブの学生さんたちに Python が向いていると考える所以です。Python には、スマホのアプリに相当するモジュールが、それこそ無数に存在します。それらのモジュールを様々に連携させるだけでも、相当な作業をこなす事ができます。
Python、最近流行りの言語ですね。近年の機械学習やデータサイエンスの発展で一躍脚光を浴び有名になりましたが、実は科学計算の分野では 10 年以上前から広く活用されてきた言語です。どんな分野の研究でも活躍の場があるのが Python です。学んで損はありません。
では、Python で何をしましょうか?折角なので即役に立つ目標にしましょう。理系の学生さんでしたら、きっと学生実験でたくさんのグラフを描くでしょう。Python でグラフを描くことから始めてみましょう。Excel はそろそろ卒業です。
諦めないで!ここが躓きどころ!2つの壁

私自身、この 10 年は Python をメインの言語として便利に使っています。ですから、配属された学生さんにも活用してもらおうと、 Python を勧めていました。ところが、数年前まで、すぐに躓いてしまって学習の段階にまで到達できない学生さんが続出していました。そんな躓きどころはどこでしょうか?
Jupyter notebook での入門が近道

プログラミング全般に言える事ですが、初心者がPython を学ぶ上での最大の挫けポイントが環境構築でした。少し前まで、Python でプログラミングしようと思ったら、Python のアプリを PC に入れるだけではなく、ターミナルを開いて pip install numpy などと打ち込んで、必要なモジュールを使えるように準備作業を一つ一つしていかなければならなかったのです。
タップやスワイプで軽快にスマホを操る学生さんたちも、いちいちコマンドを覚えてキーボードを叩くのが相当なストレスだった様です。ここで挫けてしまった学生さんのいかに多かったことか。
でも、いまはいい解決方法があります。Jupyter notebook です。大変な環境構築は先輩や先生に任せて、出来上がった環境を、学生さんが慣れ親しんだ Webブラウザから使うことができるのです。Jupyter notebook を用意してくれる先輩がいない人は、Google Colaboratory を使いましょう。どうしてもスマホでやりたい?有料アプリになりますが、iOS なら Pythonista や Juno というアプリがあります。iPhone や iPad にインストールするだけでブログラムを実行できる様になります。
初心者なんだから、面倒な部分は省いて近道しちゃいましょう。
Python3 を学ぼう!

いまから入門するみなさんは、Python3 を学んでください。インターネットから手に入る情報の中には、古い Python2 に関する情報がまだまだたくさんあります。Python2 の知識の大部分は Python3 でも使えますが、微妙に異なる部分もあります。「書いてある通りにしたのに動かない」真面目な学生さんは、自分が誤っているんだと勘違いをして、心が傷ついてしまい、そこで学習意欲を失ってしまうことも多いのです。そんなことにならない様、出来るだけ新しいネット情報、特に慣れないうちは、Python3 では… ときちんと記された情報に頼るようにしてください。
サンプルプログラムを改造しよう

そろそろプログラミングの第一歩を踏み出しましょう。実験のグラフを作成するのです。まずはお手本をそのまま実行してみましょう。お手本は、matplotlib というモジュールの例題ページにたくさん載っています。気に入ったグラフを書いてみましょう。そして、プログラムのカッコ()に囲まれた部分を少し書き換えてみましょう。動かなくなっても一向に構いません。どんどん変えて、結果がどんなふうに変わるのか、体で覚えてゆきましょう。
その際、なぜ?どうして?と疑問に思うことがたくさん出てくるはずです。その疑問は大切なので覚えておくか、できればメモしておいてください。
ゲーム感覚でしばらく触っていると段々と慣れてきて、恐怖感は薄らいできます。そして、たったこれだけのことでも、実験レポートに載せられる程度のグラフは描けるようになります。
入門後の道筋は?学習の5つの段階

さて、Python のプログラミングに入門した後は、どの様に学習していけば良いでしょうか。実は、プログラミングというものは、スポーツと同じ様にゴールのない挑戦の連続です。経験を積むことで、出来なかったことができる様になり、また新しい課題が目の前に広がってゆきます。どこまで進んでゆけば良いのか、大まかな道筋を、スポーツに例えてリストにしました。
- 体験入部 サンプルプログラムを動かす、改造する
- 基礎練習 文法や周辺知識を勉強する
- 応用練習 頻出課題や断片プログラムの学習
- 練習試合 白紙からのプログラム作成、アドバイザ付き
- 本試合 独力でのプログラム作成、オープンソースプログラムの公開
みなさんは、いま体験入部の段階にいます。この段階でも、インターネット上に転がっている無数のサンプルプログラムを適切に改造するだけでも相当なことができるようになります。
体験入部のレベルで満足してしまう子も多いのです。しかし、私は、とてももったいない、と思います。あなたの周りには、より進んだ段階にいる先輩達や教員が沢山います。ネットからは得られない、彼らの経験を直に聞くことができます。疑問メモを見せて意見を聞きましょう。Google 先生からは得られない、あなたにフィットした情報を教えてくれるでしょう。
そんな恵まれた環境に居る間に、ぜひ、より高いレベルに進める様に挑戦してください。応用練習の段階まで進めれば、卒業論文や修士論文のための実験データ整理や論文作成は不自由なく行える様になるでしょう。このレベルでもサラリーマンプログラマとして実務についている社会人も大勢います。
プログラマとしての高みを目指すのであれば、練習試合、本試合に出場できる選手を目指しましょう。あなたは、皆に一目置かれるプログラマとなっているでしょう。
おまけ:環境構築のヒント

今回の入門記事で「逃げろ!」と書いた環境構築ですが、応用練習の段階にくると、自分自身のPythonプログラミング環境が、やはり必要となってきます。実は、環境構築は Python のプログラマ全てにとって悩ましい課題の一つです。
バージョンの異なる Python を使いたい時にどうするか。機械学習やニューラルネットワークは急速に発展している分野で、異なるバージョンのPythonやモジュール、ドライバなどが必要となる場合が多いのです。それぞれに PC を用意したり環境切り替えソフトなどを使ったりすることがありましたが、なかなか難しい課題です。
また、大量にインストールしなければいけないパッケージをどう管理するのか。科学計算で多用される Numpy はインストールの仕方によってその性能が大きく変わるのです。
現在では、これらについていい解決策が提示されています。長くなりすぎますので、ここではキーワードだけ挙げて記事の締めくくりとします。モジュールのインストール問題については、Anaconda ディストリビューションの利用がおすすめです。科学計算においても十分な性能のNumpyがインストールされます。環境切り替えについては、Docker や Singularity などの仮想コンテナ技術が定番となりつつある様です。
まとめ

特に理系の学生さんにおすすめのPython学習法について書きました。実験レポートに載せるグラフを書いてみるところから始めるのがおすすめです。環境構築は躓きやすいので、最初は Jupyter notebook を使わせてもらって学習を始めましょう。体験入部の段階でもいろいろなことができるようになります。
せっかくですから、先輩や先生の力を借りれるうちに、応用練習をこなせるぐらいのレベルまで到達を目指しましょう。就活でも胸を張って「Python 使えます」と言えますよ。