コミュニティ

2019年08月08日
  • #ペアプログラミング
  • #Python道場
  • #出張講座
  • #AI
  • #機械学習

学生向け出張講座『Python道場』ペアプロの威力とは?

Aws4 request&x amz signedheaders=host&x amz signature=cddabeac577df50cf2b79b075e63e15580f7187c9b11a8c080fc68d2919e2f6e

2019年6月某日、北千住にある東京電機大学のキャンパスにて、学生の受講生に向けて行なわれたDIVE INTO CODE主催の出張講座『Python道場』。全4回の講義のうち、取材にお邪魔した今回は最終回でした。ペアプログラミングの手法を用いた、実践形式の講座の模様をお伝えします。

今後DIVE INTO CODEでさらに拡大・展開予定の出張講座。AIや機械学習に興味があり、この分野で最もメジャーなPythonを学びたい方は、気軽に体験できる講座があることをお知りおきください。

未来ある若者たちが データサイエンスの超基礎で学んでいることとは?

Image from Gyazo
出張講座で講師を勤めたのはDIVE INTO CODE代表の野呂です。そのほか、普段からDIVE INTO CODEでメンターを務める3人がヘルプに入りました。

当日は「データ分析の流れとクラスの活用イメージをつかむ」と題され、講義が始まりました。なんだか難しそうです。まずは動画を見てもらい、Pythonを使いこなせるようになった先に広がる未来のイメージを掴んでもらいました。

動画の内容は、例えば……
・AIや機械学習、ディープラーニングの技術を使うことで、手書きのワイヤーフレームを画像認識し、HTMLのコーディングまで自動でできてしまう動画
・高速道路を車で走っている様子を写した動画の、雪景色を森林景色に変換したり、あるいは昼間の景色を夜の景色に変換したりする技術を紹介する動画

自動運転技術にも使われていることを紹介する動画
これらの技術を開発できるようになる、その第一歩が『Python道場』なのです。プログラミングを学んだ将来には、これらのことがあなたもできるようになるかもしれません。

前置きを経ていよいよ課題実習に入りますが、その前にまずは前回(DAY3)の振り返りから。

ちなみに今回の課題は以下のとおり。
【問題1】相関係数行列の作成
【問題2】種類ごとの本数の確認
【問題3】円グラフの作成
【問題4】散布図の作成
【問題5】箱ひげ図の作成
【問題6】簡単な考察
【問題7】正解率の確認
【問題8】散布図で不正解の可視化
【問題9】他のアヤメの種類の2値分類

Image from Gyazo

受講生から提出された前回の課題に対して、野呂がフィードバックを行なっていきます。
野呂「DAY1と2で学習した内容をうまく組み合わせていました。知識は足りていますが、さらにそれをどう組み合わせていったらいいのかを整理し、実際に手を動かして試行錯誤してみるといいと思います。」
「表示ができているのは良いですね。さらに応用として、構文がなくても書けることを気にしていただけるともっといいと思います。」

また、「受講生に講義の感想を記述してもらったアンケート」の一部を紹介。
「ワーク形式なのが良い」
「4回だけじゃ足りない!」
「ペアプロで交互にコードを書いてファイルを渡し合っていたが、自分の書いたコードが独特だったため、他の人と協力してコーディングしていくことができなくなってしまった
この感想については野呂から補足が。
野呂「この方は何を仰っているかというと、『自分よがりなソースコードを書いてしまった』と反省しているんですね。ただ、こういうことは当然、社会に出てから必ず体験することです。つまり、仕事でプログラミングに携わるには『書き換えやすい』『他の人でも読みやすい、使いまわしがしやすいコーディング』を心がける必要があるということです。

『問題の意図する内容を把握するのが難しかった』という感想にも通じますが、社会に出ると前提条件をお膳立てしてくれるケースはほぼありません。自分から情報を取りましょう。
学生が社会へ出てからの現場の厳しさも同時に伝えました。

データ分析に臨む大切な考え方

本日の課題に入る前に、哲学者ルートヴィヒ・ウィトゲンシュタインの言葉を野呂が紹介します。

野呂「『ハエにハエ取り壺からの出口を示してやること』

これは深い意味があるのですが、人は意味を求めて何かないかとどんどん深みにハマっていってしまうんですね。しかしふと原点に立ち返ると「なんだ、入り口のところに答えがあったんだ」と気付くことがあります。

これはデータ分析も似ているんです。

目的や問いはそもそも何だったっけ? それを間違えないこと。入り口だった目的を大切にしましょうという言葉です。これを心に留めて課題を進めてみてください。」

この日の講義の目的

・仲間とプログラムの考え方を学ぶ
・分析ツールの基本要素を使いこなす
・現場に出た場合の新入社員の気持ちになってみる

2人の知恵を駆使する「ペアプロ」ならよりディープにラーニングできる!

Image from Gyazo

ペアプロの目的

ペアプロとはペアで進めるプログラミングのこと。会場では1つのテーブルにつき4〜6名ほど座っていただき、必ず2人1組のペアで行ないます。どちらかが直接プログラミングして手を動かすドライバー、残りの片方がサポートするオブザーバという役割を担い、前半と後半で役割を交代します。

ペアプログラミングの特徴はドライバーのPC上のみで課題を進める点です。1つの画面とキーボードのみを共有して実装していきます。1つのPC画面のみを見ながら片方のオブザーバはアドバイスをすることで、お互いの知識が共有されて深まります。また協力しながら進めることで、仕事など現場に近いより客観的で実践的なコミュニケーションを学べます
Image from Gyazo

