nikkie-ftnextの日記

イベントレポートや読書メモを発信

Plone Con併設イベント(Python Web Day)の準備を手伝っています #ploneconf

はじめに

いつも心は虹色に! nikkieです。
先週くらいからPlone Conの併設イベント準備を手伝っています。
イベントが盛り上がることを願って、準備のプロセスをブログに残します。

Plone Conとは?

Ploneとは、Python製のCMSと理解しています。
WordPressPython版というイメージ)
詳しくは知らないので、今後触ってみます。

Ploneの国際カンファレンスが今年は日本で開催されます。
https://2018.ploneconf.org

11/5(月)〜11(日)の1週間、東京でPlone Conferenceが行われます。

  • 11/5-6:Training
  • 11/7-9:Talks
  • 11/10-11:Sprint

会場はpyconjpと同じ「大田区産業プラザPiO」です。
(注意:Sprintは会場が違うようです。詳しくはPlone Conのページでご確認ください)

11/7(水)〜9(金)のTalkの裏で、併設イベントが企画されています。

  • 11/7:Python Web Day
  • 11/8:Database Day
  • 11/9:Frontend Day

私が手伝っているのが、11/7のPython Web Dayです。
Frontend Day担当の方の情報発信に触発され、私も発信することにしました。
Frontend Day ビルドダイアリー を始めます|Kazuhiro Hara.|note

併設イベント:Python Web Day

併設イベントの狙いは、「日本からの参加者を呼び込み、Plone Conを盛り上げる」ことです。
カンファレンス自体は1週間ですが、併設イベント用に1Dayチケットが用意されます。
併設イベントに惹かれた方は是非ご参加いただければと思います。
(参加はWeb Dayでなくても構いません。Plone Conが盛り上がるのが何より嬉しいです)

カンファレンス本編のトークに併設イベントのトークトラックを追加するイメージです。
(カンファレンス本編と併設イベントを行き来できるようにする)

私は「Webって広いなー」と感じているので、Webの広がりをお届けできるようにスピーカー候補の方にお声がけしています。
こんなトークが聞けるように準備しています。

併設イベントのトークは「Ploneを扱っていなくてもOK!」です。
海外からPlone Conに来られた方に、日本のPythonistaの活動のありのままを知っていただこうという意図です。
(そこから何か新しいものが芽生えたら素敵ですね)
スピーカー候補の皆さま、お力をお貸しいただけると大変助かります!

動いているメンバー

  • @takanoryさん(pyhackでお世話になっています)
  • @mamix1116さん(Django Girlsでお世話になっています)
  • nikkie

登壇者募集中!

話したいことがある方はお気軽にご連絡ください。
トークにあたって、以下のお願いがありますので、連絡前にご確認ください。

  • スライドは英語でお願いします
  • トークは英語で挑戦していただけると嬉しいですが、日本語でもOKです
  • 恐れ入りますが、Plone Con 1日分の参加費が発生します。(1万円程度の1Dayチケットが用意されると聞いています)

トークは20分枠(6枠予定)と40分枠(2枠予定)で用意しています。
(40分の枠が5つあり、40分枠をいくつか分割することにしました)

日本にいながらにして国際カンファレンスで登壇できる機会です。
英語での登壇に挑戦してみたいという方いらっしゃいましたら、私宛にTwitter DMでお気軽にお問い合わせください。

最後までお読みくださりありがとうございました。
この記事を読んで併催イベントに登壇してくださる方やPlone Conにいらしてくださる方がいたら、それ以上に嬉しいことはありません。
国際カンファレンスの準備に関われるなんてめったにないことだと思うので、準備を楽しんでいきます!

イべントレポート | 横浜のDjango Girls Workshopでコーチデビューしました #djangogirlsyokohama

はじめに

いつも心は虹色に! nikkieです。
2018/10/06に横浜のDjango Girls Workshopでコーチをしてきました。
とても楽しい一日だったというのと、Django Girlsの取り組みがますます広がることを願って、イベントレポートを残します。

