nikkie-ftnextの日記

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

PyCon TWに参加しに台北に行ってきました。〜観光編〜

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
皆さま、9/14〜17のPyCon JPお疲れさまでした。
私はその後PyCon TWに参加しました(9/20, 21)。
アウトプットしたいことは溜まっているので、リハビリも兼ねて、今回は台北旅行記を書きます。

前提

  • 初の海外でした。台湾経験者のNaoYさんに色々と連れて行っていただきました。本当にありがとうございました
  • 食レポや趣味の要素に全開の内容となっており、技術情報はありません

松山機場で合流。魯肉飯を食べに行く

NaoYさんの他、PyCon JP座長のyoshidaさんと合流し、まずは魯肉飯を食べに行きました。

機内食を食べていたので小盛りで。 「安い、早い、うまい」と日本の牛丼みたいでした。

近くの龍山寺を参拝

台湾のおみくじの引き方は独特でした。
3回連続でXORがTrueになって初めておみくじを引ける1そうです。
XORがFalseになった場合は、願い事の言い回しを代えることで上限なくリトライできるようです。

引いたところ78番でした。
このおみくじについては、メイドさん(後述)曰く、「中の上」とのことです。やったね!

西門へ

ここでyoshidaさんと別れ、台湾の秋葉原、西門に向かいます。
西門のキャラクターの林黙娘さんがお出迎え。
秋葉原だけでなく原宿っぽい感じもあり、足して2で割ったような印象です。

台湾では、天気の子が封切られたばかりでした。
キービジュアルは後ろ姿なんですねー、ちょっと意外。

アニメイト

西門にあるアニメイトに行きました!
ラノベや漫画のタイトルを見て、「的」がofっぽい2なということを掴んだり。。

台湾独自の萌えコンテンツを見つけたときは、テンション上がりましたね。
東津萌米 穂姫」のクリアファイルをGET!(冒頭の写真です)

食用系少女という食べ物の擬人化も人気みたいです。
ウマ娘はたらく細胞みたいな感じで擬人化は強いんですねー)

でらうま!マンゴーかき氷

台湾旅行経験のあるPyCon JPスタッフの方から教えていただいた「西門町芒菓冰」。
マンゴーが盛り付けられているだけでなく、氷もマンゴー風味ですし、アイスクリームもマンゴーでマンゴー三昧でした!

マンゴーはとてもおいしいのですが、大きいかき氷なので寒さとのノルマンディー上陸作戦になります。
普段は飲まないコーヒーで体を温めつつ、なんとか完食。
これを見て行かれる方は、複数人で1つ頼みましょうねー

その後は体を温めに近くのメイド喫茶「萌姫」に行きました3
中国語は読めるけど発音できない私たちと日本語が多少話せるメイドさん
Google翻訳を介してコミュニケーションしていました4

夜は日本からの旅行者と合流して晩ご飯へ。
台湾を満喫した後は、翌日のカンファレンス本編へと続くのです。

台湾旅行備忘録

今回使った飛行機やWiFiなど、備忘録として残します(思い出したら更新予定)。

  • 飛行機:LCCは台風で止まりやすい&旅慣れていないと厳しいという助言をいただきJAL/ANAから選択
  • WiFi:台湾データのレンタルWiFi無制限プランを利用。どこでも使えて快適でした。また、バッテリーでスマホも充電できたのも、個人的にはポイント高い!
    • 他の方の話を聞くと現地SIMなど安く済ませるハックはできたようで次の機会にtry
  • 通貨:1元が3円くらい。地下鉄(MRT)は20元。コンビニのお茶もそれくらい。タクシーやUberは数百元
    • SOGOでお土産を結構買ったら免税された
  • 悠遊カード:地下鉄やコンビニで使える台湾版Suica

  1. 台湾の人気パワースポット龍山寺の参拝方法とおみくじの引き方 - KKdayと一緒に旅に出かけましょう

  2. 残念ながら、カンファレンスのスライドには「的」は全然登場しませんでした

  3. 実は台湾で人生初メイド喫茶です。魔法少女ステッキを振るという得がたい経験をしました!

  4. 他にはSOGOの土産売り場でも売り子さんとの意思疎通にGoogle翻訳が重宝しました

