はじめに
2023年10月26日(木)~10月29日(日)までの4日間PyCon APACのイベントがあったのですが、その4日間のうち27日(金)~29日(日)までの3日間参加してきたのでレポートを投稿します。
3日間全ての参加レポートを記載すると非常に長いのでDay1、Day2、余力があればスプリントに分けて投稿予定です。今回はDay2です。
Day1はこちら
PyCon APACとは
PyCon APACについての説明が公式HPに記載されていたので引用します。
PyCon APACは、プログラミング言語 「Python」を中心としたボランティアによる非営利の年次カンファレンス です。このカンファレンスの目的は、 Pythonプログラミング言語とその周辺技術を探求し、議論・実践できる場を提供すること です。運営チームは、 アジア太平洋地域における国または地域が主体 となり、現在では、シンガポール、マレーシア、インドネシア、フィリピン、タイ、韓国、香港、ベトナム、日本、台湾、インド、バングラデシュが毎年交代して開催され、 2023年は日本のメンバーが主体 となり運営します。そして、日本での開催は2013年以来の10年ぶりとなります。
日程は2023年10月27日(金)~28日(土)で、前日の26日にチュートリアル。29日にスプリントというイベントがありました。
今年は10年ぶりのPyCon APAC日本開催&PyLadies Tokyoの運営スタッフの片寄里奈さんがPyCon APAC 2023の座長をされていたことと、PyLadiesとしてもポスターセッションやスプリントでワークショップを行う予定だったので参加してきました!
参加したセッション
時間 | タイトル | スピーカー |
---|---|---|
10:00~ | オープニング | PyCon APAC staff |
~11:35 | Through the looking glass: 10 years of Python Organizing Lessons and Tribulations | Lorena Mesa |
13:30 ~ 13:45 | How much data can we cram into 16G RAM with less budget? | Joeun Park |
13:55 ~ 14:10 | Digital TransformationをPythonを使って進めよう! | hideyuki ogawa |
14:10 ~ 14:40 | Python x 法学〜日本の法のテキスト分析・地図可視化への試み〜 | Ryo Namiki |
14:40 ~ 15:20 | Break(ポスターセッション) | all |
16:00 ~ 16:30 | Pythonのワークフローエンジン Apache Airflowを用いた大規模データパイプライン構築と改善 | Masato Nakamura |
16:40 ~ 17:40 | LT & Closing | all |
印象に残ったセッション(Day2)
Through the looking glass: 10 years of Python Organizing Lessons and Tribulations (Lorena Mesa)
Lorenaさんは今はGitHubで働いているそうなのですが、10年前は初心者のエンジニアだったそうです。
LorenaさんがなぜPythonを始めたのか、どのようなきっかけでPythonや他のコミュニティに参加するようになったのか、コミュニティでどのような活動をしてきたのかをアメリカの社会的背景を交えつつ話されていました。
また、Pythonを使用する人が年々増加していること、幅広い人が使用していること(Lorenaさんの姪御さんは6歳で既にPythonの学習をしているそうです。)を受けて、Pythonを使用する人、データを活用するに倫理感が必要なことについても話されていました。
そして、今後コミュニティを活発にさせるためにどういう課題があるか、コミュニティの支援制度についても話されていました。
PyLadies シカゴを立ち上げたのもLorenaさんだったそうです。
印象に残った点
2008年のオバマ元大統領の選挙でデータサイエンスを活用していたそうで、Lorenaさんも選挙キャンペーンに関わっていたそうなのですが、選挙でデータ分析を活用していた(しかも2008年に)のが驚きでした。
また、医師であれば人々の健康のために仕事をすることを誓うそう(ヒポクラテスの誓いや、WMAジュネーブ宣言)なのですが、それと同じように、技術の世界でも必要なのではないかということでData for Democracyというコミュニティの宣言文を紹介されていました。
実際に宣言文のドキュメントを読んだのですが、
個人的には「People before data:データの前に人がいる」ということと、
「Open by default - use of data should be transparent and fair.:データの使用は透明かつ公平である必要がある」という箇所について、
データだけを見ているとデータ分析を行うための材料の数字だと思ってしまいがちなので、そのデータは一人ひとりの人の情報がもとになっていることもあるということ、データを公平に取り扱う必要があることを肝に銘じておきたいなと思いました。
以下GitHubに全文が記載されているドキュメントが公開されていたので共有します。
Data for DemocracyのHPはこちら
また、Python Software Foundation(PSF)には助成金制度があり、地域でPythonのMeetUpを行いたい、大学でワークショップを行いたい、開発のスプリントを行いたいというような場合に申請すると支援金が出ることがあるそうなのですが、Asia圏では8%しかGrantsが無いそうです。私は今回PSFと支援金が出ることを初めて知りました。
PSFのブースに行った際に聞いた話なのですが、日本ではPSFの会員数が少なく、知名度もまだまだ低いそうで知名度を増やしたいそうです。
PSFのミッションとして、
Python Software Foundation は、オープンソースの Python プログラミング言語を支援する組織です。私たちは、Python と Python コミュニティが成長し、繁栄するための条件を作り出すことに専念しています。
とあり、もっと助成金などの制度を活用してコミュニティを活発にさせられると話されていたのも印象深かったです。
とりあえず、私はLorenaさんの話とPSFのブースでの話を聞いてPSFに会員登録しました。
まだまだ若輩者ではありますが、PyLadies Tokyoの運営スタッフとして、PSFへの理解を深めるとともに活動を頑張りたいなと思いました。
PSFの公式サイトはこちら
How much data can we cram into 16G RAM with less budget?(Joeun Park)
制限のあるメモリ容量(今回は16GB)で、ビッグデータを処理するためにどのように工夫して処理できるようにするかを話されていました。
メモリ使用量を最小限に抑える方法を模索した結果、csvファイルをparquetファイルに変換することで大幅に削減できること、そこから更に必要最低限のデータのみにデータを整えるとどのくらい削減できて、処理時間がどれだけ削減できるかを実際の実行結果を交えつつ話されていました。
印象に残った点
実務でもparquetファイルを扱う機会が多々あるのでビッグデータを扱う際はparquetファイルという認識はありました。
ただし、とりあえず大きいデータを処理するときはparquetファイルを使うという認識だったので処理時間がどう変わるのかを検証したことはありませんでした。
今回実際に何GB容量が減らせ
どのくらい処理速度が変わるのかという事例を知ることができて良かったです。
最低限のコストで最大限データを活用するためのポイントとして以下の内容を挙げられていました。
実務でも意識したいなと思います。
- データのサンプリングと未使用データの削除:代表的なデータサンプルで作業し、不要なデータを破棄する。
- チャンクとイテレーター:データを小さな塊に分割して処理し、反復子を利用してインクリメンタルに作業する。
- メモリ効率の良いデータ構造:numpyの配列やpandasのデータフレームなど、メモリ使用量に最適化されたデータ構造を選択する。
- データ圧縮パーケットフォーマットの使用:パーケットフォーマットを使用してデータを圧縮し、メモリフットプリントを削減します。
- 並列化:複数のコアやマシンに計算負荷を分散するための並列処理技術の活用。
- データベースの使用:SQLiteやPostgreSQLのようなデータベースシステムを使用して、大規模なデータセットを効率的に保存し、クエリを実行する。
- 分散処理フレームワーク Dask、Sparkなど:DaskやSparkのようなフレームワークを分散処理や大規模データの処理に活用する。
Digital TransformationをPythonを使って進めよう!(hideyuki ogawa)
DX化が進んでいる中で多くの企業が社内データを蓄積、分析・活用し始めていると感じているそうです。
次のステップとして、これらのデータを社会の動きと組み合わせることでよりビジネスを発展させることができるのではないかとのことで、その方法としてオープンデータの活用を挙げられていました。
ただ、ビジネスに使いやすいオープンデータは限られているので、限られた中でも役立ちそうなオープンデータの紹介(公開されている気象データ、地下鉄のデータ)と、どのように活用するか、活用するためにPythonがなぜ有用なのかを話されていました。
印象に残った点
私の好きなライブラリのPlotlyを使用しているという説明を見てこれは聴かねば!と思い参加しました。
コードが時間の都合で省略されていたのは残念ではありましたが、GitHubに公開されているとのことだったので後で(この記事が投稿でき次第至急)読みたいと思います。
オープンデータについて紹介されていた際にオープンデータも大規模化しているとのことだったので、データファイルをparquetファイルに変換してデータのサイズを小さくしてからJupyterやGoogle Colabでファイルを読み込んで、DataFrameとして使用するのが良いのかなと前に聞いたセッションと関連させて考えながら聴くことができたので今回直前のセッションと続けて聴くことができて良かったです。
データ活用のイメージとして、
- 課題の抽出
- データ収集
- データ前処理
- データ分析
- 意思決定
- 行動
- 結果予測
の上記の流れをループするのが望ましいとのことで、PDCAではなくOODAループ(常に観察し変化に対応し、行動する)が良いと話されていたのですが、OODAループは初見だったので今回知ることができて良かったです。
実務でも意識したいなと思いました。
また、データの観察方法についても紹介されていたのですが、その中でJupyterで観察する際の問題点として要素を切り替える際に毎回Shift+Enterしないといけないという手間があったのですが、panelを使うとShift+Enterせずに楽に各要素を確認できるということで実演されていました。
実際に見ると確かに簡単に切り替えて確認できそうだったので手元で試してみたいなと思います。
小川さんの発表資料
Python x 法学〜日本の法のテキスト分析・地図可視化への試み〜(Ryo Namiki)
書いててバテてきたのでセッションの内容はPyCon APAC 2023の公式ページから引用させていただきます(最初からそうすればよかった。。。)。
法は誰にとっても重要な存在でありながら、その難解さから普段は敬遠してしまいがちです。
この発表ではPythonを駆使したデータ分析・可視化により、法に見え隠れする日本の歴史などを聴衆の全員に分かりやすく示します。 発表ではPythonを使ったテキスト分析および地理データとしての分析を行いました。ワードクラウドや地図を活用した可視化からさまざまな知見が得られました。
Pythonと法という組み合わせはなかなか見ないなと思ったのと、私自身法学部卒で法律とPythonを使ったデータ分析ってどうやって行うんだろうという興味がわいてきたので聴いてきました。
印象に残った点
こういう用語があるよと紹介されていたのですが、法学をリーガルテック、経済学をフィンテックというのは聞いたことがあったのですが、地理学を防災テックというの初めて聞きました。
また、自己紹介の箇所で趣味で法律の学習をして宅地建物取引士やFPを取ったと記載されていて、趣味で取るというのがすごいなと驚きました。
なぜPythonなのかというところでPythonはテキストや地図データを処理するためのライブラリが豊富で、データ取得・分析・可視化にも長けているという特徴があるためPythonだけですべてできてしまうとのことだったので、民間・行政のオープンデータを調べて意外なオープンデータを分析・可視化するのも面白そうだなと思いました。
今回利用されていた法令データベースは出典の明示が必要ではあるものの、二次利用が可ということで法令のデータを取得されていたのですが、持ってきたデータが法令名、公布日、カテゴリで分けられていて、なんとなく法律系はアナログなイメージがあったのでちゃんと整理されたデータになっていることに驚きました。
また、シンプルにキーワードで一致するデータを取得するだけだと日本の地名ならではの問題(京都をキーワードにすると東京都のデータも持ってきてしまう)があるということで、こういった問題を解消するために自然言語処理の中の「形態素解析」を使われていました。
形態素解析を使うと自然言語を最小の意味単位(単語)に分解することと、単語の品詞などを判別することができるそうで、学校の授業で助詞や助動詞、動詞などを判別するのに苦労したのを思い出し、今はPythonでこんなことまでできてすごいなと勉強になりました。
こちらのセッションを聴くまで法律と地理データをPython(データ分析)というのは全く関わることの無い分野だと思っていたのでデータ分析の活用範囲の幅広さに驚きましたし、普段なかなか目にしない意外なデータを様々な視点から可視化すると以外な発見が得られて面白いなと思いました。
並木さんの発表資料
Pythonのワークフローエンジン Apache Airflowを用いた大規模データパイプライン構築と改善(Masato Nakamura)
企業の活動をより良くするために、データから価値を生み続けるためにデータ活用を行うことが広く行われるようになってきました。
本公演ではPythonを使って大規模なデータパイプラインを構築していくための考慮すべき点を紹介し、より可用性の高い実行環境を構築する方法を共有します。
特にECサイトでの増え続けるデータに対してApache Airflowのマネージドサービス であるGoogle Cloudの Cloud Composerを使うと、より早く、よりロバストなワークフローが実装しやすくなることを共有します。
こちらは大規模なデータを集計・処理を行う際に便利なApache Airflowの使い方とポイントを紹介されていました。
実務でもApache Airflowを使っているので必聴だなと思い聴いてきました。
印象に残った点
そもそもApache Airflowは何なのかというと、ワークフローエンジンというもので、特定の業務プロセスやタスクの実行を自動化、管理、監視するためのツールまたはソフトウェアプラットフォームです。
中村さんの携わっていたMonotaROの商品情報基盤では、Airflowを使う前はSQLをテーブルの依存関係に従って順番に実行し、データの変換処理実行、エラーが起きていたら再実行、外部システムとの連携という多くのタスクをバッチ処理とBigQueryで行っていたそうなのですが、
業務ロジックとそれ以外に分けて整理した結果、タスクの依存関係とリトライ処理をフルスタックで実装できるAirflowを使うことで注力したい業務ロジックに集中できるようになったそうです。
この流れをアーキテクトの図を合わせて紹介されていて理解しやすかったです。
そして、Airflowで使用するDAGについて、「依存関係のあるタスク同士をどの順番につなぐか」を記載したものという認識でどうやって書くかをある程度知っている程度だったのですが、DAG=Directed acyclic graphでその意味が有効非巡回グラフということを初めて知りました(忘れていただけかもしれないですが)。
今回せっかく知ったので覚えておきたいと思います。
また、Airflowは多くのタスクを実行できるので便利な反面、安定運用は難しいという問題があるのですが、その問題を解決するためにマネージドサービスを利用しているそうです。
Google CloudとAWSでそれぞれあるとのことなので業務ロジックとの親和性によって選択して使うと良さそうです。
私はマネージドサービスと組み合わせて使ったことが無いので、実際にマネージドサービスを利用するとどれだけ運用の負荷軽減につながるのか気になっていました。
例えば、DAGに依存関係を持たせた後の全体の管理が難しい(どことどこが依存しているのか、処理時間のつながりが分かりにくい)のでそこを解消してくれるのかというところです。ただし、中村さんはGoogle Cloud、私は実務の方でAWSという形で業務ロジックや周辺機能で別のクラウドベンダーを使用しているので、AWSのAirflowマネージドサービス(Amazon Managed Workflows for Apache Airflow)を実際に触ってみるのが良いかもなと思いました。
そして、運用のポイントの一つとして改善し続ける必要があるということをおっしゃっていたのですが、
改善し続けるために必要なポイントとして以下三点を挙げられていました。
ここは超重要なポイントだなと思いました。
- 処理を再利用可能にする(TaskGroupで関数をまとめる)
- 最新のApache Airflowを利用すること(つまり定期的なアップデートが必要)
- アラートを意識してログを出力する
TaskGroupはAirflow2から利用できるようになったのですが、Airflow(バージョン1)から結構書き方が変わって読む際に戸惑ったのですが、今回のTaskGroupの記述例を見て知識の補完ができました。
とはいえ、まだTaskGroupへの理解は怪しいので理解を深めてもっと使いこなせるようになりたいなと思いました。
最後にまとめとして、Airflowの運用のポイントとして、Airflowを使って終わりではなく、改善しつづける必要があること、目的が何なのかに集中する必要があること、
上記二点を意識してApache Airflowを使用すると運用が楽になるというポイントを知ることができて良かったです。
ワークフローエンジンを使っていない、聞いたことはあるけどピンときてない、だけどバッチ処理でそこそこの大きさのデータを扱っている。という方、そしてAirflowを実際に使っている方にも必聴のセッションだったと思います。
中村さんの発表資料
2日目の所感
1日目にブースを周ったり、会場の様子を見たりしていたので2日目は気になるセッションをなるべく聴きに行っていました。
Lunchの際にも10数人で集まって食べたりしていたのですが、
その後のポスターセッションの際にもPyLadiesのみんなで集まって写真を撮ろうと呼びかけたところ多くの方が集まってくれました。
盛り上がって良かったです。
そして、Closingの際に来年のPyCon APAC 2024の情報が出ました!
なんと来年はインドネシアだそうです!
そして日程は10/25~27とのこと!
Closingの後は公式パーティーでした。
公式パーティーにも参加したかったのですが、翌日10時~のスプリントに起きられる気がしなかったので参加はやめておきました。
が、パーティーはそんな長時間やってなかったらしいのと、オリジナルビールがめちゃくちゃ美味しかったらしいので参加すればよかったかなとちょっと後悔してます。
3日目のスプリントに続きます。
今回参加したセッションのYouTubeリンク集
LorenaさんのThrough the looking glass: 10 years of Python Organizing Lessons and Tribulations
JoeunさんのHow much data can we cram into 16G RAM with less budget?
小川さんのDigital TransformationをPythonを使って進めよう!
並木さんのPython x 法学〜日本の法のテキスト分析・地図可視化への試み〜
中村さんのPythonのワークフローエンジン Apache Airflowを用いた大規模データパイプライン構築と改善