これからの日本の情報人材育成を考える ~情報教育のあり方、考え方、そして話題のPython教科書のことなど

世界的な規模で情報化が進み、現在はAIや機械学習、ロボティクス、さらには量子コンピュータなど、その進歩はとどまるところを知らない。そうしたテクノロジーの拡がりを支える情報人材の育成が急務とされる中で、情報教育をいかに進めていくかが重要な課題となっている。京都大学で長年教鞭をとり、わが国の情報教育の充実・改善に取り組み、最近ではみずから執筆したPython の教科書が大きな反響を呼んでいる喜多 一先生に、これからの情報教育のあり方や学習者へのヒントを伺ってみた。

ゲスト
京都大学 国際高等教育院 教授
同 情報環境機構 機構長を兼務
工学博士
喜多 一 氏
インタビュアー
株式会社 オデッセイ コミュニケーションズ 代表 出張 勝也

人材育成をIT企業まかせにせず
社会全体で議論を重ねていくべき

現在、わが国ではエンジニア人材の慢性的な不足が問題になっています。日本の場合、現役エンジニアの7割はSIerにいると言われ、ユーザー企業にいるのは残りの3割です。また、技術人材の育成も、いわゆるIT業界にゆだねられてきた歴史がありますが、長年情報教育に携わってこられた先生からご覧になって、どういった課題があるとお考えですか。

私自身は、ユーザー企業の「ITがわかる人材」が、必ずしも「エンジニア」である必要はないと思っています。むしろ、ユーザー企業側の要件とエンジニアの仲立ちになる人材、すなわちビジネスの課題や要求を、どうすれば最適なかたちでシステムに落とし込んでいけるかを考え、IT側に指示できる人こそが必要です。
しかし、実際にそういった人材を育てる教育が実現できているかというと、現状はなかなか厳しいものがあります。

また、「IT人材育成」というと、情報学科のような専門教育に意識が向きがちです。その結果、“一般の社会人レベルで必要な教養やスキルを育てる情報教育”という意識がなかなか育っていきません。
世の中のすみずみにまでITが浸透した現代に必要なのは、そうした「ITを活用する側の人材」教育をどう整備していくのか。それを私たち教育者はもちろん、企業や行政、そして一般の人々が意識し、議論を重ねていくことだと思っています。

そうした意味でも、先生のような教育の第一線に立つ方の担う役割は大きいですね。

ところが、今もっとも足りていないのは、その「教える人」です。きちんと情報教育のあり方を議論して、その上でそのことを一般の学生や学習者を教える人を育てていないから、イノベーションもデジタルトランスフォーメーションも、絵に描いた餅から脱却できません。

どうしても人がいないというならば、教え方そのものを改革していくとか、そういう仕組み作りに注力していかないと、この先もどうにもならないでしょう。むしろそういったところは、産業界と組むとスピード感を出せるのではないかとも考えています。

入りやすいけど奥行きがとても深い
それがPythonの魅力であり特長

先生が執筆されたPythonによるプログラミング演習の初学者向け教材「プログラミング演習 Python 2019」※が、非常に大きな反響を呼んでいます。これは当初、京都大学の学生向けに書かれた教科書を一般公開したものであるとのことですが、そもそも先生がこうした教材を作ってPythonの授業を行おうと思ったきっかけは何でしょう。

最初は、特に「Pythonを」というわけでもなかったんです。京都大学では全学共通の教養・共通教育を行う国際高等教育院の科目の一つとして、学術的な活動のために ICT の使い方を学ぶ「情報基礎演習」という科目を設けています。この科目では最後に、少しだけプログラミングの体験をしてもらっています。これまでC言語を使ってきましたが、科目全体の見直しの中で今の時代なら、Pythonに切り替えようということになりました。その上で、この科目で興味を持ってくれた学生のために、独立した科目として Python の授業も導入することになりました。ところが、肝心の教える先生が皆さん手一杯で、それじゃ自分でやろうということになって、自分でも勉強をはじめたのです。

先生もそこで初めてPythonを学ばれたわけですね。先生ご自身、すでにいろいろな言語に習熟されていたと思いますが、それまでPythonにどのような印象をお持ちでしたか。

プログラミング言語ということで言えば、学生時代からいろいろ使ってきました。インテルの8080の機械語からはじまり、BASICとかFORTRAN、Pascalなどを勉強してきました。UNIXマシンが研究室に入ってくるとC言語、さらにC++、Javaと、時代の潮流や自分の研究の目的に合わせて身につけてきたつもりです。ここ数年は、自主的にPythonの勉強をしている学生が増えてきたので、それならばPythonの授業もやってみようかみたいな感じでしたね。