勉強会の概要

これからWebサイトの作り方を学びたい、プログラミングを学びたいと思っている女性のみなさん、初心者向けの1-Dayワークショップを開催します!

このブログでもたびたび取り上げていますが、2018年5月からDjango Girls Tutorial翻訳に参加してきました。
Tutorialを数周したことで、「次は教えるという形で手伝えるんじゃないか」と考え、コーチに手を挙げました。

上記サイトの会場までの地図が非常にわかりやすく、方向音痴な私は大変助かりました!

イベントレポートお品書き

  • コーチをやってみて
  • Pythonを始める方に伝えたいこと
  • コミュニティに関わるということ

コーチをやってみて

  • はじめてプログラミングされる方のコーチをした
  • 意外なつまづきポイント:エディタ
  • 私の理解が進んだこと:関数とメソッド

はじめてプログラミングされる方のコーチをした

はじめてプログラミングされる島(3名)を担当しました。(コーチは2人体制)
夕方はコーチを増員して1:1の体制を取り、全員Djangoに触ることができました!
プログラミング未経験で、1日で以下の3つをやりきるというのは本当に素晴らしいです。
チュートリアルにもある表現ですが、「自分で自分を褒めてあげて」ください!

  1. コマンドプロンプトに慣れる(普段はマウス操作)
  2. Pythonに入門する
  3. DjangoでWebサイトを動かす(開発用Webサーバを動かし、管理画面から記事を書くところまでは全員進められたと思います)

意外なつまづきポイント:エディタ

Python入門でエディタからインタプリタに切り替えるところで難しく感じることがわかりました。
Python入門 「保存しよう!」
エディタでの開発に慣れている身にとっては新鮮な気づきでした。

AtomPythonを書いて保存し、コマンドプロンプトでファイルを実行するのですが、腹落ちするのが難しい箇所のようです。

コマンドプロンプトの役割が「Pythonを書くところ」から「Pythonを実行するところ」に変わり、Atomという「Pythonを書く」役割の新しい登場人物が出てくるからかと思います。

私の理解が進んだこと:関数とメソッド

Python入門 「文字列」から

