スペシャルトーク@プログラミング+ 第21回
6月16日 (土) 開催「人気Python技術書の著者が教える【正しいプログラミングの学びかた】〜プログラミングで仕事・人生をハックしよう〜」ご紹介
イノベーションが強く求められている時代だからこそ「非エンジニアがプログラミングを学ぶべき」な理由
2018年06月08日 20時00分更新
角川アスキー総合研究所は『みんなのPython』著者・柴田淳氏を講師に招き、AI(人工知能)技術の基礎を講義テーマに「プログラミングを学ぶ/体得することの意義」について1日で概要を掴んでいただける講座を今春に引き続き開催します。本記事では講師・柴田氏自らの言葉で「プログラミングを学ぶことが意味する本当の意義」についてご紹介いただきます。AI活用やプログラミング学習への興味をお持ちの方であれば講座の受講にかかわらず有益な知識を得ていただける内容ですので是非お読みください。
執筆者/講師プロフィール(敬称略)
柴田 淳
2000年代初頭から主に受託開発にPythonを活用し始める。大規模サイトや出版社のCMS, Googleキャンペーンサイトのバックエンドの開発や設計を行う。今は受託から離れ、自社サービスの開発と運営を行う。著書に『みんなのPython』『みんなのIoT』など。
イノベーションは非専門家が起こしてきたものであるという歴史
「イノベーションは素人が起こすんです」
これは2018年6月16日 (土) に再び開催するプログラミング講座の第1回目において、講師である私が使った言葉です。丸一日費やした講義の終盤、疲れ気味だった受講者の集中力を呼び覚ますような言葉だったようで、会場の空気感が少し変わりました。講師としてもいちばん面白い瞬間です。
「素人」というのは少し言い過ぎで、正確には「専門外の人間」となるのですが、このような人たちがイノベーションを起こしてきたのは歴史的にも事実です。遺伝の法則を発見したメンデルは修道院の司祭ですし、蒸気機関のワットは計測機器の設計技師です。農家出身で数学や自然科学に詳しいメンデルは、エンドウマメの育種を通じて遺伝の法則を発見し、数理に詳しいワットは蒸気機関の効率を数学的に解き明かし、実用できるよう改良して世界中に広めました。非専門家が他分野の知識を持ち込んで起こるのがイノベーションです。イノベーションの本質は、ジャンルとジャンルの合体なのです。
プログラミングはなぜ重要か:本当に学ぶべきなのは誰?
コンピュータはその登場以降、既存の仕組みを壊しながら世の中を変えてきました。フィルムカメラやカセットテープ、CD、電話機がスマートフォンに置き換わり、誰もがAI(人工知能)の仕組みを知りたがっているのが現代です。ここ数十年で起こった重要な変革の中心には、常にコンピュータがありました。
コンピュータはプログラムがないと動きません。Amazon(アマゾン)のジェフ・ベゾスや、Google(グーグル)のラリー・ペイジは、プログラムを作るソフトウェアエンジニアが破壊的イノベーションの源泉であることを熟知しています。ですから、優秀なエンジニアを高給で迎え入れます。優秀なソフトウェアエンジニアとはプログラムを作る専門家に他なりません。専門家は与えられた課題に答えを出すことには長けています。
では、課題を見つけることが得意なのはどんな人たちでしょうか?解決すべき課題に直面している人。専門領域を持って仕事をしている人。非エンジニア。平たく言うとこの文章を読んでいる、プログラミングを始めてみたいと思った経験を持つ “みなさん” です。
ソフトウェアエンジニアの重要性を公言するIT企業の経営者がいる一方、プログラミング教育の重要性について語る経営者もいます。Microsoft(マイクロソフト)創設者のビル・ゲイツや、Facebook(フェイスブック)のマーク・ザッカーバーグなどがそうです。Apple(アップル)CEOのティム・クックも、先ごろ開催されたWWDC(ワールドワイドデベロッパーズカンファレンス:Appleが年に1度開催する、主にエンジニアを対象にした大規模イベント)のキーノート(発表)でプログラミング教育がいかに大切かについて話していました。
彼らの主張の背後には「イノベーションは素人が起こす」という歴史的事実があります。非エンジニアの持つ専門領域、芸術、日常生活の一部などと、プログラミングの「合体」によって、たくさんのイノベーションが起こる可能性があるのです。安価なコンピュータが身近にあり、データが世の中にあふれ、音声認識や画像認識を初めとするAIの技術が利用しやすくなってきた今の時代、そのような可能性がさらに広がって行くはずです。
もちろん、社会を大きく変えるような変革が、そう簡単に起こるわけではありません。“みなさん” が起こしうるイノベーションは、もっと身近な場所にあるはずです。IoTデバイスで自宅や職場を便利にする。日常業務の一部を自動化する。ディープラーニングを使ってきゅうりの仕分けをする。まず親が覚えてから子どもにプログラミングを教える。プログラミングを覚えることはすなわち、閉塞した現状を変える手法を獲得するということなのです。
プログラミングをどう学ぶか :忙しい大人が効率よく学べる方法は?
プログラミングはしばしば「パズル」に例えられます。「ルール」という制約条件の中で、ゴールまで行き着くための手順を考えるのがパズルです。コンピュータが実行可能な機能だけを使って、目的を達成するために必要な手順を考えるのがプログラミングです。
プログラミングを「料理」に例える人もいます。食材や調味料を使い、言葉で書かれた「レシピ」という手順書を見ながら作るのが料理です。表計算ソフトのファイルを読み込むとか、センサーの情報を数値として読み込むといった手順を、コンピュータが理解できる「プログラミング言語」という言葉を使って手順書を作るのがプログラミングです。
では「パズル」や「料理」を学ぶために、みなさんはどうするでしょうか?最初は、ルールを読んだり食材の調理法について調べたりするかも知れません。しかし、その後は必ず「試してみる」はずです。なぜそうするかというと「試す」ことでよりよく学べるからです。見て「真似る」ことで、未知の知識を自分の中に取り込むことができます。プログラミングも同じです。実際にプログラムを動かし、仕組みを理解してから、ちょっと書き換えてまた動かし、ということを繰り返すことで、プログラミングをよりよく学ぶことができます。
私は、冒頭に紹介した講座でも使う「Python」というプログラミング言語の入門書『みんなのPython(SBクリエイティブ刊)』を書いていて、10年にわたるロングセラーとして多くの方に読んでいただいています。その経験から、一般の方がプログラミングに対して抱くイメージは熟知しているつもりです。プログラミングは「難しい」と思われがちですが、これは誤ったイメージだと考えています。
料理には、家庭料理と一流シェフの作る料理があります。プログラミングも同じで、誰にでもできる簡単なプログラムというのがあります。簡単なところからはじめて、面白い教材を使って楽しく学ぶのが、プログラミング学習のコツです。
第1回の講座では、約半数がプログラミング経験をお持ちではない受講者でした。受講後アンケートの結果を見ると、この方たちの満足度が際立って高く、講師本人もびっくりしました。教材が非エンジニア向けに最適化されていることも要因の一つだと思うのですが、講師と受講者が対面しながら学ぶ「場」としての効果が好評価をいただくことができた大きな要因だったと分析しています。
大人になり仕事や家庭を持つようになると特に、丸一日なにかに打ち込む時間を作るのは大変です。講座を受講するためには、まず自分自身の生活や環境を調整する必要があります。独学だとつまずいてしまうような場面でも、対面であればスタッフが手助けしてくれたり、講師が質問に答えてくれます。受講料も決して安くありませんが、そのぶん知識を吸収する意欲を奮い立たせてくれるのかもしれません。襟を正し、自分自身のモードを変えて学習の効率を高める効果が、講座という「場」にあるのだと思いました。
プログラミングとしてのAI :人工知能は本当に人間を超えるのか?
本講座は、基本的なプログラミングの理解からスタートし、音声認識の仕組みを理解していただくことがゴールというカリキュラムになっています。音声認識の基本はデータ処理です。音声を「時系列データ」と呼ばれる数値として扱い、母音・子音ごとに異なる特徴を数値として取り出します。複数の音声データを特徴化した数値として保存しておき、認識したい音声とデータを比較することで統計的に導き出します。このような処理は「機械学習」と呼ばれています。AI技術の成り立たせる重要な要素技術です。ディープラーニングも機械学習の一種です。
「音声の特徴をデータ化して既存データと比べる」という手法で得られるのは、子音や母音の連続にすぎません。これをひらがなの文章に変換するためには、さらに別の手法を使います。得られた「ひらがな文」を「文節」に分けて、さらに「漢字カナ交じり文」にすることでやっと「音声」を「文章」に変換できます。「複数の処理を必要な順番に並べた手順」こそがAIの正体です。データを解析したり、手順を並べたりするためにプログラミングを使います。
つまり、プログラミングを理解できないと、AIも理解できないのです。仕事柄「ディープラーニングがうまく行かない」という相談をよく受けるのですが、そんなときは大抵「まずプログラミングを勉強してください」と答えます。ディープラーニングを使っていても、データを適切に前処理して、結果を他の処理に渡さないと、意味のある結果を得られないのです。前後の処理を理解して組み立てるために、プログラミングの知識が必要になります。機械学習の特定の手法をかいつまんで解説してあるビジネス書やAIの入門書を読んで、AIについて理解できないのも同じ理由です。プログラミングについて理解し、実際に試すことで、はじめてAIの本質を理解できるのだと思います。
「AIはプログラミングである」という認識を得ると、機械学習を使ったAIによって何が可能になって、何ができないのかがよく理解できます。AIは人間を超えることができるのでしょうか。もし超えられるとしたら、どのように超えるのでしょうか。プログラミングのリテラシーを身につけることで、AIのリテラシーも得ることができます。通信とコンピュータが行き渡った世界で、今後何が起こり得るのかについて、よりよく想像できるようになるはずです。
プログラミングの基礎から始まり、AIの概要まで掴んでもらえる凝縮感のある講座は、ほかにはないはずです。この文章を読んで興味をもたれた方々と講座でお会いできることを楽しみにしています。
6月16日開催:講座概要
人気Python技術書の著者が教える【正しいプログラミングの学びかた】〜プログラミングで仕事・人生をハックしよう〜
- 日時:2018年6月16日(土)11:00 - 20:00(当日10:30受付開始)
- 会場:角川第3本社ビル(東京都千代田区富士見1-8-19)
- 対象者:
- プログラミングを初めて学んでみたい方
- Pythonを活用した機械学習に興味をお持ちの方
- 自分に合ったブログラミング学習の方法について悩みをお持ちの方 など
- 参加費(昼食付):2万7千円(税込)
- 講師(敬称略):柴田 淳
- 主催:株式会社角川アスキー総合研究所
- 詳細情報・ご応募:Peatixページをご覧ください
この連載の記事
-
第30回
トピックス
『第九回技術書同人誌博覧会』が11月25日に開催 -
第29回
トピックス
「ChatGPTはどう変わろうとしているのか」を学ぶ講座、11月24日に開催 -
第28回
プログラミング+
U-22で経済産業大臣賞など4冠の中学生上原直人(15歳)さんに聞いた -
第27回
プログラミング+
教育研究家とケンカして作った子どもプログラマー向けキーボードとは? -
第26回
プログラミング+
まだ間に合う! SDLアプリコンテスト応募へ、サンプルコードを一挙公開!! -
第25回
プログラミング+
アプリ開発者のみなさま! SLDアプリコンテスト〆切迫る -
第24回
プログラミング+
クルマは巨大なIoTだ! SDLハッカソンレポート -
第23回
プログラミング+
PyCon JP 2018レポート~参加者1000名超!過去最大の規模で開催~ -
第22回
プログラミング+
『みんパイ』著者が、Pythonはなぜ流行ったのかを考える -
第20回
プログラミング+
プログラミング言語「Kotlin」でAndroidアプリ開発を始めよう! - この連載の一覧へ