Pythonイベント 

PyCon JP 2019 参加レポート

 

はじめに

 

こんにちは。データアナリティクス部の藤岡です。

9月16日-17日の2日間にわたり、「PyCon JP 2019」が大田区産業プラザPiOにて開催されました。

DATUM STUDIOとちゅらデータもスポンサーとして参加しました。

本会議は1,000枚のチケットが早々に完売するほどの注目を集めておりましたが、

開催当日も大盛況で、セッションによっては立ち見含めて満席となったり、バンケットでは一時身動きが取れなくなったりと、参加者の多さを実感しました。

オーラルセッションやポスターセッションを通じて、様々な発表者がPythonの魅力や有用性、活用事例などを発表されていました。話題は今問題となっているPython2のサポート停止のような言語自体の話から、フレームワークの話、分析や機械学習の話、CI/CDの話など、とにかくPythonが絡んでいるテーマを各々が自由に選択しているという印象を受けました。

 

また、この会議の前には開発者スプリントやチュートリアルデイなどのハンズオンイベントも開催され、
PyCon JP 2019を通じてさらにそのコミュニティを拡大しようという勢いが感じられました。
データ分析会社である弊社でも本会議への関心は高く、自分を含めた5名の社員が参加しました。

自分も院生時代からPythonを愛用しており、
業務でもツール作成やデータハンドリングなどでPythonにはお世話になっているため、
本会議への参加は願ってもない機会でした。

 

ここでは、自分が参加した初日の様子と、
各参加メンバーが特に気になったセッションやポスターについてレポートしていきたいと思います!

 

 

オーラルセッションレポート

 

Dashとオープンデータでインタラクティブに日本経済を可視化する

Dashはデータの可視化ライブラリのひとつです。DashはFlask、React、Plotlyが組み合わせて作られており、簡単にweb application化することができます。講演では Dashで作成したweb applicationをスライドの代わりに使用することが紹介されていました。

つまり、web上でPlotlyを扱えるのでインタラクティブに動かすことのできるグラフをお客さんに見せることができます。

https://dash.plot.ly/getting-started

こちらで Dashで表示されるグラフの例が紹介されています。

インタラクティブだと何が嬉しいのかというと、例えばお客さんからスライドの途中で突然ここが知りたいということを要求されたとき、その場で素早く結果を出すことができます。お客さんの要求を持ち帰る回数が減り、より早いサイクルで分析を回すことができるようになるとのことでした。

実際に自分が遭遇したケースだと、スライドを元にお客さんに説明しているときに、急にある顧客属性についての詳細を聞かれてもあまり答えられないということがありました。そのようなときに、上の例のようにデータを操作して表示することができればある程度お客さんからの急な要望にインタラクティブに答えることができたのではと思いました。

ただ、一般のプレゼンスライドに比べて作成に時間がかかってしまうとのことなので、必要な部分だけ Dashで作成するといった運用もいいのかなと思いました。

 

ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成

本セッションでは、ExcelをPythonで操作するライブラリ”openpyxl”や、小サイズのPython実行環境 “Embeddable Python” を用いて、Excel VBAで書かれた社内ツールをPythonに移植・配布した事例を発表されていました。

Excelは広く普及した表計算ソフトです。話者の会社でも、幅広い社員の間で利用され、社員間のコミュニケーションツールとなっている一方、Excel VBAで作られたツールは、VBAのコミュニティの小ささやコード管理のしにくさから、保守コストが高いという問題を抱えていたそうです。

本講演の事例は、Pythonを用いてツール開発を行うことで、利用者に負担をかけずに問題を解決することができた良い事例でした。その内容を、本稿筆者が重要だと感じた三つのキーワードに沿ってレポートします。

 

ライフタイム

ツールの保守が重要なのは言うまでもありませんが、鉄道や上下水道などの社会インフラのシステムは特にライフタイムが長いため、そのツールも中長期的な保守が必要だそうです。Excel VBAには前述の問題がある一方、Pythonは情報源、ライブラリ、ツール等が多い上にコミュニティも大きく、中長期的な保守の環境が整っているといえます。

 