よく、Pythonは他のJavaやC++に比べて格段に学びやすいため、初学者にとってお勧めだという話を聞きます。ご自分で学ばれてみて、実際のところどう思われましたか?

実は今回、この教科書を使う授業を設計した時に、Pythonの参考書を十数冊買って読んでみましたが、言語として学びやすいというのは確かだと感じました。とはいえ、ただ簡単というわけではなく、たとえて言うなら「エベレストを、すごくゆっくり登っていく感じ」とでも言いますか。Pythonが初めて登場したのは1991年で、その後、バージョンも上がり続けていてプログラミング言語としては、高度な概念がふんだんに盛り込まれています。だから入りやすいには入りやすいけれど、実は奥行きが非常に深くどこまでも進んでいける感じです。

このため、授業設計では、「学びやすいのは確かだが、その奥深さをどこまで活かしていくのか?」を決める点でかなり悩みました。いろいろ考えた結果、まずは「Pythonでコードが書けるようになること」を目標にしました。そしてそのなかで、プログラム言語としての主だった考え方についても一通り紹介するようにしました。あと、アプリケーションという意味では、デスクトップのGUIが書けることをゴールとしました。

その一方では、あえてWebやデータベースは内容に含めないと決めました。というのも初学者の場合、基本となるプログラミング言語以外の要素=具体的にはHTMLやSQLまで手を拡げてしまうと、それだけでわからなくなってしまう懸念があると考えたからです。

※京都大学では、喜多教授の執筆による教科書「プログラミング演習 Python 2019」を、2020年2月13日から「京都大学学術情報リポジトリ(KURENAI)」で無償公開している。これはプログラミングを初めて学ぶ学生を対象にした、Pythonによるプログラミングを演習方式で学ぶ教材。公開直後から大きな反響を呼び、2020年3月第4週時点でのダウンロード数は16万3000件を超えている。
プログラミング演習 Python 2019

肝心の「手順」がわからなければ
言語を学んでもプログラムは書けない

この教材「プログラミング演習 Python 2019」をひと通り学習すれば、Pythonのプログラミングの基本は習得できると考えてよいのでしょうか。

実は、そこがこの教材だけでなく、プログラミングを学ぶ人にとって大きな問題なのです。というのも、実際にはプログラミング言語をひと通り学んでも、現実世界の問題をプログラムに落とし込むということができない人が多いからです。たとえて言うなら、鋸や金槌の使い方は教わっても、「家」がどういうものか理解していないと住宅は建てられません。

同様に、Pythonというプログラミング言語の命令を一通り使えたとしても、たとえば会社の月々の売上を集計してレポートを出すプログラムを書く場合、その会社のビジネス=商品や取引の詳しい内容を理解していなければ不可能です。だから私の授業では、「(Pythonを使って)やりたいことは一体何なのか?」を理解した上で、言語を学び使いこなす演習を重視しています。

「現実の課題や問題」をプログラムの処理に落とし込むプロセス(手順)を理解していないと、実際の仕事に使えるソフトウエアを作ることはできないというわけですね。

はい。ところが、世の中の多くのプログラミングの教科書の書き手は、その点に気づいていません。だから教科書の最後にアプリケーションの例が紹介されていても、どうやって現実の課題を具体的な処理プログラムとしてコード化し、一つのアプリケーションに組み上げていくのかというプロセスは書かれていない。結果として読者=学習者は、プログラミング言語はおぼえたけれど、プログラムは書けないという困った状況に陥ります。

先生が教科書の冒頭部分で、「この授業はPythonというプログラミング言語を紹介するのではなく、そのプログラミング言語で実際にプログラムを書く(書けるようになる)ことを目的にしています。」と書かれているのは、まさにそれですね。

上でも触れたように、世の中のほとんどの教科書は、「プログラミング教育=プログラミング言語の教育」になってしまいがちです。すでに他の言語でプログラミングをした経験がある人なら、それでもわかりますが、初めてプログラミングを学ぶ人だと、「言語=鋸や金槌」を渡されたものの、肝心の「家の建て方=ソフトウエアの作り方」を知らないから何もできないのです。
なので、この教科書を使った私の授業では、「小さな犬小屋でもいいから、とにかく一度建てるプロセスをひと通り体験」してもらって、その経験を土台に先に進んでいくという~進め方をしています。

「できること」を積み上げる努力が
Pythonマスターへの道をひらく

Pythonの人気の背景には、Pythonができると就職に有利だと言われていることがあります。オデッセイ コミニュケーションズでも、MTAやPythonエンジニア認定試験といったPythonの資格試験を実施しています。先生ご自身は、キャリアアップの観点からのPython人気を、どうご覧になっていますか。