イベントレポート | 5月開催の WEBエンジニア勉強会#13、個人開発という裏テーマでつながったトークから、今回も私の世界は広がりました #WEM13

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
5月に参加したWEBエンジニア勉強会について、遅ればせながらのアウトプットです。

勉強会の概要

WEBエンジニア勉強会 #13 (東京都, 渋谷) - connpass

第13回目になる、WEBエンジニア初心者でも参加できることを心がけ・気軽に発表できるWEBエンジニアのための勉強会コミュニティです。初心者の方でも、一人でも、SIerの方も、学生の方も、みなさんお気軽にご参加ください。

VTRyoさんのブログで知ったのがきっかけで、昨年11月の10回目から、今回の13回まで4回連続で参加しています。
参加するたびにWebの広大さを知り、世界が広がる機会と感じています。
知っている領域(サーバサイドやインフラ)について最新のトピックを知ったり、知らない領域(フロントエンド)のキャッチアップができたりと好奇心旺盛な身にはありがたい機会です。

8/30に #14 が予定されていますので、興味を持った方がいたらぜひ参加してみてください!

残念ながら前座には間に合わなかったのですが、聞けた発表を2つの観点で再構成してまとめます。

広がる世界:WEM13で知ったこと

RustでWebAssemblyしてみた

ブラウザ(クライアントサイド)でバイトコードを動かすWebAssembly(wasm)。
wasmがJavaScriptとどのくらい違いがあるか気になっています。
普段使いのPythonでもPiodideなるものでできるようなので、できることが同程度だったら使い慣れてるPythonで試してみたいな。

SemanticUIを使って工数をかけずにサービス開発

私のCSSフレームワークの知識はBootstrapで止まっているので、Semantic UIを知られてよかったです。
なお、2年止まっているようで、これから使うならFormantic UIがよさそうとのことです。

【論文紹介】Language in Our Time An Empirical Analysis of Hashtags

#10でわかりやすく論文紹介してくださった @yu-ya4 さんによる論文紹介。

一覧を見ると、トップにDeep Learningの論文もありました。
The World Wide Web ConferenceはWebのトップカンファレンスとのことですが、データ周りもWebに食い込んできているという印象です。

データベース2.0

この夏モテたい人のための2stepで起動できるNuxtjs + Rails(ID/PW認証付き)サンプルを公開!

つかみが最高!

認証のサンプルアプリの紹介。
これを雛形にすることで、開発のたびに認証を実装する必要はなさそうですね(DRY!)

裏テーマ:個人開発

注:先に上げた発表の中にも個人開発に言及していたものはあります(SemanticUIやこの夏モテたい)

チーム開発でモチベーションを保つためにCT(継続的ツイート)を実施してみた

わずかな時間をつなぎ合わせて進めていく個人開発。

Issueを細かく刻むは現在某案件で試しています(なかなかいい感じ😆)

「個人開発って何したら良いですか?」を真剣に考える

個人開発について示唆にあふれる発表でした!

この発表のテーマ「個人開発って何したら良いですか?」に仮に私が答えるとしたら

  • 作りたいものがあるなら、夢中になってそれをやればいい(人の目は気にする必要ない)
  • 作りたいものがなくて、周りがやっているからやりたいという動機なら、まずは作りたいもの(夢中になれるもの)を探すところから。
    • チュートリアルで素振りして力つけて、世のWebサービスを見ると、「このWebアプリ、こうしたらもっとイケてるよな」と気づきがあると思います。その実現に取り組んでみてはいかがでしょう

MySQL8.0にしてみたかった話

感想

今回は「個人開発」という伏線が張り巡らされていて見事な構成でした。

