CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
最近は、Pythonの人気が日増しに上昇しているので、有り難いことに、関係各所から「Pythonを教えて欲しい」というご要望をいただき、主に大学や研究機関が多いですが、京都や名古屋、つくばなど、いろいろな場所へPythonの普及に行くことも多くなりした。そうしたなかで、プログラミングを始めたばかりの方々がどのようなところで躓くのかが、私になりに分かってきたような気がしています。今回は、プログラミングを学んで行く上で、いくつかあると考えられる壁について、今の時点での考えをまとめてみようと思います。
まず最初の壁は、コードやコマンドといった、短い命令でコンピュータを操作するという部分にあると思います。最近のコンピュータは、高性能で非常に優れたOS(オペレーティングシステム)を搭載しているので、キーボードとマウスを使った直感的な操作が可能です。表計算ソフトを開いて、ファイルを読み込み、解析対象となる領域を選択して、棒グラフを描くといった操作を、すべてマウスを使ってできるので、非常に便利です。プログラミング言語を使ってこういった操作をする場合、それぞれの動作をコードを使って指示する必要がありますので、ここにはすこし壁があると思います。どのようなコードが使われるのかを、ある程度は覚えておく必要もありますし、なにより1文字のミスも許されません。ただ、簡単なコードが書けるようになれば、一連の操作を保存しておけますので、繰り返し同じ処理をする必要がなくなり、効率が上がります。
コードというと、プログラムを構成する短い断片ですので、プログラミングのことばかりに考えが行きがちですが、コマンドを使ったコンピュータの操作も実は、プログラミングへの隠れた壁になっていると思っています。macOSには「ターミナル」、最近のWindows系OSには「PowerShell」と呼ばれる、シェルが付属していますが、これを使うと、コンピュータをコマンドで操作できます。このコマンドも最低限は覚える必要がありますが、pwd、cd、mkdir、lsあたりが分かれば十分なので、それほど難しくありません。cdはchange directoryの略で、ディレクトリを移動するためのコマンドです。普段コンピュータをGUI(Graphical User Interface)で操作している時は、「自分が今どこにいるのか?」ということを意識する必要はありませんが、シェルからコンピュータを操作する時は、この意識が重要です。実行されたプログラムが、ファイルをどのディレクトリから読み込むかは、この「今居るディレクトリ=カレントディレクトリ」になるからです。カレントディレクトリは、シェルからpwdコマンドで確認できますが、このようなシェルを使った操作に慣れると、プログラミングも円滑に進むと思います。
Pythonを含め、最近のプログラミング言語には、便利なライブラリが豊富に取り揃えられています。最近の言語は、オブジェクト指向言語が主流ですが、オブジェクトのメソッドもまた関数ですので、こうしたライブラリを利用することは、つまり、関数を使うということになります。簡単な関数なら良いですが、引数が沢山ある関数も珍しくありません。こちらは、Pythonのデータ処理で広く使われているpandasのread_csvという関数のドキュメントです。読み込むCSVファイルの名前などは、必須の引数ですが、その他数え切れないほどの引数があり、細かく動作を制御出来ます。これらの引数は覚える必要はありませんが、「あ!一番左の列をindexに指定できないのかなー?」という具合に、やりたいことをドキュメントで探して、実行できるようになると、プログラミングが捗るようになります。これには、すこし慣れが必要で、若干壁があるかもしれません。
関数は、使うだけではなく、作れるようになるとさらにプログラミングの威力を体感できます。ただ、関数を作るという作業もプログラミングの重要なスキルの1つだと思います。単純に、コードをまとめて関数にすれば良いわけでは無く、できるだけ多くの場面で汎用的に使えるようにする必要があるでしょう。関数にはできるだけ1つの仕事だけをさせる、という設計思想がありますが、当初はこれに従って作って行くのもよいと思います。ただ、あまり機能がバラバラになると、実際には不便さが増すでしょうから、このあたりは経験が必要になってくるかも知れません。
一昔前、CやC++でプログラミングをしていたころ、プログラムにエラーがあると、プログラムが無言で動作を停止するので、デバッグ作業はそれなりに骨が折れるものでした。私がJavaを初めて使ったのは、もう20年くらい昔の話ですが、エラーメッセージを詳細に出力してくれるので「なんて便利な言語なんだ!」と思ったものです。もちろん、Pythonはインタプリタ言語ですし、エラーメッセージはわかりやすいのですが、いろいろ画面に出力されると、プログラミングを始めたばかりの頃は、戸惑ってしまうことが多いようです。エラーメッセージをよく見ると、エラーの原因が丁寧に書かれていることが多いので、恐れず、プログラムの何行目で、どんなエラーが出ているのか、ゆっくり確認してみることをおすすめします。エラーメッセージが長く感じるのは、自分が使っていると思っている関数の中で、別の関数が呼ばれていることがあり、スタックトレースと呼ばれる、一連の流れが情報として出力されるためです。よくよく見ると、結局は数値を渡さなければならないところで、文字列を渡していたなどの、基本的なエラーだったりすることは多くあります。もし、まったく分からなかったら、エラーメッセージの最後の方の文言を、そのままGoogle検索などに投げ込むというのも1つの手段だと思います。ただこの場合、エラーがあまりにも基本的なものだと、いろいろな原因が検索結果として出てくる可能性があるので、注意が必要です。
現実の情報処理を高度に抽象化して、これをプログラムのコードに落とし込むというのが、プログラマの仕事です。これは、ライブラリをただ利用するのではなく、新たなライブラリを作る事にも相当しますが、これは非常に高度な能力で、ここまで来ると、才能の差が出てくると私個人は思っています。Pythonを使って、普通にWebアプリを作ったり、データを解析したりする作業に、この才能は関係ありません。ですので、ここに大きな壁はありますが、コードを書いて、普段の業務を効率化しようと思って居るだけであれば、気にしなくてもよい壁です。
今回は、プログラミングの壁について考えてみました。これは私個人の今の時点での考えですので、今後変わることもあるかも知れませんし、別の誰かがまた違うことを言っている可能性はあると思います。ただ、お伝えしたいのは、初歩的でも十分役に立つプログラミングは、誰にでもできるという言う事です。今後、義務教育課程でプログラミングが教えられるようになる計画もありますし、1人でも多くの方が、プログラミングの壁を感じなくなってくれると良いなと思っています。
筆者書籍紹介 いちばんやさしいパイソンの本 Python スタートブック ――Pythonの基本をしっかりマスター まったくのゼロからでも大丈夫 辻真吾 著 B5変形判/352ページ 定価(本体2,500円+税) ISBN 978-4-7741-9643-5 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes