2016/03/19 「第6回プログラマのための数学勉強会」開催しました!(資料&動画つき)
「第6回 プログラマのための数学勉強会」を開催しました!今回も 渋谷 dots. の会場をお借りして、5つの 30 分セッションと9つの LT をお届けしました。今回は「ブログまとめ枠」で3名の方に記事を書いて頂いたので是非そちらも御覧ください!
1. 「心地よさと数字」矢崎 裕一
デザイナ 矢崎裕一さんのセッションです。「データビジュアライゼーション」の考え方や効果について、ご自身の仕事を取り上げつつ紹介してくれました。紹介された作品は見ているだけでも楽しく、またその背後でどういう考え方があるのかを知ることができました。
同じデータでも、表に数字がズラッと並んでいるのと、視覚的に分かりやすく動きが見えるのとでは受け取られ方は全然変わります。テクノロジーの力でデータや式が「見える」ようになるということは、もっと初等教育でも取り入れられるべきだと思います。またデザインにおける「すでに完成していると思われているものを疑う」という姿勢は、数学の心にも通じるんじゃないかと感じました。
[ 資料 ]
2. 「数学がデジタルアートに!高速なシェーダで可視化する数学の世界」@h_doxas
webgl.org や WebGL総本山 を運営し、WebGL / GLSL の講師として活動されている @h_doxas さん。前半で WebGL の基礎を説明し、後半はご自身で開発された GLSL editor を使って GLSL ライブコーディングを披露してくれました。会場の参加者も一緒にコードを書いて、簡単なベクトルの演算や三角関数を組み合わせて見る見る不思議な映像が作れていくのは面白かったですね!
@h_doxas さんが昨年末開いていた GLSL短期スクール に僕が生徒として参加したことがキッカケで今回ご登壇いただきました。5月から WebGL 基礎スクール も開催されるそうなので、興味のある方は是非ご覧ください!
[ 資料 ]
3. 「6-3. Wolfram Language コトハジメ 〜 Wolfram Alpha って聞いたことあります?」若林 登
株式会社ヒューリンクス 執行役員の若林 登さんのセッションです。前回に続き今回もフードスポンサーをして頂き、製品紹介も兼ねて Wolfram Alpha や Mathematica に関する発表をして頂きました!
Wolfram Alpha は検索サイトのような UI でありながら、内部で Mathematica を動かして「計算結果」を返してくれます。数式を描画するだけでなく「ボーイング747には野球ボールがいくつ入るか?」といった問いにも答えてくれます。Mathematica は膨大な数の関数が備わっている数式処理ソフトで、「ノートブック」として計算結果と共に思考過程を記述していくことができるのが特長です。
Stephen Wolfram 自身の TED Talk 「万物の理論を研究する」もとても面白いので興味のある方は是非!
[ 資料 ]
4. 「暗号文のままで計算しよう 〜 準同型暗号入門」 光成 滋生
「クラウドを支えるこれからの暗号技術」の著者、サイボウズラボの光成滋生さんのセッションです。
前半では「楕円ElGamal暗号」を紹介。トーラスには加法群の構造が入り、暗号がトーラス上の点と対応するように定めると暗号文のままで足し算ができてしまうのです。デモ でクライアント・サーバ間の通信を一画面内で表示し、サーバ側で「足した」値をクライアント側に戻して復号すると、ちゃんとクライアント側で足し算されていることを実演されました(会場から感動の拍手!)後半ではさらに足し算だけでなく掛け算もできる「完全準同型暗号」を紹介。足し算と掛け算ができれば、原理的にはコンピュータが行う演算を全て暗号のまま行えることになります。現状では 1bit のデータでも 1GB ほどに膨らんでしまうんだとか…!
僕はこの発表を聞いて「カッコイイ!」と感じました。復号されない限り何の意味も持たなかった暗号文がそれ自体として「代数的構造」という生命を持つようになり、人間に分かる平文と分からない暗号の間でパラレルな関係が成り立つようになるのは、なんとも男心(?)を燃えさせるものがあります!この先まだまだ研究が進んで行くんだろうと思うとワクワクします。
[ 資料 ]
5. 「圏論とHaskellは仲良し」 大森 健児
3月に法政大学教授を退官されたばかりの大森健児先生のセッションです。ブログ bitterharvest's diary で圏論と Haskell について親切に解説をされていたので(法政大学の教授とはつゆ知らず)登壇のお願いをしてご快諾を頂きました。
圏論と Haskell …それは数学とプログラミングにおいて最も難しいものとして恐れられています。圏論は「抽象的な数学の中でも最も抽象的なもの」「異なる分野で異なる言葉として話される同じような概念を抜き出して共通化したもの」です。その圏論をベースに作られたプログラミング言語が Haskell です。Haskell は「純粋関数型言語」と呼ばれる言語で、プログラミングで当たり前と思われるような a = a + 1
のような再代入が一切できません。そんな難解な圏論と Haskell ですが、大森先生はにこやかに楽しそうに親しみやすい喩えを交えながら紹介してくれました。
大森先生が圏論を学び始めたのは68歳だそうです…「何ごとも学び始めるのに遅すぎることはない」というメッセージには胸が高鳴りました。
[ 資料 ]
Lightening Talk
1. 「√2 をつくる」 @taketo1024
[ 資料 ]
2. 「実践Scalaでペアノの公理」 @busterdayo
[ 資料 ]
3. 「せいほうけい育成日記」 @nekonenene
[ 資料 ]
4. 「packing にまつわるアレコレ」 @simizut22
[ 資料 ]
5. 「Introducing PONS」 @dankogai
[ 資料 ]
6. 「すべての図形を分類した男」 @matsumoring
[ 資料 ]
7. 「かんたんベジェ曲線」 @butchi_y
[ 資料 ]
8. 「ベータ分布の謎に迫る」 @kenmatsu4
[ 資料 ]
9. 「始代数とCatamorphism」 Ryo Mikami
[ 資料 ]
まとめ
今回も実に盛りだくさんでしたね…!セッションの前半は見て楽しめる数学、後半は難しいが分かると面白い数学、そして LT は数学好きが暴れまわるという感じでバランスが取れていたんじゃないかと思います(笑) HULINKS さん、今回もフードスポンサーありがとうございます!写真は今回も 馬場彩 さんに撮って頂きました!
リンク
「プログラマのための数学勉強会」の一年を振り返る
この記事は Math Advent Calendar 2015 の 24日目の記事です。(23日目:空の見えないセカイ - tsujimotterのノートブック)
このブログはちょうど一年前 id:tsujimotter さんの 明日話したくなる数学豆知識 Advent Calendar 2014 に記事を書くために開設したのでした。今年も tsujimotter さんからバトンタッチを受けてクリスマス・イヴに数学について書けることを心から嬉しく思います。
プログラマのための数学勉強会
今年一月に第1回「プログラマのための数学勉強会」を開催し、以後も隔月ペースで全5回開催しました。毎回定員を超える参加応募があり、開催後も多くの満足の声を頂くことができました。僕自身も毎回発表者の話を楽しく聞いていますし、この勉強会を通してたくさんの出会いもあり、もっと勉強したいという情熱を得ることもでき、本当にやって良かったと思っています。
よく「発表者の方とはお知り合いなんですか?」と聞かれるのですが、知り合いに発表をお願いしているケースよりも、面白い数学記事を書いている方に直接連絡を取ったり、発表希望者からフォームを送って頂いているケースの方が多いです。なので当日まで「本当に来てくれるのかな…?」というドキドキはありますし、お会いして「こんな人だったのか!」という驚きもあって楽しいです。
発表内容についても事前のすり合わせはしておらず、面白そうだと思ったらもう丸っとお任せしています。前回参加者の方が「この会の「語りたい人が語る」という形式が素晴らしい」とツイートしてくれたのですが、まさにその感じを大切にしたいと思っています。語りたい人が語りたいことを語り、それを面白いと感じた人が興味を広げていく、そうして数学とプログラミングの距離が縮まっていけば良いなと思っています。
発表を振り返ろう!
せっかくなので過去の発表を振り返ろうと思うのですが、全部リストするとめちゃくちゃ長くなってしまうので、いくつかのテーマで発表をピックアップしてみました。
1. 見て楽しめる数学
明日話したくなる「素数」のお話 - @tsujimotter
3D表示の数学と高次元への応用 - μ崎みのり
円柱、円錐以外の、展開図の描ける曲面 - @taro_x
2. プログラマ向け数学の基本
プログラマのための線形代数再入門 - @taketo1024
内積が見えると統計学も見える - @kenmatsu4
今日からはじめる微分方程式 - Ryo Kaji
3. 数学とコンピュータサイエンス
フーリエ変換と画像圧縮 - @ginrou799
線形計画法と整数計画法 - @kaneshin
Hybrid Monte Carlo 法の紹介 - Kenji Ogawa
4. 数学ガチ寄り
五次方程式が代数的に解けないわけ - @tsujimotter
何もないところから数を作る - @taketo1024
忙しい人のための楕円曲線入門 - @srtk86
5. もっと広い数学とプログラミングの世界
エニグマ暗号とはなんだったのか - @thorikawa
物理における微分方程式と数値計算 - 久徳浩太郎
音楽とトポロジー - @simizut22
いかがでしたか?上のリストにない素晴らしい発表もたくさんあるので、末尾のリンクから過去のレポート記事をご覧ください。
数学を「実験」するプログラミング
プログラマによる数学の発表がなぜこんなに面白いのか考えてみたのですが、それはプログラミングが数学の「実験」を可能にしているからなんじゃないかなと思いました。例えば小学校の理科で、アルミ片を塩酸水に入れて水素を発生させ、これに火をつけて「ヒュッ!」とやったら水が出来てる、という実験をやりましたよね。高校になると、
という化学式を習います(これであってますよね?w)。この式は小学校でやった「あの実験」の記憶があるから何が起きてるかイメージできますが、最初から化学式だけ習っていたら何のこっちゃ分かりません。しかし数学の教育ではそれと同じことが起きてしまっているように思います。公式の暗記と適用ばかりやらされていたら「これが何の役に…」みたいなことも言いたくなるでしょう。
先日たまたまこの「ピタゴラスの定理」の実証実験を見つけてとても感心しました:
学校でも公式を習うたびこのような実験ができれば良いのですが、一個一個作ってたら先生が大変でしょうがないし、製作における物理的な制約があります(4次元図形とかなると原理的に作れません)。しかしプログラムなら書けます。アルゴリズムを実装して計算をさせたり、複雑なグラフを表示して動かしたり、物理エンジンを使って現実世界をシミュレートしたり…工夫次第で色々な「実験」ができます。
「プログラマのための数学勉強会」で発表してくれた方々は、それぞれ得意な方法でその実験を見せてくれました。その数学が理論か応用かということは関係なく「実験が分かれば面白い」という素朴な感動がたくさんあったんじゃないかと思います。
未来の数学教育では(それもそう遠くない未来で)プログラミングは当たり前のようにそこにあり、分からないことはその場でパパッと実験するようになっているでしょう。生徒は先生から一方的に教わるのではなく、生徒が自分で見つけた面白い実験方法を公開してお互いに教えあっているんじゃないかと夢見ています。
最後に
このブログ、しばらく「プログラマのための数学勉強会」レポート専用ブログになっちゃってますが、元々は数学記事を書くつもりで始めたものでしたw 年明けから勉強も再開し、記事もちょっとずつ書いていこうと思うのでそちらも楽しんで頂ければ幸いです。
改めて「プログラマのための数学勉強会」に関わってくれた皆さん、ありがとうございます。それでは、メリークリスマス&良いお年を 🎅
「プログラマのための数学勉強会」過去レポート記事
2015/11/21 「第5回 プログラマのための数学勉強会」レポート(動画&資料付き)
11月21日 渋谷 dots. で開催された「第5回 プログラマのための数学勉強会」のレポート記事です!今回は初の土曜日開催で、会場の規模も開催時間も拡大してお送りすることができました。
当日の朝 とある記事 を見かけて知ったのですが、なんとこの日付を並べた数字は:
と、67 の 4乗 になっているのです! 67 は素数であるだけでなく 幸運数 の一つでもあり、さらに驚くことに左の数字を2桁ごとに分解して足すと:
となっているのです…!こんな珍しい日に数学勉強会を開催できたことはまさしく幸運でした。
それでは、早速発表内容を振り返っていきましょう!
1. 「内積が見えると統計学も見える」@kenmatsu4
「ベクトルの内積」の幾何的な意味を踏まえ、平均・分散・偏差などを内積を使って表現しなおすことで統計量が視覚的にイメージできるようになります。授業で習う「統計学」は表やグラフが出てくるばかりで「止まっているもの」という印象を受けがちですが、パラメータをアニメーションさせて見ることで統計量の意味が活きて見えるようになりました。
終盤、時間のためスキップした「主成分分析」は LT の最後に発表し直したので、続きを見たい方はページ下部へ!
[ 資料 ]
2. 「円柱、円錐以外の、展開図の描ける曲面」@taro_x
小学校で円柱や円錐の展開図を作って立体を組み立てたものですが、それ以外に展開図の描ける曲面はあるのでしょうか?前半では「可展面」であるための条件とそれを満たす見慣れない曲面を二つ紹介し、後半では「非可展」な曲面である球面を細かく近似して地球儀を展開する方法を紹介しました。応用として Theta360 で撮影した全天球イメージを印刷して球面に組み立てたものも見せてくれました。
[ 資料 ]
3. 「独学の不可能性について/群をつくる」@tsurumau
テレビでたまたまガロア理論の特集を見たことをキッカケに数学の独習を始めたという @tsurumau さん…しかし数学の一般書と専門書の間には越えられない壁があり、『初学者のための…』と謳う数学書でも何が書いてあるか分からない苦労を重ね「数学の独学は不可能だ」と悟ったそうです。
これは会場でも多くの共感を呼びました。僕も教科書で「自明」「簡単」「省略」といった言葉に出会うたびに脅かされ傷ついたものです。この発表中の @taro_x さんのツイート、そしてその反応の多さからも共感のほどが伺えます:
だからこそ独学だけでなく勉強会や公開ゼミに参加することが大事だと考えるようになったそうです。後半では「群の公理」をもとに、三つの元だけからなる集合にどんな演算を入れると「群」になるかを調べ、それがいかに特別なものであるかを調べるという内容でした。
4. 「回転する円のショートヒストリー」@Hyperion64
「深いこと考えずに、計算させて眺めて愉しむ」という主旨で、サイクロイドやエピサイクロイドなど色々な「回転する円」の式と軌跡、それにまつわる歴史や数学者のエピソードを紹介しました。「病的な曲線」は見すぎるとトリップしてしまうので注意とのことです。
Hyperion64 さんのブログにも不思議な曲線やイメージをたくさん標本されていて、こういう数学の愉しみ方もまた優雅で良いですよね。こちらの記事も是非ご覧ください!
5. 「Hybrid Monte Carlo 法の紹介」Kenji Ogawa
多重積分をモンテカルロ法を用いて数値計算するための、サンプルを効率的に抽出して計算する「ハイブリッド・モンテカルロ法」を紹介しました。サンプルの分布が分布に与えられたもの一致するための条件(Detailed Balance)と、それを実現する取り出し方(Metropolis法)をデモで説明した上で、分子動力学を取り入れることでいかにそれを改善できるかを説明しました。
[ 資料 ]
6. 「データに隠れた構造を推定して予測に活かす 〜行列分解とそのテストスコアデータへの応用〜」兼村厚範(産総研)
[ 資料 ]
Lightening Talk!
今回は LT 枠を設けることができました!各10分間の熱い数学トーク8連発をどうぞ!
1. 「球面上で踊る複素数」 @taketo1024
2. 「『これを買っている人はこれも買っています』実装してみた」 @tomzoh
[ 資料 ]
3. 「複素関数を見る」 @Hyrodium
[ 資料 ]
4. 「ゲームアプリの数学@プログラマのための数学勉強会」 @ryukbk
[ 資料 ]
5. 「グラフィックエンジニア必見!イージングの数学」 @butchi_y
[ 資料 ]
6. 「Google Apps Script で解く算数パズル」 @nekonenene
[ 資料 ]
7. 「プログラマのためのビジネス数学入門」 @masuipeo
[ 資料 ]
8. 「内積が見えると主成分分析も見える」 @kenmatsu4
まとめ
こうやって振り返ってみると本当に盛りだくさんでしたね…!今回も改めて「目に見える数学」は面白いものだなと感じました。歴史的に数学書は印刷技術の制約の中で書かれており、数学者たちの頭の中で広がる豊かな世界は伝えられにくい部分があったと思います。しかしコンピュータがこれだけ進化したのだから「数学の表現」はもっと色々あって良いはず。だからこそ今、プログラマが数学に対して果たすべき役割は大きい!と僕は思っています。
次回は少し先(来年3月?)になると思いますが、発表希望は随時受け付けてますので興味のある方は こちら からお願いします。 今回も写真は 馬場彩 さんに撮って頂きました!
こちらは会場に並べられた @taro_x さんと @Hyrodium さんの作品です。
Special Thanks!
CodeIQ さんと HULINKS さんのフードスポンサーで、休憩タイムにコーヒーと軽食を提供することができました。また dots. さんが会場を無料で貸し出してくれたお陰で、このイベントは参加費なしで開催することができました。100人規模のイベントを参加者/運営者の負担なしで開催できるのは本当にありがたいことですし、こういった動きがもっと広がっていけば良いなぁと思います。