Togetterはこちら:

8/30の#14も参加したいのはやまやまなのですが、勤務先のイベントと重なってしまったので、TLや資料の後追いで我慢します。

#13のあと 7月の某pay事件 が発生したので、#14や#15はセキュリティ周りのトピックが増えるのかなーと個人的には予想しています。
WEBエンジニア勉強会はいつか発表したい勉強会なので、Webまわり素振りしておこうと思います。

発表者、運営者、参加者の皆さま、どうもありがとうございました!

イベントレポート | #pycamp TAで飛騨高山に行ってきました

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
7月最後の週末に飛騨高山へ行き、Python Boot CampのTAと氷菓聖地巡礼をしてきました。
その様子をブログに残します(技術要素は少なめです)。

Python Boot Campとは

Python Boot Camp in 岐阜 - connpass

PyCon JPではこれまでも年に1回東京で開催されるPyCon JPイベントでPythonを学べるチュートリアル講座を開催してきました。 今回は、以下のような人たちにPythonを知ってもらえる機会を提供できたらという思いで、Python Boot Camp(略してPyCamp)を企画しました。

・遠方に住んでいるためPyCon JPのチュートリアルに参加できずにいた方
Pythonを使っている人が周りにいなくてなかなか始められなかった方

こちらのテキストを使います。

pycamp 岐阜の様子

経緯:なぜ高山でTAを?

過去に山梨開催のBoot CampでTAをしたことがあります。
PyCon JP ブログで高山開催と知り、興味を持ちました。
TAがなかなか埋まらないようだったので、「行ってみよう!」と立候補しました。
高山は氷菓の聖地ですし、しかも岐阜には「君の名は。」や「聲の形」の聖地もあるという点が、アニメオタクな私にとっては魅力でした。
今回のようにPythonの力がなければ、高山の地を訪れるのはだいぶ先になっていたでしょう。

勉強会の様子

会場は氷菓のオープニングに登場する鍛冶橋の付近1コワーキングスペースでした。

当日のツイートがまとまっています:

レポートブログリンク(7/30追記)

TAとして参加して

講師の寺田さんの講義形式のチュートリアルを聞く中でいくつか発見がありました。

  • リスト型(type) vs シーケンス型(types) → シーケンスは型たち
  • round2は銀行丸め
>>> round(10.5)
10
>>> round(11.5)
12
>>> round(12.5)
12
>>> round(13.5)
14
  • Falseと評価するケースを定めて3、残りのケースはTrue
  • printは制御文字を解釈
  • openする場合、OSが管理しているファイルについてPythonが一時的に借り受ける
    • closeでOSに戻す
    • 1回readしたあとのseek(エディタ上のカーソル位置の移動に相当)
  • pyコマンドの仕様4

前回TAした山梨はtakanoryさんが講師の回で、インタラクティブに質問が飛び交っていました。
講師が違うとpycampもぜんぜん違うということを体験しました。

高山観光

飛騨牛や郷土料理を堪能しました😋



聖地巡礼

氷菓の舞台、高山の地5も堪能しました。
縁ある各所で積み重ねられた巡礼ノートや過去に開催した氷菓オンリーイベントのポスター展示など、2012年から積もった愛を浴びてきました。

バグパイプさんでノマドしたのが、感慨深かったです。

ウインナーココア、チョコレートそのものって感じで、甘すぎなくておいしかった!(職場でたまに飲むココアは砂糖水ですね)

好きな聖地にふらっと数週間行って、ノマドワークする生活ができたら、私にとってはすごく理想ですねー。

感想

TAの中で学びもあり、高山の巡礼も満喫し、素晴らしい2日間でした!
飛騨高山は観光産業の街とのことで、pycampのようなIT勉強会を開くのが、チャレンジだったそうです。
今回20名程度が集まったのは、現地スタッフの方の努力の賜物だと思います。
今回のつながりを機に、高山のエンジニアコミュニティが盛り上がると嬉しいですし、離れていますが、折角のご縁なので、可能な限りお力添えしたいと思います。

また、どこかでpycampがあったら、そして、TAがあまり集まっていなかったら、お邪魔したいなと思います。
高山での出会いに感謝です。
ありがとうございました!

イベントレポート | テストを中心にしたトーク・LTが多く盛り上がった #stapy 6月回でした

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
6月のみんなのPython勉強会について、イベントレポートをまとめます。

勉強会の概要

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

「みんなのPython勉強会」では、Pythonを中心としてプログラミングを仕事、研究、趣味など様々なシーンに生かす方法を一緒に学びます。プログラマ、WEBエンジニアに限らず、初心者からマスターまで様々なレベルの、いろいろな分野の人が集まるので、「みんな」の勉強会です。お気軽にご参加ください。

「いろいろできるぞ、Python!(TDDや自動処理など)」回ということで、Python本の著者3名が集まりました。
私も5月のDjangoCongressのレポートをさせていただき、Pythonはいろいろできるを示せた回だったと感じています。
(質問への回答をまとめた登壇報告を準備中です)
今回はトーク・LTへの感想を簡単に残します。

Pythonで自動化の本を書いた話(中野さん)

以下の本(#dekiru_py)の著者の方によるトークです。

できる 仕事がはかどるPython自動処理 全部入り。 (「できる全部入り。」シリーズ)

できる 仕事がはかどるPython自動処理 全部入り。 (「できる全部入り。」シリーズ)

  • 動機:自動化のレシピ本が増えていいのでは
  • Amazonでは辛口レビュー。原因の1つは、RPAの調査不足
  • 実用・一般・シンプルの両立は難しい
  • レビューは辛口だが、自動化本は需要があり売れているとのこと

自動化は結構具体的なところまで求められるそうで、各自がそれぞれの一推し自動化コードを共有するといいかもと思いました。
私の場合は、Excelファイル製アンケートの集約スクリプトです。
(コマンド一発で集約できたので、意気揚々と仕事していました)

#dekiru_py は2章分レビューしたことで献本いただいていたので、今回買ってプレゼントとして持参しました。
(中野さん、じゃん献本へのご協力、ありがとうございました)

データサイエンティスト養成読本ビジネス活用編のこぼれ話とエンジニアとデータサイエンティストのコラボについて(伊藤さん)

エンジニアとデータサイエンティストとで、「リファクタリング」が噛み合わないというのが印象的でした。

  • データサイエンティストはnotebookをきれいにすることと思う
  • エンジニアとしてはコードを効率化したい

データサイエンティストはテストコードよりテストデータかもしれないというアイデアは「再現性確保できるしなるほど」と思いました。

また、Research Oriented Codeのブログの方が、US PyCon 2019 Debrief Session - connpass で話されるそうなので、お会いするのが楽しみです。

『テスト駆動Python』入門(やっとむさん)

pytestは覚えることが少なく(ルールがシンプル)、使いやすそうな印象を受けました。
素振りして業務に取り入れたいなと思います。
「テストを書く=TDD」ではないというのが印象的でした(たしかに開発してからテストを書くこともありますもんね)

LT: 全世界のMasoniteファンの皆さんおまたせしました!!(medyさん)

setup.pyは『Pythonプロフェッショナルプログラミング 第3版』が参考になるかもしれません。

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版

LT: データまえしょりすとのためのpytest入門(komo_frさん)

pytestのお話 in データサイエンス(データの前処理)。
紹介していただいた以下を見て、データサイエンスにおけるテストコードの書き方考えてみます(#mokupyでやろうかな)
Jes Ford - Getting Started Testing in Data Science - PyCon 2019 - YouTube

LT: 職業Pythonista歴半年の私が「君、修正早いね」先輩を唸らせた話(mizzsugarさん)

テストで早い修正を可能にしたというお話。
Djangoでもテストコード書く習慣をつけたいところです。

感想

やっとむさんのトークの影響か、テストが裏テーマだったように思います。
データサイエンスにおけるテストは、今の状況を打破する可能性があり、ちょっと取り組みたいなと思いました。
トークに質問(sli.doで集約)が多く出て、また、LTも目白押しで、すごく盛り上がっていたと思います。
発表者、運営、参加者の皆さん、どうもありがとうございました。
登壇報告は少々お時間ください。

イベントレポート | #pyhack にて PyConJPへのプロポーザル提出に使うpapercallについて、ハマりながら理解してきました

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
PyConJPのトークプロポーザルが6/2締切1ということで、Python界隈はプロポーザル提出ラッシュですね。
プロポーザル提出に使うpapercall.ioというサービス2にハマりやすい点があると #pyhack 中に耳にしました。
手を動かしてみてハマりながら理解したことを共有します。

注:執筆者はPyConJPのスタッフでもありますが、この記事で示す見解はPyConJPを代表するものではありません
また、この記事で示す見解が誤っている可能性もありますので、自己責任でご利用ください。

勉強会の概要

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

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

papercallについてわかったことを成果発表したので、切り出してブログを書きました。
もちろん、papercallでもくもくしたかったわけではなく、本来やりたかった内容については別途レポートを書くつもりです。

papercall についてわかったこと

  • プロポーザルの提出方法は2通りある
    • Talkを作っておいて提出ページで選び、提出(Submit)する
    • 提出ページから「Write a New talk」してSubmitする
  • トークの公開について
    • Talkは公開できる -Submissionは公開できない
    • 公開したトークNotesの部分も含めてリンクを知っている全員が見られる

プロポーザル提出

f:id:nikkie-ftnext:20190526011221p:plain

Talk作成済みの場合

Talkは、ヘッダーナビゲーションの「My Talks」から作成できます。
作成済みのTalkをイベントごとに調整して提出することができます(図の1の部分で選択すると、Talkの内容がフォームに入力され、編集できます)。
作成済みのTalkを提出すると、Submissionが新規に作られます(ヘッダーナビゲーションの「My Submissions」から確認できます)

提出ページから新規に作成する場合

図の下に続くフォームに沿って入力します。
(作成済みTalkを選択していた場合は、図の2の部分をクリックすると、入力内容をクリアできます)
提出ページから新規作成すると、Submissionの他にTalkも新規に作られます

TalkとSubmissionとは何なのか?

papercallを使い慣れている方に教えていただきました。

  • Talkはテンプレートと考えるとよい
  • テンプレートから提出先ごとにSubmissionを作る(内容を調整可能)3
  • →PyConJP2019にプロポーザルを提出するとは、PyConJP2019というpapercall上のイベントに対してSubmissionを作成することと理解

(1)Talkを編集しても作成済みのSubmissionには影響を与えないこと、(2)Submissionを編集しても元のTalkには影響を与えないことも確認済みです。

(1)Talkを編集した場合:
f:id:nikkie-ftnext:20190526011328p:plain

(2)Submissionを編集した場合:
f:id:nikkie-ftnext:20190526011349p:plain

Talkの公開について

TalkやSubmissionのURLを直接叩いても、作成者でなければ詳細は見られません(ログインを求められます)。
OAuthで別のアカウントとしてログインして404となることを確認しました。 f:id:nikkie-ftnext:20190526011613p:plain

Talk鍵マークの箇所から公開できます。 f:id:nikkie-ftnext:20190526011505p:plain

公開すると、以下のようなURLが発行されます:
https://www.papercall.io/speakers/31396/speaker_talks/136192-papercall
(papercallのログインに使った認証アカウントによっては、speakersの後ろの31396はユーザ名となることもあるようです)

このURLではAbstract、Description、Notesが確認できます(記載されている場合のみのようです)。
Talkの作成画面4には、「Notes will only be seen by reviewers during the CFP process. 」(レビューアーだけが見られる)とありますが、Talk公開すると誰でもNotesが見られる仕様のようです。

ジャストアイデアですが、TalkにはNotesを書かずに公開し、それを元にしたSubmissionにだけNotesを書くと、Notesをレビューアーだけに見せるという運用ができると思います。
ただしDRY原則に反しているので、あまり使い勝手はよくないかもしれません。

終わりに

papercallについて手を動かした内容は以上です。
papercallのFAQページ5がスカスカで、#pyhackでなかったらハマって提出を諦めていたかもしれません。
papercallでハマりやすいポイントや、TalkやSubmissionについての考え方を教えていただき、ありがとうございました。

誤りや「こうやったらもっとpapercallを使いこなせるよ」という情報がありましたら、@ftnext匿名質問箱までお願いいたします。
このブログ記事を見てプロポーザルを提出できた!という方がお一人でもいれば嬉しいです。


  1. PyCon JP Blog: PyCon JP 2019 トーク応募受付開始しました | PyCon JP 2019 Call for talk proposals is now open

  2. こちらから提出できます:https://www.papercall.io/cfps/2160/submissions/new

  3. Submissionを編集する際、ナビゲーションで「MyTalks」がactiveになっているため、Submissionを編集していることがわかりにくいです。papercallに修正の声を送ります

  4. https://www.papercall.io/talks/new

  5. https://papercall.zendesk.com/hc/en-us

イベントレポート | #pyhack にて旦那と彼氏の間に何があるのかをword2vecに聞いてみました

はじめに

いつも心は虹色に! nikkieです。
4/6開催 (第98回)Python mini Hack-a-thon のイベントレポートをお送りします。

注:書かれている感想や考えは4月時点のものです。

勉強会の概要

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

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

2月回以来の参加となりました。
(3月はstapy長野とブッキング)

取り組んだこと

word2vec入門!

今年はじめに どうしたら「彼女」から「奥さん」になれるかを『Word2Vec』に聞いてみた | AI専門ニュースメディア AINOW を見て以来、ずっと気になっていたword2vecを触ってみました。

知りたいこと:旦那と彼氏の間に何があるのか?(旦那 - 彼氏)

以下を使って答えを求めてみます:

notebookはこちら:
word2vecで彼氏と旦那の間に何があるのか聞いてみる ライブドアニュースコーパス編 #pyhack 20190406 · GitHub

word2vecとは

単語がベクトルとして表現されるので、単語の足し引きができるようになると理解しています。

f:id:nikkie-ftnext:20190406163345p:plain

よくある例

  • 王様 - 男 + 女 → 女王1
  • 日本 - 東京 + ソウル → 韓国2

詳しくは勉強中です。

コーパス

以下のリンクからダウンロードした「livedoor ニュースコーパス」を使いました。3
https://www.rondhuit.com/download.html

ダウンロードしたtar.gzの解凍:tar -zxvf ldcc-20140209.tar.gz
-vもつけると、解凍したフォルダ・ファイル名がコマンドラインに表示されます)

.
├── ldcc-20140209.tar.gz
└── text
    ├── CHANGES.txt
    ├── README.txt
    ├── dokujo-tsushin
    ├── it-life-hack
    ├── kaden-channel
    ├── livedoor-homme
    ├── movie-enter
    ├── peachy
    ├── smax
    ├── sports-watch
    └── topic-news

形態素解析

Keras MLPの文章カテゴリー分類を日本語のデータセットでやってみる | cedro-blog と同様にjanomeで実施しました。

from janome.tokenizer import Tokenizer
ja_tokenizer=Tokenizer()
line = 'すもももももももものうち'
words = ja_tokenizer.tokenize(line)
for word in words:
    print(word)
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

今回は名詞だけを取り出すことにします。

res = []
malist=ja_tokenizer.tokenize(line)
for tok in malist:
    ps=tok.part_of_speech.split(",")[0]
    if not ps in ['名詞']: continue
    w=tok.base_form
    if w=="*" or w=="": w=tok.surface
    if w=="" or w=="\n": continue
    res.append(w)
res.append("\n")
print(res)
# ['すもも', 'もも', 'もも', 'うち', '\n']

取り出した名詞は半角スペースで区切って並べ、テキストファイルに書き出します。
ライブドアニュースのテキストファイルと同じだけ、名詞を取り出したファイルができます。)
名詞で構成されたテキストファイルはtextと同じ階層にwakatiフォルダを作って配置します。

