Lean Baseball

No Engineering, No Baseball.

実践Streamlit & Flask - AIプロジェクトをいい感じにする技術 - PyCon JP 2021で登壇しました+ふりかえり

ハンカチ王子ことYuki Saitoの引退試合を見ながら書いてます⚾*1

それはさておいて, PyCon JP 2021にて, 「実践Streamlit & Flask - AIプロジェクトのプロトタイピングから本番運用までをいい感じにするPythonicなやりかた」というトークをしてきました.

【スライド】実践Streamlit & Flask - AIプロジェクトをいい感じにする技術

発表中にお披露目したデモアプリケーションもソースコードを公開しました.

github.com

PyCon JPでは初の試みだった「Discordを仮想のカンファレンス会場にして盛り上げる」という方向性にも助けられ, いい感じに盛り上がり, フィードバックも沢山いただきました.

トークを聴いてくださった皆様, そしてPyCon JPスタッフの皆様本当にありがとうございました!

このエントリーでは,

  • 自分の発表のふりかえり
  • PyCon JP 2021全体を通しての感想(印象に残ったトークなど)

そんなテーマでふりかえりたいと思います.

おしながき

自分のトークについて

まずは自分のトークについて.

応募のきっかけ

自分がエンジニアとして成長したり次のステップに進むキッカケとなったPyCon JPなので毎年何かしら話したいというお気持ちがあって応募しました.

...というのもありますが, 今回のネタについてはAIワクチン接種予測のプロジェクトが立ち上がってから明確にPyCon JPでの登壇を意識していました(つまり, 計画通りのCfPだった).

jxpress.connpass.com

#jx_tech_talkでの登壇資料(StreamlitとFlaskではじめる, 爆速プロトタイピングとTV砲対策 #jx_tech_talk)をまとめつつ,

  • #jx_tech_talkでは尺の都合で触れなかった「Streamlitの実践的な使い方」「クラウドサービスの選び方」を盛りつつ
  • 自分がエンジニアとして最も大切にしていると言っても過言ではない「Agilityを高めるための開発スタイル・プロセス」の話を追加

というのを基本線にCfPをまとめて提出した結果, 採択された感じです.

なお, 他にも話したいテーマがありCfPは採択されたネタに加えて2本(合計3本)出しましたが, (事前資料・引用資料の多さからしても)今回のテーマが選ばれるだろうな多分ってお気持ちでいました*2.

話すストーリーはある程度決まっていたとはいえ, 若干もやもやしている部分もあったので,

という調整登板(調整登壇)を行い, いい感じに仕上げました.

Pythonicなやりかたis「Agilityを爆上げする」

30分間, 結構盛り沢山な話をさせてもらいましたが言いたいことは

  • 「Pythonicであること≒Agilityを爆上げすること」
  • 「同じPython使いでもエンジニアとデータサイエンティストは違う生態系の生き物」

この2点でした.

f:id:shinyorke:20211017160531j:plain
これが言いたかったンゴ

Agilityの話は, エンジニアな自分としては憲法であるAgile Manifestの話を特に強めにしました.

PythonのコミュニティのPythonなカンファレンスなので,

  • Streamlitのいい感じな使い方
  • FlaskやGCP(クラウド)の活用方法

といった手段「How」の話をしっかりやりつつ, お気持ちとしては,

AIプロジェクトをいい感じにするHowがたまたまPythonなだけであって, 真に大切にすべきは「世の中にさっさとアプリケーションをデリバリーしてフィードバックをもらうイテレートを繰り返す」事なんやで!

という「なぜ我々はPythonicにAIプロジェクトをいい感じにやっていく必要があるのか?」という「Why」を明確にしたかったのが発表のモチベーションだったりしました.

AIワクチン接種予測をはじめとした「いい感じにやって成功した」仕事は「さっさと世の中に出して反響をもらう」事が上手く行ってたのと, 上手く行かなかった仕事はこの辺が回ってないなというのもあったりしたので, この辺を参加者や自分にメッセージとして残したかった事もあり

  • 雑に作って魅せて議論するフェーズはStreamlit
  • いい感じに議論が収束して作れそうになったらコードを綺麗にする&CIを用意する
  • さっさとアプリを作ってクラウド活用して世の中に出す

という, 実際やったことベースのストーリーで上手く言語化できた気がします(少なくとも自分は満足しています).

裏テーマ「エンジニアとデータサイエンティストの生態系」

Agilityを高める・いい感じにプロジェクトを進めるためには技術面のHowのみならず, チームやチームに属する個人のパフォーマンスを上げることも大事です.

f:id:shinyorke:20211017164111j:plain
これも明確に言いたかったこと

ちょっと前に書いたブログからの引用ですが,

あくまで私の感想・考えで意見は分かれると思いますが,

データサイエンティストから来た機械学習エンジニアと, ソフトウェアエンジニアから来た機械学習エンジニアで得意不得意は異なる

と思っています, これは機械学習エンジニア以外のエンジニア(SREもアプリもフロントエンドもバックエンドも)知っておいて損は無いです.

データサイエンティストもPythonなエンジニアも, どっちもPythonが読み書きできる故に,「Python書ける・読めるならこれぐらいやってくれるやろ」的な他者への期待(という名の甘え)により, エンジニアとデータサイエンティストが共創するプロジェクトで思わぬコミュニケーション・ミスや, ひどい時はハレーションが起きてプロジェクトが破綻する, なんてことはまあまああると思います.

