皆様、こんにちは。PyCon JP メディアチームです。先日公開したカンファレンス1日目の記事 はいかがでしたでしょうか? 本レポートでは、引き続き2日目のキーノートやカンファレンスなどの様子をご紹介します。YouTubeへのリンクがあるTalkもありますので、ぜひご自宅や職場でカンファレンスの様子をご覧ください。
2日目基調講演 『Python3.6紹介 そしてPython3のこれから』― Andrey Vlasovskikh
(木村真)
トークセッションday2は、オープニング、そしてAndrey Vlasovskikh(アンドレイ・ヴラソフスキ)氏による基調講演「Python3.6紹介 そしてPython3のこれから」でスタートしました。Andrey氏はPyCharmのコミュニティリード、PyCharm用Vimエミュレーションのメンテナ、PEP 484型ヒントへの貢献者です。さらに、彼はPython向けfunctional parsingライブラリであるfuncparserlibの作者、ロシアのPython meetupの主催者としても活躍しています。
Andrey Vlasovskikh(アンドレイ・ヴラソフスキ)氏
自身の故郷サンクトペテルブルグを、白夜や美しい街並みの写真を交えて紹介してくれたあとに、「 Whot's new in Python3.6」と題して、2016年9月13日にでたPython3.6 beta1(リリース版ではなくまだベータ版です、と強調していました)の4つの特徴を語ってくれました。
Formatted String literals
Syntax for variable innotations
Underscores in numeric literals
Asyncronous generator and comprehensions
これによってノーテーションが使いやすくなったり、文字列リテラルにアンダースコアが使えるようになったり、非同期ジェネレータが使えるようになったりする、ということでした。
故郷の風景を紹介するAndrey氏
Andrey氏は、個人的にPython3系はすばらしいと思っているが、素晴らしいところだけ取り上げるのは不公平になるとして、客観的にPython2系との比較をしていきたい、と切り出しました。会場に対して「Python2系のみを使っている人は?」「 Python2系と3系を両方使っている人は?」「 Python3系だけを使っている人は?」と質問を投げ、Pycharmユーザの統計とも絡めて約半数がすでにPython3系を使っていて、Python2系と3系両方使っているというユーザも含めると56%がPython3系を使っているとのことでした。そして、1年後にはPython3系が2系を追い越すだろうと予測しました。その根拠として、PythonオフィシャルがPython2さよならPartyを2020年に行う予定であること、主要なWebフレームワークであるDjangoが2017年12月にPython2系のEoS(サポート終了)を宣言していることをあげています。
次にPython3.5から使えるようになったType Hint(型ヒント)に言及しました。Type Hintは標準的な表記法として使われ、コードチェックやエラーチェックの際に役に立っています。このType Hintについても、良い点と悪い点の両面から取り上げました。まず良い点として、型チェック、コード補完、自動リファクタリング等を挙げ、よりモダンな言語になり、精度の高いドキュメントを残すことができること等を挙げました。一方で悪い点として、より多くのコードが必要になったこと、小さなプロジェクトには不要であること、ツールが全てのフィーチャーをサポートしていないこと(PyCharmでも同様だが、サポートを約束している)などを挙げています。
Andrey氏は型付けについても触れており、静的型付けはPython2系とPython3系の間で全ての互換性があり、動的型付けも2系から3系へのマイグレーションが進んでいること、ストレージサービス大手のDropBoxのサービスはPyhon3系で書かれていることも指摘しています。
続いて大きな特徴である非同期プログラミング(async/await)についても言及しました。非同期プログラミングが可能になりtornadoやtwistedに代表されるコンパクトなフレームワークに活用されている一方で、全てのコードに非同期バージョンを書かなくてはいけないこと、DjangoやFlaskなどはブロッキングI/Oに依存しているのでtornadoなどに移行しなくては使えない点、非同期処理はCPU演算処理の負荷が高い点などを指摘しました。
最後に、Python3系を使いたければ良い点も悪い点も理解することが大切である、と基調講演を締めくくりました。Andrey氏には会場から惜しみない拍手が送られました。
Andrey氏の講演動画 (32:20あたりから)
VIDEO
「Raspberry Piで日本の子供たちにプログラミングのパッションを伝えよう」 ―Antoine Choppin
(山口祐子)
幼少期からパソコンに慣れ親しんできたアントワン・ショパン氏。どのようにしてこの楽しさを子供たちに伝えるか、その試みを紹介しています。
Antoine Choppin氏のセッションの模様
ショパン氏は、子供たちにプログラミングのパッションを伝えるために、"Small", "Fun", "Story", "Language", "Friends"が重要と語りました。
まず"Small"(小さい) 。小さいパソコンといえばRasberry Piが有名です。また、KANOというRaspberry Piにキーボードやスピーカーがセットになったキットも人気です。
次に"Fun"(楽しい) 。先ほど言及したKANOには子供たちが喜びそうなアプリケーションが付属しています。たとえば"Make Minecraft"(オリジナルのマインクラフトを作る)や"Terminal Quest"(RPG形式でコマンドラインを勉強できる)など、楽しみながらパソコンを学ぶことができます。
次は"Story"(ストーリーを理解できる)と"Language"(自分の言語で) 。KANOはとても優れていますが、対応言語が英語のみで、多くの日本の子供たちは理解することができません。そこでショパン氏はKANOをi18nで日本語対応させるという試みを行っています。課題はいくつかありますが、現在では多くのKANOアプリケーションの日本語化がなされ、日本の子供たちもKANOを楽しめるようになりました。
最後に"Frinds"(一緒に集まる) 。ショパン氏は「ペンギン」という小学生向けプログラミングクラブを主催しています。毎月土曜の朝に集まり、友達と一緒にゲームなどのプログラムを作るという活動内容です。子供たちだけでなく、お父さんお母さんも参加し、みんなで楽しんでいます。プログラミングは基本一人で行うものではありますが、仲間と一緒にできると楽しさが倍増します。
このように、ショパン氏はRaspberry Piという素晴らしいパソコンを用いて、子供たちにプログラミングのパッションを伝えています。みなさんも周りの子供たちと一緒に、楽しくプログラミングを学んでみませんか?
VIDEO
「Pythonで実現する4コマ漫画の分析・評論」―Shinji Sato
(木村真)
day2に行われた「Pythonで実現する4コマ漫画の分析・評論」 をご紹介します。スピーカーのShinji Sato氏は、普段は株式会社ビープラウド(シルバースポンサーにもなっていただきました!)に所属し、Pythonを使ったウェブサービスの開発に従事しているとのことです。
ここで恒例?となった感のある正装(Sato氏の正装は「ゆゆ式」Tシャツ)に着替えて、あらためてセッションを進行していきました。
「正装」に着替えるShinji Sato氏
4コマ漫画分析に至るきっかけとして、ある時にアニメ監督にインタビューすることがあり、そのことでより多角的に分析をしていきたいと思ったと語るSato氏。コマ画像の切り出しの自動化、「 どのコマにだれがいるのか」のラベリング自動化、集めたデータの分析をやりたくて、ライブラリが豊富で氏が慣れているPythonで実現しようと思ったそうです。
具体的に4コマ漫画におけるデータを「それぞれのコマ」「 扉絵」「 柱ネタ」「 その他、表紙、カラーページ等」に分類し、さらに一番重要と位置付けたコマの部分を「人物:誰が、どの順番で、どんな映り方」「 吹き出し:誰が、どの順番で、どんな形」「 セリフ:どんな内容、吹き出し外にあるものか」「 背景:無背景、スクリーントーン、場所」「 それぞれのコマの繋がりはどうか」といった切り口で分析を進めることにしたそうです。
処理の流れとしては、漫画の裁断&スキャン、PDF化からPNG画像変換、そしてコマの切り出しの流れです。環境としてはPython 3系、OpenCV 3.0.0以上、ImageMagick、Google Cloud Vison APIを前提としています。
PDFからページごとのPNG画像変換はImageMagickで問題なく実施できます。傾き補正などもImageMagickの機能を使っています。一番重要と位置付けているPNG画像から1コマごとの画像切り出しについては、平均画素値誤差法(縦・横それぞれの方向に画素値の平均を取り、平均画素値が低いところに枠線があると判断)で実現したそうですが、枠から飛び出す表現にはこの方法は弱いとのことでした。この弱点を補うために、全ページに対してどこで切り取るかを決めた後に、パディングをつけて大きめに切り出し、さらに平均画素値誤差法をかけることで補ったそうです。画像処理を高速化するためにNumPyも使っています。
セリフの抜き出し用OCR機能は、縦書きの日本語にも対応し、かつ簡単に使えることでGoogle Cloud Vision APIを採用したとのことです。
最後に、人物認識、吹き出し検出、背景の種類などを機械学習を使って実現したい、そしてデータ分析として人物配置やカメラワーク、会話内容などを分析したい、と今後の展望を語ってくれました。
Sato氏の4コマ漫画(特にゆゆ式)への愛、情熱駆動開発の素晴らしさが伝わってくる素晴らしいセッションでした。
VIDEO
「Deep Learning with Python & TensorFlow」―Ian Lewis
(德田拓也)
Ian Lewis氏による「Deep Learning with Python & TensorFlow」 のセッションを紹介します。
Ian Lewis氏
Ian氏はGoogleでDeveloper Advocateとして勤務しており、PythonやGo、Kubernetesのコミュニティーに参加しているそうです。
まず、Deep Learningの紹介の前に、データ分類についてTensorflowのplaygroundでデモをしつつ、以下の4つについての解説がありました。
データの分類
ニューラルネットワークの各層とその役割
tensor
学習のデータフローグラフ
次にBreakthroughsとして以下の点を挙げました。
Inception Modelの解説
ニューラルネットワークのモデルの学習データとパフォーマンスについて
ハードウェアリソースについて
GoogleでのDeep Learningの活用事例数について
これまでさまざまなニューラルネットワークのモデルが登場し、学習データの量に対するパフォーマンスが改善されていきました。DNN(Deep Neural Network)は大規模行列を計算・処理する必要があり、GPUなどを使用しても学習に数時間から数日かかってしまいます。GPUより演算能力があるスパコンを使おうにも一般の人はそれを所有やアクセスする権限は持っていなので、学習するのには分散学習をする必要があると説明していました。
そしてGoogleではDeep learningのモデルが2014年から急激に増え、AlphaGo、Maps、GmailやYoutubeなど、さまざまなサービスで活用していることが紹介されいました。
次にTensorFlowについて
Tensorflowの概要
データ構造とコンセプト
演算の種類
の解説があり、TensorFlow MNIST tutorialを通して動作の解説も行われました。
このセッションを通して、ニューラルネットワークとは何なのか、どのように発展してきたのかがわかった上で、Tensorflowの概要とチュートリアルを通した簡単な使用方法がわかり、非常に楽しめるセッションでした。
VIDEO
「pandasによる時系列データ処理」―Masaaki Horikoshi
(木村真)
day2に行われた「pandasによる時系列データ処理」 を紹介します。
スピーカーのMasaaki Horikoshi氏は、コンサルティング企業にてデータ分析業務に従事し、 オープンソースのデータ分析パッケージであるpandas / Dask のコミッタを務めています。Horikoshi氏は本セッションの目的を「時系列データ分析のための効率的な処理を知る」「 時系列モデルのイントロダクション」と位置付けました。
Masaaki Horikoshi氏
pandasとは?
pandasはデータ分析のためのデータ構造と、データの前処理/集計において便利な関数/メソッドを提供しています(Rの"data.frame"+αに相当) 。
メリットとしては現実的な(汚い)データに対応できること、直感的に操作できること、高速に動作することを上げています。データ構造はSeries(1次元)DataFrame(2次元)Panel(3次元)と次元ごとに定義されており、ラベルを持っていてラベルごとにデータ検索ができるようになっています。DataFrameでは行と列にラベルを持ち、列ごとに型を持ちます。Pythonのリストと同じように扱えて、用意された関数により集計できるようになってます。ベクトル化された計算、グループ化、変形、多様な入出力、柔軟な時系列データ、可視化といった特徴を持っています。
pandasによる時系列データ処理
時系列データはある現象の時間的な変化を、連続的に(または一定間隔をおいて不連続に)観測して得られた値の系列を言いますが、現実には必要な周期が異なったり、周期的ではないイベントが発生したり、時間でラベル付けされていなかったりします。そういったときにpandasで前処理を行うことで扱いやすい形にできます。
生成する時系列の周期は細かく指定でき、月末・月初・週頭・週末など現実に使える周期を指定できます。また日付文字列のパースについて様々なフォーマット(日本語日付など)にもフォーマット指定で対応しています。データ選択では「ある日を起点に1年分」といった指定の仕方のほか、部分文字列(2016-03のような表現)などができます。プロパティアクセスが豊富に準備されていて、日時の属性に応じた処理が簡単に書けるようになっています。
続いて日時データの前処理として、日時の周期変更、欠損値の補完、前後の値との比較/計算が簡単にできることが説明されました。
集計
日付データの集計ではグループ化(pd.Grouper)メソッドで列名と周期を指定した集計が可能です。これはクロス集計(pd.pivot_table)の際に力を発揮します。また、日本の祝日などを考慮した処理が可能になるjapandas(Horikoshi氏が作ってgithub上で公開)も紹介されました。
時系列データの統計モデル
時系列の関係や将来の予測、変化点/異常値を検知したい時など適切なモデルを選択する必要があります。Pythonパッケージでは有名どころでは「StatsModels」「 PyFlux」がありますが、使いたいモデルに合わせて選択し、必要に応じてRのパッケージ(rpy2,pypeR)を使ったほうが良いそうです。そして、具体的な事例(実際のサンプルデータからトレンド、季節性、残差に分解して分析、予測)を交えて、非常にわかりやすく解説されました。
最後に、開発ロードマップが示されて、NumPyの切り離し(互換性は維持)など、pandasの大きな方向性にも触れられていました。
セッションは高度な内容でしたが、非常に興味深いお話でした。
VIDEO
2日目 ライトニングトークからクロージング
(橋本安司)
さて、これまでPyCon JP 2016の各Talkのレポートをしてきましたが、これでいよいよラストとなります。カンファレンス2日目のLTとクロージングをレポートさせていただきます。
2日目LTは7つ行われました。そのうち2つを簡潔に紹介いたします。
LT紹介の1つ目は株式会社フンザの小松氏による「Apexとpython-lambda-localで始めるAWS Lambda Function開発」です。2016のダイヤモンドスポンサーでもあるフンザのサービス『チケットキャンプ』のマスコットキャラ、チケキャンケンのキグルミに身を包んだ小松氏ですが、トーク内容はとても真面目なものでした。Apexとpython-lambda-localの説明から、実際に作成されたモジュールの紹介、そして今後の課題などがLTでは紹介されました。実際に動く様子などもありますので、動画 でぜひぜひご確認ください。
小松氏によるLT
LT紹介の2つ目はFuller,IncのSueda氏による「走ルーター」もとい「CPython VS MicroPython on embedded Linux」です。ルーターに入っているLinuxをハックしてPythonを動かし、CPython と MicroPythonの動作の早さの違いや、メリット・デメリットを紹介しています。ルーターをハックして、スマホをコントローラーにルーターを走らせている映像は一見の価値ありです!!動画 でチェックしてみてください。
LTの盛り上がりを受け、カンファレンス最後のコンテンツ、クロージングへと進みます。次の日開催されるDeveloper Dayと講師の皆さんの紹介、先ほど登壇された株式会社フンザの小松氏のチケキャンケンが盛り上げるプレゼントコーナーなどが行われ、いよいよ閉会の挨拶となります。
座長鈴木たかのりによるクロージングトーク、スタッフ撮影と進み、一般社団法人PyCon JP代表寺田学から、2016の総括を含む挨拶と続き、2017の発表で座長交代のサプライズがありました!! 鈴木たかのり座長、3年間本当にお疲れ様でした!!
お疲れ様たかのり座長
そして皆様、2017年の新座長、吉田俊輔をよろしくお願いいたします!!
吉田新座長をよろしくお願いします
「Everyone's different, all are wonderful.」をテーマに、Pythonに関わる色んな人が出会える場を目指した2016年、皆様いかがでしたでしょうか?紹介しきれなかったTalkだけではなく、カンファレンスの前日にはTutorialが、翌日以降にはDeveloper Dayが開催されています。子供向けワークショップやポスターセッションなど、記事だけでは紹介しきれないコンテンツがまだまだあります。
2016年来ることができず、興味を持っていただけた方は2017年はぜひぜひ来ていただけるとスタッフ一同嬉しいです!!
スタッフ集合
また、スタッフの2017募集も行っています。PyCon JPってどんな人達で作られているのだろう?と興味を持たれた方は、ぜひぜひ応募してみてください!!(ちなみにこんな人たち です)
それでは皆様、PyCon JP 2017でお会い出来るのを楽しみにしています。来年もよろしくお願いいたします!!