.
├── ldcc-20140209.tar.gz
├── text
│   ├── CHANGES.txt
│   ├── README.txt
│   ├── dokujo-tsushin
│   ├── it-life-hack
│   ├── kaden-channel
│   ├── livedoor-homme
│   ├── movie-enter
│   ├── peachy
│   ├── smax
│   ├── sports-watch
│   └── topic-news
└── wakati
    ├── dokujo-tsushin
    ├── it-life-hack
    ├── kaden-channel
    ├── livedoor-homme
    ├── movie-enter
    ├── peachy
    ├── smax
    ├── sports-watch
    └── topic-news

名詞を取り出す処理は10分くらいかかりました(1万には満たないファイル数です)。4

モデル作成

word2vecのモデルを作る上で、ライブドアニュースから取り出した名詞を1つのファイルに集約する必要がありました。 (gensim.models.word2vec.Text8Corpusに渡すファイルを作る)
以下の記事のシェルスクリプトを利用させていただきました🙏: 【Python】Word2Vecの使い方 - Qiita

find wakati \
| grep -e movie-enter -e it-life-hack -e kaden-channel \
    -e topic-news -e livedoor-homme -e peachy -e sports-watch \
    -e dokujo-tsushin -e smax \
| awk '{system("cat "$0" >> livedoor_wakati.txt")}'