詳しい話は「データサイエンティスト VS ソフトウェアエンジニア」というテーマで以前文章を書いたのでこちらをご覧いただくとして, PyCon JPのトークとしては

  • AIプロジェクトを成功させるためにはデータサイエンティストとエンジニアの共創関係がマスト
  • この両者は良くも悪くもPythonを読み書きするため, お互いが想定していない事態でのトラブルがまあまあある
  • 同じ言語を取り扱っていても, 大切にするポイントが全く異なる違う生き物なんやで!

というのを改めて言っておこう(≒これで共創が上手くできるとAgilityが高まる)と思い, この話も強めにしました.

発表中に

  • コードを分割する
  • テストを書く
  • リファクタリングをする

と明確に言ったのも, 「データサイエンティストとエンジニアの役割の落とし所」として明確に言語化しておこうと思い, 書きました.

f:id:shinyorke:20211017171210j:plain
データサイエンティストとエンジニアの汽水域

結果, 「汽水域」といういい言葉も出てきたので良かったです👍

反響

発表ライブについては何人聴いていたか人数は把握できなかったのですが,

資料公開からこのブログを執筆した時点(2021/10/17 17:00現在)で36ブクマと思ったより集まったな感あったので結果は上々かなと確信しています.

Discordのスレを見る感じでも, いくつかの質問や感想, AIオオタニサン本塁打予測のデモで遊ぶ姿が散見された*3のでお楽しみいただけたのかなと.

来てくださった皆様本当にありがとうございました&来られなかった方も動画(まだ公開されていない)で楽しみいただけると嬉しいです!

PyCon JP 2021

サクッと感想を.

印象に残ったトーク

今年は転職直後で休みが取れなかったこともあり, 登壇した二日目のみ参加しました.

生で聞くことができなかった(裏番組だった)のですが,

資料を読んだ感じめちゃくちゃ良かった&今回の私のトークとセットで楽しむとより良いのでは???と感じています.

  • 石原さんのトークは「プロジェクト開始〜要件・PoC」ぐらいのフェーズでめちゃくちゃ役に立つ
  • 自分のトークは「PoC終わってからのガチ開発」なフェーズで役に立つ

って意味でセットで楽しめそうだなと. 同じ時間帯でのトークになってしまったのは(聴講したい層がカニバってるかもしれない*4という意味でも)非常に惜しかった気がします(&クオリティ的には石原さんの方が高そうでちょっと嫉妬も感じる苦笑)

また, スマートニュースさんのFastAPIな発表もスライド読んだだけですがめちゃくちゃいい話で鼻血でました.

私のトークでの高負荷対策は「GAEにdeployしたらあとはいい感じにできる(雑)」という, 他力本願な変化球だったのに対して, こちらのトークは「負荷テスト&プロファイリングしてからの, 適切な処置をエンジニアリング的にやる」という真っ向勝負な直球だっただけにすばらってなりました.

また, JX通信社で長くチームメイトだった@TatchNicolasさんがPyCon JPデビューしたのがすごく嬉しかったです.

一緒に仕事してた頃にブログや登壇の相談を受けたりサポートしたりとかしてたので, PyCon JPデビューは我が事の様に嬉しかったです.

発表内容などはまだまだ伸びしろがあると思うのできっと今後もアウトプットしてくれるんじゃないかなと思います👍

オンライン開催の感想

2回目のオンライン開催なだけに去年より良かったと思います.

Discordを仮想カンファレンス会場とした&意図的にクローズドな環境にした(Discordの発言内容はTwitterとかに流すな, とか)のは施策としてすごく良かったのではと思います.

これは来年も行けるのでは...と思いますし運営の人たちもホントよくやったのではと思います.

登壇者な自分の感想としては,

  • 発表までスムーズにやれた
  • Discordスレでのコミュニケーションは楽しかった
  • ask the speakerは正直やりにくかったので改善を期待しています*5

そんな感じでした.

結び - 来年どうしようか🤔

というわけで, 自分の登壇とPyCon JPのふりかえりでした.

来年のPyCon JPも楽しみにしています!

なお, 自分がまたトークのCfPを出すかどうかは来年決めたいと思います.

来年かもしれないし, ↑のツイートにある通り2023年かもしれませんが, 今度は野球データサイエンスの新作でガチ勝負できればと思ってます⚾

野球(データサイエンティスト)人の気持ちを忘れずに今後もPythonicにやってくぞ.

*1:なんやかんやで, ネタ的にも日ハムファン的にも登壇する度に意味深な盛り上がり方をする選手って意味で印象に残る感じでした. ホントにお疲れ様でした!

*2:これは蛇足ですが, 落ちた2本で話す予定だったネタやソースコードも何気に流用してやりました. 3本のCfPのネタは「Python」「Agility」というテーマでつながっているので.

*3:「オンラインだからこそ, インタラクティブに場をつくろう」と思いデモを用意したのでこの狙いは当たりでした, 動かなかった時はちょっと焦りましたが苦笑

*4:何人かの知り合いから正直迷った, というフィードバックをもらったりした

*5:アンケートにしっかり書いたのでここでの詳しい言及は避けますが, 一言でいうと「登壇者からみて, ask the speakerチャンネルにいる人が話したい人なのかROM専なのかわからずやりにくかった」です. この辺リアル開催だと無い問題なので難しいなって思いました(リアルだと話すか名刺交換がはじまるので)