この日のお題はアヤメの分類問題

それではいよいよペアプロで『アヤメの分類問題』の課題に取り組みます。

アヤメの分類問題のゴール

『フィッシャーのアヤメ』と呼ばれるWikipediaにも載っている有名な問題のデータセットと同じデータセットを使用し、「アヤメの分類問題」に取り組みます。これは、ある牧草地で同じ日に採取された3種類あるアヤメの、合計150本分のデータセットです。

アヤメには異なる4種類の「特徴量」があり、1本ごとに分類していきます。特徴量とは、例えば花弁の長さ、がく片の長さ、などの数値を指します。データセットにはアヤメ1本あたりの特徴量だけが載っていて、それぞれが3種類のアヤメのうちどの種類なのかを推定するという、機械学習の登竜門的な問題です。
Image from Gyazo

さて、ペアプロ開始です。DIVE INTO CODEのメンター3人が受講生たちの間を回っています。野呂が全体に向けてヒントを出しつつ、メンターは個別にヒントを出しています。
Image from Gyazo

前半の約50分間のペアプロが終了すると、ドライバーからオブザーバにコードを渡し、オブザーバとドライバーの担当をチェンジします。

ここで前半までの感想やヒントが与えられます。

野呂「20分経ったくらいから議論が進みました。一気に要領を飲み込めた体験だったのではないでしょうか? チャレンジを続けてコードや課題に入っていけば前に進めることを体験して欲しいです。」

また、データサイエンティストとしてすでに現場で活躍している中村メンターからは、
中村メンター「データサイエンティストの現場ではデータを可視化することを実際に行ないます。データを持っているお客様は自分たちのデータが何なのかを理解していない。それを説明するためにこの分析を使います。何のために可視化するのか、結果から何を仮設立てて打ち手が打てるのかを考えるのが楽しいところです。引き続き楽しんでください。」

Image from Gyazo

後半の50分間も同様に行われ、課題の時間は終了しました。
「発信することが学びになります」と、野呂から選ばれた2組が前に出て発表します。

Image from Gyazo

1組目は、課題の前半はコピペ(コピー・アンド・ペースト)でクリアできたものの、後半は手こずった様子。

野呂「気付きはありましたか?」
受講生「テキストに載っていなかったことをWebで調べながら進めてみました。メンターにヒントを教えてもらいながら、そもそも何のためにその構文を使うのか、考えながら進めました。」
野呂「難易度が高かったところ、初めて取り組んだところもあったはず。初学者なのに、積極的に取り組んでくれました。」

2組目の発表が終わると……、
野呂「何をやっていたのか、理解できましたか?」
受講生「分けていることは分かりました。」
野呂「なるほど。この問題まで終わった方? いません。お二方だけです。素晴らしい!」

都合4日間の出張講座もこれが最後。野呂から「今後は機械学習をさせる仕事や機会が増えてきます。ぜひデータを活用できるようになって欲しいと思います。」

ペアプロで得られる最大の気付きは「コードは見られるもの」

Image from Gyazo

講座の最後に、今回が最終回ということで告知と「今後のヒント」が受講生に向けて伝えられました。

Kaggleを使ってみよう

Kaggleとは、企業や研究者がお題となるデータを投稿するのに対し、世界中のデータサイエンティストが最適なモデルをコンペするデータ分析プラットフォームのことです。

例えば「沈没した船のタイタニック号の生存者予測」など、さまざまなデータのコンペが公開されています。

今回課題で取り組んだ「アヤメの分類」もプロの投稿を見ることができます。それを元にいろいろとやってみると楽しいし、データ分析がより分かるようになります。

野呂「みなさんもKaggleにアクセスできます。いろんなサイトを見てさまざまな人を知り、勉強会などにも参加してみてください。

DIVE INTO CODEからの告知

・もくもく会の告知……今日やった課題の、ワンランク上の課題をみんなで自習する会
・ボードゲーム座談会……ボードゲームをしながら交流し、機械学習の話などする会
・DIVE INTO CODEのメンターの募集について

野呂「ここにいるメンターたちも大学生のころからメンターをやってくれています。もし私たちと一緒に働きたければぜひ応募してください!」

最後に、締めくくりの挨拶。
鈴木メンター「ここに参加されている受講生はみな優秀な方々です。成長が楽しみ。ありがとうございました。」
野呂「全4回、お付き合いありがとうございました。頑張っていきましょう!」

受講後に提出してもらったアンケートでは、
「ペアプロで協力することで完成できた。普段は見られない、他の人のコードを見る機会がとても役に立った
「初めてやったペアプロで、意見をお互いに伝える難しさを痛感。ペアプロはコミュニケーション力が問われる」
「同じプログラミングでもお互いに興味ある分野が異なり、意見の違いが新鮮で気付きと発見があった」
「1人でやるよりはるかに得るものがあった。『コードは書くより見られることのほうが多い!を実感した。とても楽しかった

こうした感想が聞かれたことは、まさにペアプロの醍醐味を味わっていただけた何よりの証拠でしょう。独学では挫折してしまいがちなプログラミングも、ペアを組んで進めることにより受講生たちの多くが気づきを得られたようです。

今後も大学などでの出張講座をさらに広げていきます。気になる方は、DIVE INTO CODEのサイトなどでチェックしてみてください!

DIVE INTO CODEのことをもっと知ってみませんか?