CI(継続的インテグレーション)

ソフトウェアの保守にはCIが有用です。しかし、VBAは実行にExcel本体が必要であり、CIを利用できません。一方、PythonにはopenpyxlというExcelなしで利用可能なxlsxファイル操作ライブラリがあり、CIでの利用ができます。

 

配布

さて、ここまでPythonを持ち上げてきましたが、2019年10月現在、日本で広く普及しているWindows OSにはPythonがプリインストールされていないという問題があります。ツールを作成しても、ユーザにとって容易に導入・利用できなければ使用してもらえません。そこで、話者はEmbeddable Pythonを同梱して配布し、導入コストを下げました。さらに、batファイルを実行するだけのシンプルなUIを採用し、利用コストも下げました。

 

筆者には、業務でツール開発をしたが実際には使ってもらえなかった、という苦い経験があるので、ここで学んだことを生かして開発をしたいと思いました。

 

 

メディアが運用すべき持続可能なVTtuberを作る技術

こちらのセッションでは、メディアが運用するVTuber像の提案と声質変換の基礎から最近の研究動向について触れられていました。

メディアがわざわざVTuberを使うメリットってなんだろうと感じましたが、

  • 動画制作コスト
  • キャスター等、中の人の属人性

といった点において解決できることが挙げられました。

VTuberと言ってもテキストを読み上げるタイプのVTuberと、実際に話者が話した言葉を声質変換を行うことにより、どんな話者でも同一のキャラクターとして振る舞えるVTuberが例として紹介されていました。また本セッションでは後者の声質変換を行うタイプのVTuberを作る技術の基礎的な部分について主に取り上げれていました。

声質、声の高さ、声のかすれ具合を特徴として話者と対象となる声の分析をし、声の変換を行います。この過程で機械学習を用いることもあり、機械学習を用いた声質の変換では声質のみを用いて推定することが多いそうです。

現状では録音した声を分析して変換することが主流ではありますが、声をリアルタイムに変換する研究や取り組みも行われているとのことです。