複数のフォルダから集約する必要があったので、grep-eオプション5を使い、「または」検索しました。

彼氏 - 旦那 = ?

足し引きのやり方は、以下の記事を参考にしました:
【Python】🍜ラーメンガチ勢によるガチ勢のためのWord2vec(食べログ口コミコーパスの威力を検証してみた)🍜 - Qiita
引き算はnegativeに指定すると理解しました(ドキュメントの確認は宿題事項)。

旦那と彼氏の間にあるものは、「農家、土地、畑」か〜😳

他の方の取り組みから

感想

気になっていた記事の内容を試せたので満足です。
複数カテゴリの記事を渡していたり、名詞だけに限定していたりと工夫できそうなポイントがあるので、今後確認したいと思います。

  • janomeは初期設定がMeCabより少なく6、使いやすいですね(MeCabの経験と比較して)
  • ファイルの集約に使ったシェルスクリプト便利ですね。「awkでやっていることって何?」って感じなので早々に調べます
  • ファイルパスの扱いでos.pathの代わりにpathlibを使ったところ、なかなかいい感じです

2021/11/28 fix typo: nagetive -> negative (「引き算は」のところ)

登壇報告 | #djangocongress にて、Django Girls Tutorialの次に取り組みたいトピックについて共有してきました

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
5/18のDjango Congress カンファレンスデーに参加し、「Django Girls Blogのネクストステップ」と題して、発表してきました。
このブログで登壇報告します。