「関数とメソッドはどう違うんですか?」という質問、回答がなかなか難しかったです。

  • 関数は「異なるタイプのオブジェクトに」適用できる(=複数のオブジェクトに適用できる)
    • len()関数はstrlistに適用できる(適用できないオブジェクトもある:例えばint
    • str()関数はintfloatに適用できる
    • 一番わかりやすいのはprint()でしょうか
  • メソッドは特定のオブジェクトに限って適用できる
    • "Ola".upper()のようにオブジェクト.メソッド名()という書き方になる
    • intオブジェクトのメソッドには、例えば、int.bit_length() というものがある

答えにくかったのは、オブジェクトの理解が甘いためと考えられるので、次回までにPythonチュートリアルを確認します。

Pythonを始める方に伝えたいこと

10/5のインストールDayの交流タイムから、「Pythonをはじめたときに作ったものを紹介できるのでは」と気づき、再演という形でLTさせていただきました。

伝えたいこと

  • Python(プログラミング)はWebサイトを作る以外にもいろいろなことができる
  • 私の場合、どんなことができるか知る上で『退屈なことはPythonにやらせよう』が役に立った(画像処理のほか、PythonからExcelを触るようなことも紹介されている)

公開されている原文をGoogle翻訳することで、日本語でも読めると思います。
Automate the Boring Stuff with Python

11月の東京開催に向けて、「プログラミングを始めた方に共有したいこと」としてLTを準備してみます!
始めた後はいかに継続するかだと思うので、継続する上で私が学んだこと・大切にしていることを共有予定です。

コミュニティに関わるということ

「コミュニティに関わってよかった」と感じたすばらしい1日でした。

ワークショップでは、初めてプログラミングされる方が、1日でDjangoを触る姿を見て感銘を受けました。
翻訳したTutorialに目の前で取り組んでいただき、直接フィードバックもいただけて感無量でした!

懇親会はさまざまな年代の方が入り混じり、たくさんの興味深いお話が聞けました。
今後の展開などさまざまなアイデアがうごめいていて、「なんだか素敵なことが始まろうとしている」という高揚感でいっぱいでした。
コミュニティ活動をしてみて、「カイゼン・ジャーニーで言うところの『1人の限界を超える』ってこういうことでもあるのかな」と感じました。

また、コーチのミヤモトさんのお知り合いが私に興味を持ってくださっているそうです!
Django Girlsとは別なのですが、「あにべん!」でアニメから学んだことLTをしたのがきっかけで、興味を持ってくださったと知り、大変うれしく思います。
もしこの記事を読んでくださっていたら、遠慮なくDMなど飛ばしていただければ、お会いする時間を設けたいなと思います。

終わりに

私自身はすごく素敵な1日を過ごすことができ、参加者、コーチ、運営の皆さまに心からお礼申し上げます。
素敵な1日をありがとうございました。
そして、参加された他の方にとっても素敵な1日だったのであれば、こんなにも嬉しいことはありません。

知識を補い、LT準備をし、次回の東京ワークショップに備えます。

最後までお読みいただきありがとうございました。
Django Girls Tutorial 日本語版へのフィードバックや、Django Girlsの活動への参加やご支援をいただけましたら、幸甚に存じます。

Django Girls Tutorial修了者が投票アプリチュートリアルでDjangoの理解を深めました(その1, 2編)

はじめに

いつも心は虹色に! nikkieです。
先日の #pyhack で、Django公式ドキュメントのチュートリアル(投票アプリ)に取り組みました。
手を動かしてみて気づいたことをアウトプットしていきます。
今回はその1(最初のビュー)とその2(モデルの作成)です。

チュートリアルの概要

はじめての Django アプリ作成、その 1 | Django documentation | Django から始まる7回構成のチュートリアルです。
作るアプリの名前をとって「投票アプリチュートリアル」と呼ぶことにします。
なお、私のDjangoレベルは「Django Girls Tutorial修了」です。
Django Girls Tutorialを終えてから投票アプリチュートリアルに取り組んだことで、Djangoへの理解が深まったと感じています。

それでは早速アウトプットしていきましょう。
最後までお付き合いいただけますと幸いです。(長めなので拾い読みも推奨します)

その1:プロジェクトとアプリケーション作成

はじめての Django アプリ作成、その 1 | Django documentation | Django

動作環境

以下の環境でチュートリアルを進めました。

(env) $ python -m django --version
2.1.1
(env) $

仮想環境のディレクトリenv/と同じ階層でdjango-admin startproject mysiteを実行したところ、env/と同じ階層に「外側のmysiteディレクトリ」ができました。

  • ├ env/
  • └ mysite/
    • ├ manage.py
    • └ mysite/
      • ├ __init__.py
      • ├ settings.py
      • ├ urls.py
      • wsgi.py

django-admin startproject mysiteは、現在のディレクトリ内にmysiteディレクトリを作り、その中にmanage.pyとmysiteディレクトリを作るようです。
Django Girls Tutorialではdjango-admin startproject mysite .1と現在のディレクトリを指定しているため、フォルダ構成が異なります(外側のmysiteディレクトリがありません)。

プロジェクトとアプリケーション

mysiteプロジェクトの中にpollsアプリケーションを作成して進めていきます。

違いについて、チュートリアルより引用。

  • 「プロジェクトとは、あるウェブサイト向けに設定とアプリケーションを集めたもの」
  • 「アプリケーションとは、実際に何らかの処理を行う Web アプリケーション」

mysite/urls.pyとpolls/urls.py

以下の例から、mysite/urls.pyは確かに「目次」だと納得しました。

URLをpolls/からfun_polls/にしたければmysite/urls.pyを変える。

urlpatterns = [
    path('fun_polls/', include('polls.urls')), # 変更
    path('admin/', admin.site.urls),
]

f:id:nikkie-ftnext:20180929171501p:plain:w400
path('content/polls/', include('polls.urls')),に変えると。。 f:id:nikkie-ftnext:20180929171502p:plain:w400

その1についての疑問点

  • mysite/settings.pyのINSTALLED_APPSのリストにpollsを書き加えていないが、Djangoの動作に支障はないのか?
    • Django Girls Tutorialではblogアプリ作成後に書き加えている2
    • 最初のビューは問題なく表示できている
    • その2に進んだら解決した
  • アプリケーションを複数のプロジェクトで使う例が知りたい

その2:モデル(QuestionとChoice)

はじめての Django アプリ作成、その2 | Django documentation | Django

データベースはデフォルトのsqliteを使っていきます。
mysite/settings.pyのTIME_ZONE にはDjango Girls TutorialにならってAsia/Tokyoを指定。3

モデル作成

  • モデルのフィールドの最初の引数は「人間可読な名前を与え」るために用いる
    • 例:pub_date = models.DateTimeField('date published')
  • mysite/settings.pyのINSTALLED_APPSに追加してアプリケーションをプロジェクトに含める(=マイグレーション対象にする
    • 指定の仕方:polls.apps.PollsConfig4
    • polls/(アプリケーション)の下のapps.pyの中のPollsConfigクラスを指定している
class PollsConfig(AppConfig):
    name = 'polls'
  • モデル変更実施の3ステップ
    1. models.py変更
    2. マイグレーション作成(makemigrations)
    3. データベースに変更適用(migrate)
  • 覚えておきたいmanage.py関連コマンド
    • python manage.py sqlmigrate polls 0001: migrateで適用されるSQLの確認
    • python manage.py check:プロジェクトに問題がないかの確認

データベースAPI

インタラクティブシェルで遊んでORMに慣れる。

  • 存在しないidを指定したとき、getはError(DoesNotExist)を上げるが、filterでは[](空のリスト)が返る
  • get(id=1)の代わりにget(pk=1)がよく使われる
  • ForeignKeyはChoiceに設定しただけ(polls/models.py)だが、Question側からも結びつくChoiceを確認できる(choice_set)

管理画面

polls/admin.pyにadmin.site.register(Question)を追加したところ、管理画面からPollsが操作できるようになった。
f:id:nikkie-ftnext:20180929171629p:plain

その2についての疑問点

  • 内省機能とは?(原文確認する)
    • 「このフィールド名(引用者注:モデルのフィールドの最初の引数のこと)は Django の二つの内省機能で使う他、ドキュメントとしての役割も果たします。」
  • DjangoRailsとは思想が違うという点をもっと詳しく知りたい。
  • インタラクティブシェルで遊ぶ中で日時がUTCのところがあった
    • 管理画面で見たDate publishedは日本時間で一致した(レコード作成時はJSTに合わせなくてもいいということ?)
>>> q.pub_date
datetime.datetime(2018, 9, 29, 4, 44, 5, 602909, tzinfo=<UTC>)

今回はここまでです。
次回、その3(ビュー)からのアウトプットでお会いしましょう。
最後までお読みいただきありがとうございました。


  1. プロジェクトを作成しよう! · Django Girls Tutorial より。「コマンドの最後にピリオド . を入力したことを確認してくださいね。」

  2. Djangoモデル · Django Girls Tutorial より。「アプリケーションを作ったら、Djangoにそれを使うように伝えないといけません。 」

  3. プロジェクトを作成しよう! · Django Girls Tutorial

  4. Django Girls Tutorialではblogアプリケーションをblogとして指定しています(Djangoモデル · Django Girls Tutorial )。ここはblog.apps.BlogConfigとも指定できると理解しました。

  5. 例: rails generate model User name:string email:stringRuby on Rails チュートリアル:実例を使って Rails を学ぼう より)

イベントレポート | 第92回 #pyhack にてDjango投票アプリチュートリアルを進めました

はじめに

いつも心は虹色に! nikkieです。
定期的に参加している #pyhack で、Django公式ドキュメントのチュートリアル(投票アプリ)に取り組んできました。

勉強会の概要

(第92回)Python mini Hack-a-thon - connpass

スプリントのゆるい版みたいな感じで各自自分でやりたいことを持ってきて、勝手に開発を進めています。参加費は無料です。 初めての方も常連さんもぜひご参加ください。

pyhackのイメージは「猛者の集まるもくもく会」です。
Pythonの経験豊富な方ばかりで、聞こえてくる会話に耳を傾けていると学びがあります。

取り組んだこと

朝の時点での目標は「Django公式ドキュメントのチュートリアル(その1〜その7)を通してやる」でした。
はじめての Django アプリ作成、その 1 | Django documentation | Django から始まる7回構成のチュートリアルです。
1日でその1〜その4まで進めることができました。
なお、私のDjangoレベルは「Django Girls Tutorial修了」です。

作った投票アプリはこんな感じです。

  • 質問(Question)の一覧画面
    f:id:nikkie-ftnext:20180929170927p:plain:w400
  • 質問には選択肢(Choice)が結びついています。質問詳細画面で確認し、選択肢に投票できます f:id:nikkie-ftnext:20180929170938p:plain:w400
  • 投票結果の表示画面
    f:id:nikkie-ftnext:20180929170948p:plain:w400

感想

Djangoがはじめての人には、投票アプリチュートリアルよりもDjango Girls Tutorialがオススメ」という意見をよく目にするのですが、そのとおりだと感じました。

逆の見方をすると、Django Girls Tutorialを終えた後に取り組むと、深いところが説明されているために「こういうことだったのか!」という気づきが多々ある内容だと思います。
Django Girls Tutorialは初めてプログラミングをする方が対象者なので突っ込んだ説明ができないのでしょう。 投票アプリチュートリアルはプログラミング経験者向けに説明がされています。(例えば、mysite/urls.pyとpolls/urls.pyの違い、ビューはHttpResponseか例外を返す、など)

投票アプリチュートリアルでは、リスト内包表記(その3の質問一覧ビュー)や、try ... except ... else ... (その4の投票機能ビュー)といった文法を説明なく使っています。
このあたりはわかっている(または自力で調べられる)方が対象なのでしょう。
Django Girls Tutorialからスムーズに接続するには一工夫必要そうです。

チュートリアルのポイント

気づきを記事に盛り込んでいたら長くなってきたので、気づきは別の記事としてアウトプットします。

  • その1:プロジェクトとアプリケーション作成
    • プロジェクトとアプリケーションの違い、mysite/urls.py と polls/urls.py の違いについて理解が深まった
  • その2:QuestionとChoice、2つのモデルを作成(インタラクティブシェルでORMをみっちり練習)
  • その3:ビューとテンプレート
    • ビューはHttpResponseなるものが肝。これはDjango Girls Tutorialでは意識してこなかった。
  • その4:汎用ビューに書き直し
    • その3までに作成したビューのコードをほとんど書き直した。polls/views.pyのメソッド定義がなくなり、コードが削減されたのは衝撃。「Djangoにこんなの用意されていたのか!」

今回手を動かして、Django Girls Tutorialの知識が補完されたと感じています。
10/6にワークショップのコーチで活かしてみます。

他の方の取り組みから

感想

毎回言っている気がしますが、非常に楽しい時間でした。
今回懇親会は泣く泣く諦めたので、次回リベンジ狙います。
何人かの方には来週のPyLadiesのパーティー(LT会)でお会いできそうで楽しみです^ ^
1日ありがとうございました!

登壇報告 | #stapy にて機械学習モデルをDockerでデプロイする方法について話しました

はじめに

いつも心は虹色に! nikkieです。
9月の「みんなのPython勉強会」(参加者100人規模)に登壇しました。
機械学習モデルをDockerでデプロイする方法について10分で話しました。
このエントリで登壇報告をします。

勉強会の概要

みんなのPython勉強会#38 - connpass

「Stapy秋祭り第1弾:秋の夜長のショートトーク会」
9/15~18にPyCon JP 2018が開催されます。年に一度のPythonのお祭りに合わせて、Stapyでも秋祭りを開催します!第1弾として、「秋の夜長のショートトーク会」と題し、Python好きなGeekのみなさんに、自分の好きなテーマについて自由に語ってもらうショートトークをしていただきます。LTよりは長いけど、通常の講演(GT: General Talk)より短いトークを7件、ご用意しました。秋の夜長の季節です。Pythonの楽しい話で盛り上がりましょう。

2月くらいから「LT駆動学習」に勤しんでいたところ、大変ありがたいことに、今回登壇の機会をいただきました。

登壇:Entrance of Docker for Pythonista 〜Dockerではじめる機械学習モデルのデプロイ〜

「好きなテーマで」と言っていただけたので、「大好きなDockerを他の方にも知ってもらおう」というモチベーションで登壇しました。
聞いた方にDockerを使ってみていただきたかったので、機械学習モデルをDockerでデプロイする流れを紹介しました。

伝えたかったこと

開発環境と本番環境の双方でDockerを用いることで、動作するアプリケーションを本番環境へ持ち運べるようになります。

Dockerを使って機械学習モデルをAPIとしてデプロイする流れは、次の通りです。

  1. モデルを用意する
  2. FlaskでAPI
  3. アプリケーションをコンテナ化(Dockerfileを書いてビルド)
  4. VM(またはPaaS)にデプロイ

あやめの分類器をGCPの仮装マシンにデプロイし、この手順(仮説)を得ました。
今後他のモデルでも検証し、必要に応じてアップデートします。

テーマに至った経緯

当初は環境構築の話をしようとしていたのですが、参加者の方が聞きたいトークにするため、機械学習を絡めました。
詳しくはこちらにあります:イベントレポート | Pythonもくもく自習室 #13 あやめの分類器をAPIに組み込み、Dockerイメージ作成 #rettypy - nikkie-ftnextの日記

テーマを決める上で、こんな図を作って整理しました。
f:id:nikkie-ftnext:20180921072300j:plain

質疑より

1週間ほど前の出来事を記憶ベースで書いているので、認識違いにはご容赦ください。

Dockerのメリットの体験談

私がDockerのメリットを体験したのは、環境構築のしやすさです。
協調フィルタリングをPySparkで行う際、Dockerを使ったところ、PySparkの環境構築が手短に済みました。1
他にもデータ分析環境構築に役立つノートブックが公開されています:https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html:html

会場では話していませんが、デプロイのしやすさもあります。
VPSにDockerをインストールして、docker-compose up -dでデプロイしたところ、手動デプロイに要していた時間が劇的に短縮されました。2

Dockerの普及について

主催の @akucchan_world さんから。
アカデミックな領域ではDockerの普及が進んでいないという情報共有がありました。

私の知っている以下の情報を共有しました。

  1. DockerはGUIで使えるようにアップデート予定
  2. Kubernetesは意識しなくてよくなる方向へ向かっている(Knative)

1点目は以下の情報をベースにしています。
[速報]次期Docker for Win/Mac、GUIの数クリックで簡単にアプリケーションのコンテナ化と実行が可能に。DockerCon 2018 - Publickey
3ヶ月毎にリリースされるので、10月リリース版からはGUIで使えると期待しています。

2点目ですが、Kubernetesとは本番環境でコンテナを動かす際に使う「オーケストレーションツール」のデファクトスタンダードです。
これがクラウドで抽象化されていき、デプロイする側はKubernetesを意識しなくてよくなると理解しています。

なお、Dockerの普及が進んでいないという点に関しては、時間的な制約もあるそうです。

宿題事項

興味を持った方向けに詳細な説明を用意したいと思っています。

また、Dockerfileやソースコードについては正常系で最低限動作する状態です。
以下のアップデート項目があります。

  • アプリケーション実行ユーザを用意する(現状rootユーザ)
  • POSTしたJSONにwidth, height両方のキーがないと、FlaskのAPIは実行中にエラーを吐き、500を返す点の修正
  • APIの動作確認ができるビューがあるとよかった
  • WebAppsで動かない件のデバッグ3

アウトプットしたことの周りを固めていくことが、PyCon登壇という目標につながるんじゃないかと、今の時点では考えています。

感想

ショートトークは、懇親会のLTと景色が違いました(皆さん着席されていてまさに「講義」という感じでした)。
登壇の機会を与えてくださった、@akucchan_world さんをはじめとするstapyスタッフの皆さまに感謝します。
また、聞いていただいた参加者の方、懇親会でフィードバックをくださった方々、ありがとうございました。

stapy LT王子4代目の称号をいただいたので、引き続きLT駆動で取り組んでいきます。

実は、今回の準備は全部Dockerでやりました。4
ここまでいくとやりすぎ感もありますが、さまざまな環境を立てられるDockerは本当に便利です。
皆さまがDockerで幸せになれることをお祈りしつつ、筆を置かせていただきます。
Happy Docker Life!

脚注


  1. HadoopやMesosなどDockerを使わずに環境構築できたか、あまり自信がありません。

  2. 手順に慣れる目的なのでdocker-composeを使いました。本番環境では、Kubernetesなどのオーケストレーションツールを使うべきである点にご注意ください

  3. ENTRYPOINTやCMDの組合せが問題ではないかとご指摘いただきました。ありがとうございます。ご指摘参考に切り分けてみます。

  4. あやめの分類器作成のjupyter環境、ローカルでのFlaskアプリ作成、本番環境(GCPVM)へのデプロイ、いずれもDockerを使っています。Dockerという金槌を気に入ったことで、なんでも釘に見えている状態かもしれません。持ち歩かないちょっとした環境なら、仮想環境を使ったほうがベターだと思います。(pypro3によると、仮想環境はファイルサイズが小さいそうです)

イベントレポート | #pyconjp 2日目、まさしくひろがるPythonでした

はじめに

いつも心は虹色に! nikkieです。
PyConカンファレンス2日目も盛況のうちに幕を閉じました。
後で手を動かす際に参照できるよう、自分のツイートやスライドリンクをまとめます。

基調講演:「Pythonでやってみた」:広がるプログラミングの愉しみ

niconicoにおけるコンテンツレコメンドの取り組み

Djangoだってカンバンつくれるもん(Django Channels + Vue)

ASGIを知れたのが大きいです。
でんぞうさんの記事や、Django Channelsのチュートリアルでキャッチアップしていきます。

Notebook as Web API: Turn your notebook into Web API

デモはローカルホストでしたが、クラウド上のマシンでjupyterが使えるよう設定してnotebookを置けば、APIとして動作させられるそうです。
オープンソース化が待たれますね。
Jupyter Kernel Extensionは試してみようと思ってます。(発表したDockerでのデプロイと比較したい)

From Data to Web Application: Anime Character Image Recognition with Transfer Learning

非常に楽しませていただきました。

人間の顔を検出するモデルがアニメキャラクターの顔を検出してくれない
→調整したらアニメキャラクターの顔を検出してくれるようになった!
(副作用として人間の顔は検出できなくなっちゃったけどね)爆

データセットdanbooruは触ってみたいですね。

AltJSとしてのPython - フロントエンドをPythonで書こう

LT

興味深かったものをピックアップ。

Webサービスpoke2vec
【poke2vec】word2vecをポケモンのパーティに適用してみた | ぽよのーと

深層学習モデルのサイズが大きく、アプリでのロードに時間がかかるために、heroku無料枠だと辛かったそうです。

終わりに

たくさんインプットさせていただき、間違いなく私のPythonの世界は広がりました。
見聞きしたことに知識が追いついていないので、手を動かして知識を積んでいきます。
ただし、あれもこれもと手を出す前に、判断の強制機構として、優先度を整理するのがよさそうです。

来年はスタッフ参加、そして登壇が目標です。
CFPへの準備期間は始まっていると思うので、コツコツ準備していきます!

スピーカーの方々、スタッフの方々、そして参加者の皆さま、最高に楽しいお祭りをどうもありがとうございました。
お疲れさまでした!

イベントレポート | #pyconjp 1日目、手を動かす時間を確保することが大事とわかりました

はじめに

いつも心は虹色に! nikkieです。
PyConカンファレンス1日目めちゃくちゃ楽しかったです。
後で手を動かす際に参照できるよう、自分のツイートやスライドリンクをまとめます。

基調講演:Argentina in Python: community, dreams, travels and learning

Django Girls Tutorial翻訳という共通点があり、非常に力をいただいた講演でした。 Kaufmannさんの具体例から抽出し、自分のプロジェクトに当てはめるという宿題をもらったと考えています。
(「コーディング、コーディング、コーディングでは、現実のHello Worldには足りないよ」というメッセージが頭に残っています)

招待講演:東大松尾研流 実践的AI人材育成法

ありがたいことに松尾研は学習リソースを公開しています。
Deep Learning基礎講座演習コンテンツ 公開ページ | 東京大学松尾研究室 - Matsuo Lab
今回松尾研の育成方針が聞けて、やはり手を動かすことが肝と再認識しました。

以下のトークは現時点では短いまとめにとどめ、手を動かした後にまとめたいと考えています。

Why you should care about types

PyCon-JP-2018/slides.pdf at master · Sterbic/PyCon-JP-2018 · GitHub

typingという標準モジュールの存在を、恥ずかしながら今回知りました。
26.1. typing — 型ヒントのサポート — Python 3.6.5 ドキュメント
公式ドキュメントを確認した上で手を動かしてみたいと思います。

Building Maintainable Python Web App using Flask

スライドに沿って手を動かしたいのですが、まだ公開されていないようです。
Maintainable=Unit-Testableということで、decouple(切り離す)とよいという主張でした。

  • 外部との連携を切り離す(DB、ファイルシステム
  • Presenter(モデルとビューの間にAdapterを入れる)
  • configはFlask提供のものを使う

Jupyterで広がるPythonの可能性(どりらんさん)

pyconjp2018/slides.ipynb at master · drillan/pyconjp2018 · GitHub

Pythonistaの選球眼(せんきゅうがん)

  • エンジニアの選球眼:選択と決断の繰り返しの中で選択と集中ができること
  • イシューからはじめる=作るものを言語化する→物事を決断するルールとなる
    • 決断ルールの外は決してやらない(SREにある「判断の強制機構」を思い出す)
  • ゴロではなくフライを打つ(ホームランを狙うなら)
    • 宿題:Pythonistaの「フライ」って何だろう? イシューに集中した取り組みということかな?

終わりに

1日目は招待講演で手を動かす話からはじまり、選球眼の話で手を動かす時間を確保する重要性を認識しました。

もくもく会やLTに積極的に参加してきたこともあって、いろいろな方とお会いし、「いつの間にかPython界隈では顔が広くなっていたんだな」と実感しました。
久々の出会い、新しい出会いがあるのはカンファレンスの醍醐味なんでしょうね。
お会いした方々、ありがとうございました。