今まで「音声の分析って難しそう!」と感じていて距離をとっていましたが、本セッションを通じて声質変換の基礎を知ることができ、その距離がグッと近づいたように感じました。発表スライド(https://www.slideshare.net/HiroyaKato1/vtuber-172745103)にはサンプルコードへのリンクも記載されているので、私もこの分野の学習をしてみてサンプルコードを参考にしながら、まずはあそびから自分自身の声を変換するチャレンジをしてみようと感じました。

 

 

チームメイトのためにdocstringを書こう

タイトルは「チームメイトのためにdocstringを書こう!」ということで、ku-muさんによるdocstringのすすめです。

発表資料はこちらで公開されています。

docstringとは、コード内に記述する関数やクラスに対しての説明文のことです。

例えば、関数に対しては次のように書きます。

 

def f(arg1):
    “””関数の概要を1行で書く

    0行以上の詳細情報を書く。
    省略することも可能

    :param arg1: arg1引数の概要
    “””
    pass

 

記述内容は、help関数で見ることができます。

 

>>> help(f)
Help on function f:

f(arg1)
    関数の概要を1行で書く

    0行以上の詳細情報を書く。
    省略することも可能

    :param arg1: arg1引数の概要

 

ku-muさんは「docstringを書くと何が嬉しいのか?」ということで、次の4点を挙げられていました。

  • 未来の自分とチームメイトにやさしい
  • 実装と説明文が同じコード上にあるので、更新忘れがおきづらい
  • TypeHintと併用すると、IDEでの補完とIDE内での型チェックが有効になる
  • Sphinxを用いることでドキュメントの自動生成が可能

 

過去に自分が書いたコードを見たとき、たとえ自分が書いたコードでも、クラスや関数の役割を忘れてしまっていて、読み解くのに時間がかかってしまう……なんてことがあると思います。そんなときに、過去の自分がdocstringを書いていればすぐに理解できるので、未来の自分にやさしいというわけですね。

次に、docstringの書式には代表的なスタイルが3つあります。標準的な「reST」、詳細に書ける「NumPy」、シンプルな「Google」です。ku-muさんのおすすめスタイルは「reST」で、Sphinxでのドキュメント自動生成とTypeHintを併用するときに便利だからだそうです。ちなみに、例として記載したdocstringは「reST」スタイルです。

最後に、docstringを書く文化を根付かせるための取り組みについてお話されていました。

メンバーにもdocstringを書いてもらうために、次のことをされたそうです。

  • 採用するdocstringのスタイルを決める
  • CIでSphinxによるドキュメント生成を自動化し、Github Pages等で公開
  • 「docstring書けてる率」をプルリクエストで表示する

負担が大きい作業を定着させるのは難しいので、ドキュメント生成の自動化など、作業を自動化する工夫は大事だなと思いました。また、「docstring書けてる率」については、ku-muさんが自ら開発したdocstringの網羅率を数値化するツール「doc-cov」を使用されていました。数値で示されると目標がわかりやすくなるので、モチベーションが上げられそうです。

 

 

ポスターセッション

 

トークセッションと同時に開催されていた、ポスターセッションで気になった発表についてまとめます。 

 

PySparkだけで頑張らないApache Sparkによる分散処理実装

このセッションでは、Sparkを利用するうえで、どこまでをPySparkで頑張り、どこからを他の言語で代替すべきかについて、発表者の実際の経験に基づいて発表していました。

Sparkはビッグデータを扱うのに適した分散処理フレームワークであり、データ分析基盤として広く使われています。

Pythonにおいては、PySparkを通してSparkを利用できます。しかしながら、SparkはScalaで書かれているため、PySparkでは対応しきれない問題点が数多く存在します。そんな時、無理やりPySparkで対応すべきか、Scalaを使うべきか、実際の業務において起こった問題についての試行錯誤を聞くことができ、とても参考になりました。また、カラム名に浮動小数点を含んでいるとエラーになることや、Python標準のloggingでは表示が崩れてしまうといった、業務でぶつかると辛い気持ちになるだろうTipsが聞けたので、PySparkを使い始めた身としては大変教訓になりました。

 

 

技術同人誌「現場で使える Django の教科書」の気になる情報を大公開

「現場で使える Django の教科書」(https://akiyoko.hatenablog.jp/entry/2018/06/05/075104)という技術系同人誌の著者が、どのように技術書を執筆しているのかについて発表していました。DjangoはPythonのWebアプリケーションフレームワークとしてメジャーであるにも関わらず、参考書となるような本が日本語で存在しませんでした。そんな中で出版されたこの本は、業務で使えることを意識した実践的内容が書かれており、個人的にとてもお世話になった本です。発表では執筆時間や売上といった苦労話を聞いて、執筆して頂いている方々への感謝の気持ちが増しました。

 

 

ポスターセッションの魅力

PyConでは、上記のような個人のポスターとは別にコミュニティによるポスター発表があります。

山梨・静岡・広島といった、各地方でのPythonのコミュニティや、

PyLadies、Django Girls、Scipy Japanといった特定のドメインに特化したコミュニティがあり、どのコミュニティも活発に活動していることを知るよいきっかけとなりました。

ポスターセッションの魅力はトークセッションとは異なり、発表者と直接コミュニケーションできる点です。普段は話すことができない方々から知見を聞くことができるのは大変貴重な時間であったと思います。

 

 

終わりに

 

PyConへは初めての参加であり最初は尻込みしていましたが、振り返ってみると、むしろもっと早く参加していればよかったと少し後悔しました。パイソンチョットデキルヒトから初心者まで、多くの人が集まっていて、それぞれにとって有意義な会だったのではないかと思います。

 

来年は登壇できるよう、実力をつけてまた参加したいです。

 

このページをシェアする:



DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。