勉強会の概要

DjangoCongress JP 2019

DjangoCongress JPは日本で開催されるDjango Webフレームワークのカンファレンスです。
DjangoCongress JPは、Djangoでアプリケーションを開発している人、Djangoを学んでいる人などDjangoに関わる全ての人が参加できます。
参加する全ての人がDjangoについて交流し、出会い、学び、楽しみ、深い理解を得ることを目的にしています。

昨年はDjangoを始めたばかりで右も左も分からずに参加したDjango Congress。
1年経て登壇内容を持参しての参加です。

トークDjango Girls Blogのネクストステップ

https://gitpitch.com/ftnext/2019_slides/master?p=django_congress_2019_blog_next_step

Django Girls Tutorialを始めとするチュートリアルと、Djangoで作りたいアプリが作れる状態の間にはギャップがあると感じています。
このギャップを解消するために、Django Girls Tutorialの題材のブログアプリを作り直し、得られた知見を共有しました。
スライド内容は、チュートリアルで扱っていない機能の実装方法が中心になっています。

取り上げた機能は、「チュートリアルで扱っていない」かつ「身につけるとDjangoでできることが広がる」という観点で選びました。

  • 他のソースコードを読むときに必要となるであろうクラスベースビュー
  • Djangoにこんな機能があると知ってほしかったカスタムタグ権限