私はあくまで情報教育という視点からPythonに触れているので、企業や就職希望者の間で実際にどんなことが言われているのかはよく知りません。とはいえ、前章でもお話ししたように、プログラミング言語というのは「使えてなんぼ」じゃないですか。仮に就職が動機であっても、本人がやってみて面白いと思えば自然とあれこれ試してみることになるし、結果として自分で使える言語になるでしょう。

また、就職してから、仕事の中でプログラムを書かなくてはいけない人たちにどう手を差しのべるかは、学生を送り出す大学教員の務めなのかもしれません。情報学科や理工学系の学生なら自分の研究でプログラムを書く目的も機会もあります。でも文系も含めた多くの学生には、体系的にプログラミングを学ぶ機会は少ない。それが就職して会社に入って、自分の業務処理の簡単なソフトウエアを作らなくてはならないという時に、ある程度使えるだけのプログラムを書くスキルを身につけさせたいというのが、私のPythonの授業の重要なコンセプトでもあります。

先生からご覧になって、Pythonの良さであるとか、他の言語に比べて優れている点などを具体的にいくつかお聞かせいただけますか。

Pythonの一番の魅力は、言語そのものよりもライブラリの豊富さです。たとえば数値計算のライブラリを書いているグループが数多くあり、一方ではいま人気のディープラーニングのライブラリをGoogleが公開したりもする。それらを活用できる点で、最近は理工系の教育ではPythonへの関心が高いです。

特に、データ分析やAIをやりたい人にとっては、ほぼ一択の存在になっているようです。私の授業でも、画像を識別する課題などに学生が自主的に取り組んでなんとか動かしてくる。専門知識がなくてもライブラリを使えばとりあえず試せる。このスピード感はすごいと感じました。ただ、あまり勉強せずに背景の知識もなく使われると怖いとも感じています。

これからPythonを学習しようと考えている方に、何か一言アドバイスをお願いします。

プログラミングで一番しんどいのは、「できない、あるいは難しい」ことをやってみたいときです。いろいろ試行錯誤した結果、やっぱりこれは無理という結論に陥ってしまうととても辛い。やりたいことはやりたいこととして温めておきながら、、「自分ができること」をできるだけたくさん積み上げていくしかない。

というのも、ある程度の知識や経験値を持っていないと、その課題が果たして本当に「できない」かどうかの判断すら無理だからです。だからこそ、自分ができることを地道に増やしていくのが、Pythonの学習にしても他の言語でプログラムを書くにしても成長への道だと思います。それこそ、子どもがおもちゃのブロックを積み上げて何かを作るのと同じ。だから、一足飛びに結果を求めない根気や息の長い努力が欠かせません。

あと、プログラミングの学習はいろいろなところでつまずきます。一人で学ぶと辛いので、なるべくつまずかないような学び方を考える。今回公開した「プログラミング演習 Python 2019」では、プログラミングの教育について一緒に考えてきた先生方がプログラミングの現場で得たさまざまな知見や勘どころを盛り込んで、初めて学ぶ人がなるべくつまずかないように配慮しています。これからPythonを学んでみようという方は、そうした執筆側の意図を感じていただくとともに、「プログラミング言語を学ぶのではなく、その根本にある考え方を学び、書けるようになる」ことを目標に取り組んでいただきたいと思います。

Python の人気がますます高まる中で、私たちもこれから学ぼうという皆さんに、ぜひこの教科書の魅力をお伝えして、よりよい学びを体験していただきたいと思います。本日はお忙しい中、貴重なお話をありがとうございました。

喜多先生へのインタビューを終えて

喜多先生には、ここ数年、大学ICT推進協議会(AXIES)の年次大会でお目にかかってきました。
AXIESでリーダーのお一人としてご活躍になられている先生に弊社オフィスにてインタビューの機会をいただいたことに、たいへん感謝しています。
喜多先生は京都大学での一般教育としての情報教育の担当者として、これまでもさまざまな場所でご発言されています。

情報教育に関して わが国の情報教育—初等教育から大学教育まで
AIと情報教育に関して AI時代の情報教育

私どもでは、Pythonについては、「Pythonエンジニア認定試験」、MTA(マイクロソフト テクノロジー アソシエイト)の一科目として「Pythonを使用したプログラミングの基礎」というふたつの試験を実施しています。今回のインタビューでは資格試験に関しては詳しく触れることはありませんでしたが、自分が学んだことを第三者に示すものとしては、資格試験があるということは先生からもお話しがありました。
Pythonの試験を受験されるみなさんにとって、今回の喜多先生のお話しが参考になることを期待しています。

オデッセイコミュニケーションズ
代表 出張勝也

TOP