実装方法の紹介が中心ですが、最後に話した実際方法の調べ方が言いたかったことです。
(このスライドで扱っていないDjangoの機能はまだまだ多いです。 調べる際に参考になれば嬉しいです)

  • Google検索などで実装例を探す(Djangoのバージョンが古くてもOK)
    • GitHubの動いているコードを参考にしてもいい1
  • 同時にDjangoのドキュメントの中を検索し、一次情報に当たる
    • Djangoドキュメントは英語で表示して検索(日本語で表示しているとヒットしない)
    • 検索結果を確認する際は日本語に戻して表示
    • ドキュメントに記載されていなければソースコードを見る

これは、トークの題材探しとして手を動かす中で見出していった調べ方です。
発表準備の過程はこちらから:

感想

トークを終えたあとに開いたツイッターには、非常に嬉しいコメントがいくつもありました。
フィードバックいただき、ありがとうございます!

こちらは要確認です(akiyokoさんの発表も参考に):

そして、今回一番感謝したいのはGitPitchのDavid Russellさん!!

GitPitchまわりでだいぶハマったのですが、原因はPITCHME.mdのあるフォルダを指定するpパラメタの指定で、末尾につけていた/が不要とのことでした2
Thanks a lot for your help!

これまでで一番大きいと思われる登壇の機会だったので、書籍の「献辞」にならったスライドを入れました。
ここで会場から拍手をいただき、感激しました。(お付き合いいただきありがとうございました)

裏話

ジャンゴールデンウィークネクストステップのネタを仕入れ、その後1回の週末を挟んで資料を作っていきました。
しかし、これまでの登壇と違って、作業見積もりが当てにならず3、資料の最後のパートができたのが前日21時。
そこから勘違いでGitPitchがうまく使えなくて当日朝練習、ランチの時間にアップデートをして登壇という若さに任せた強行スケジュールでした(苦笑)。
スライドに盛り込んだ内容は抜粋で、手を動かすには情報が不足していると思います。
自分の復習の意味を込めて引き続きアウトプットしていきます。

今後

直近では6/1のDjango Girls Workshopで再演の機会をいただきました。
PythonでWebアプリを作ろう [女性対象/男女コーチ◎] 2019.6 - connpass
ユーザ作成の部分に絞って、クラスベースビューの導入ハンズオンを考えています(これから準備するため、変更になる恐れがあります)

というわけで、今後もネクストステップの試みは続くのです。
Django Congress カンファレンスデー、ご参加の皆さま、運営スタッフの皆さま、会場提供のサイボウズさん、1日ありがとうございました!
お疲れさまでした。


  1. matobaさんも同様のツイートをしていて、ちょっと自信を持ちました:https://twitter.com/mtb_beta/status/1129609044799262720
  2. ドキュメントにも末尾に/はありません:https://gitpitch.com/docs/git/branch-many-slideshows/
  3. 今回の登壇内容は蓄積が少ない分野だったことによるかと考えています(=ストレッチゴール)。情報収集→登壇内容組み立て(スライド&サンプルコード)という流れで準備していきました。これまでは蓄積されていた分野で発表することが多く、内容組み立てが中心でした。