nikkie-ftnextの日記

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

直近のPythonイベント紹介(二〇二二 弥生) ※Python以外もあります

はじめに

「今夜、私が(話を聴かせて)いただくのは」、nikkieです。

ずいぶん暖かくなってきましたね。
今回は、私が気になっている勉強会の情報(2022/03時点)をまとめました(ただし、参加予定表ではありません)。
読んだ方が、新しい勉強会を知ったり、参加して学びがあったり、人と繋がったりしたらいいなという願いを込めて記事にしています。

※nikkie's 勉強会コレクションみたいな感も出てきたので、お題にもエントリしてみることにしました!
今週のお題「わたしのコレクション」

目次

3/16 おすすめの技術書 LT会 - vol.3

ラクスさんのLT会シリーズでかなり楽しみにしているのが、おすすめの技術書 LT
「ここがオススメ!」という話を聞くのが、私は好きなんです!

これまで2回開催されており、紹介された本はラクスさんブログにまとまっています!

過去に参加したときは積ん読が増えました。

3連休に読む本を探すのにもいいかもしれませんね。
(なお、私は他の予定がブッキングしております・・。これを読んだ方、代わりに楽しんできてください!)

3/17 Future Tech Night #21 Google Cloud: データエンジニア+MLOps

フューチャーさんは技術ブログに参考になる記事が多く、すごいなあと思っていたのですが、

勉強会シリーズもあることを知りました。
皆さん気になるテーマのようで、現在、定員を超える申し込みとなっています!
私も補欠ですが、「当日参加できなくてもアーカイブは絶対見たい!」と思っています。

3/18 Python自然言語処理ハンズオン2

はんなりPythonさん開催の勉強会、自然言語処理ハンズオンシリーズの第2弾!
今回はBERTでテキスト分類、文章抽出、文章要約といったタスクを扱っていくようです。
「ハンズオンクライアント枠」という試みもあり、楽しみです(想定対象者じゃないかもと思いましたが、せっかくなので手を挙げました)。

前回のレポートはこちら:

3/24 リーダブルコード LT会 - vol.3 🎤

リーダブルコード(可読性、保守性、拡張性、信頼性1)についてのLT会。
LT登壇する🙋‍♂️ので、みんな来て!(宣伝)

3/26-27 PyTexas 2022

Austinの現地開催みたいです🎉
渡米はしませんが、「PyVideoで見るぞー」という決意を忘れないためにリストに入れておきます。
トークのラインナップ見ると、かなり面白そうなんですよ!!

3/30 Machine Learning Casual Talks #13 (Online)

登壇者にupuraさんのお名前を見つけて興味を持ちました。
このあたりの内容なのかなとワクワクしています。

4/1 PyCon JP TV #15: 体験談から知る海外登壇

再び海外へ行って登壇ができそうな状況になってきましたね!

4/4 ML Study #3「機械学習コンペ」

forkwellさんのML Study、「機械学習コンペ」でupuraさんのお話聞けるの特に楽しみです。
(upuraさんは機械学習コンペの入門書も書かれています!)

4/6 Data Engineering Study #13 - ELT・データモデリングツール特集回

forkwellさんのData Engineering Studyはまだ覗いたことないのですが、今回はdbt2も取り上げられるようで、「せめてそこだけは見たい」と思っています。

4/14 みんなのPython勉強会 #80

Pythonをはじめよう」をテーマにする予定です。
3月のwrapupでお伝えしたように、トークの1つは『Python実践レシピ』です。
他2本もお楽しみに!

connpass準備中です。

4/15 春だから! 新しい技術入学してみた! LT大会

ちゅらデータさんのちゅらコラボ。
ちゅらコラボのLT会は勢いがあって聞いていて楽しく、今月も楽しみです。

なぜこの記事を書いたのか

みんなのPython勉強会では、半年くらい前からwrapupに「直近のPythonイベント紹介」をしています。
座長をしていたPyCon JP 2021の(特に早期購入特典)を知ってほしい一心で始めたコーナーなのですが、現在も続いており、スタッフがchoiceしたイベントが紹介されます。
今月はnikkie's choiceとして共有した5月のShizuHack合宿が取り上げられました。

また、たびたび #stapy ハッシュタグでイベント案内しています。

こういうことができるのは、私の手元に勉強会の情報が溢れかえっているためなのですが、「私にとってはこの状態が当然でも、他の方にとっては当然ではないかも」と気づきました。
どんな勉強会があるかよくわからない方もいると思っていて、「試しにブログの記事としてまとめてみよう」と思いつきました。

スタンスとしては「網羅するより推し!3です。
「私はこの勉強会が楽しみ!」というものがあれば、Twitter @ftnextまでお知らせください。

終わりに

2022年3月〜4月の気になっている勉強会リストを共有しました。
これを読んで、「この勉強会興味持った!」というのがあったら嬉しいです。
「私もこれ、気になる!」というのがあれば、ぜひご一緒しましょう!

連載にするかは分かりませんが、もう1回くらいはまとめてみる予定です。

PyCon JP 2021 座長を終え、ようやく平日夜に勉強会に参加できるようになってきました。
そしてオンライン勉強会、数がすごいですね。参加しきれない!🙌


  1. connpassページより:「またリーダブルコードとなっておりますが可読性だけでなく、保守性、拡張性、信頼性を高める文脈でのLTも大歓迎です!」

  2. 最近複数回見かけたので、興味を持ちました。例:dbt (data build tool) を使ってデータをテストする - CUBE SUGAR CONTAINER

  3. 推しを選抜する前に、ScrapBoxに書き出しています。この記事より網羅性が高いです(私の好みバイアスかかりまくってますが):https://scrapbox.io/nikkie-memos/2022%2F03%2F13%E6%99%82%E7%82%B9_%E8%88%88%E5%91%B3%E3%81%82%E3%82%8B%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%83%AA%E3%82%B9%E3%83%88

argparseはオプション引数だけでなく、位置引数も扱えます!!(#Python実践レシピ を勝手に補足)

はじめに

シン・エヴァ、最優秀賞おめでとうございます!1 nikkieです。

この1月に出た書籍『Pythonエンジニア育成推進協会監修 Python実践レシピ』(以下、『Python実践レシピ』)を読んでいます。
Python標準ライブラリのargparseについて、書籍での説明を補足したいと強く思い、この記事を書きました。

Python実践レシピ』は、豊富なライブラリを紹介しています。
リファレンス的に読んでいますが、argparseの取り上げ方については、「情報量が少なく、かえって誤解されてしまうかも」と感じました。
読んだ方が"実践"しやすくなるよう、この記事で勝手に補足します。

おことわり

  • nikkieは『Python実践レシピ』の執筆にもレビューにも関わっておらず、この記事は『Python実践レシピ』的には 非公式 情報です(非公式だから、「勝手に 補足」と言っています)
  • nikkieが勝手にやっていることではありますが、情報の 正確性は追求 したく、公式ドキュメントなど信頼できると考える情報源をソースにします

用語の定義(公式ドキュメントの翻訳にならっています)

  • 位置引数:positional arguments
  • オプション引数:optional arguments

目次

この記事で強く伝えたいこと

Python実践レシピ』を読んでargparseを初めて知った方へ

Python実践レシピでのargparseの紹介

「Chapter10 汎用OS・ランタイムサービス」の10.4でargparseが紹介されています。

10.4 コマンドラインオプション,引数を扱う―argparse

例として登場するのは、文字列を繰り返すPythonスクリプトです(10.4.1 コマンドラインオプションを扱う)。
スクリプトへの引数(オプション)として、(1)文字列、(2)繰り返し回数の2つを入力します。

呼び出し方は以下のようになります。

$ # python repeat.py -s 文字列 -n 繰り返し回数
$ python repeat.py -s シオン -n 3
シオンシオンシオン

オプションを指定する順番に意味はないので、python repeat.py -n 3 -s シオン と指定しても同じ結果が得られます。
繰り返し回数(-nオプション)として3を、文字列(-sオプション)としてシオンを指定したことには変わりありませんからね。

繰り返し回数の引数は省略できるように実装されています。
省略した場合は2が指定されたものとします。

$ python repeat.py -s シオン
シオンシオン

Python実践レシピ』は非常に意欲的に、豊富なライブラリを紹介しており、argparseの例をClick2で書き換える例も紹介しています。

「紙幅の都合もあり、Python実践レシピでは"オプション"としての用途に振り切って執筆したのかな」と捉えていまして、以下でargparseについて補足していきます。

📣位置引数にできる!

※詳しく知りたい方は、チュートリアルの「位置引数の入門」をご覧ください:
https://docs.python.org/ja/3/howto/argparse.html#introducing-positional-arguments

文字列を1つ目の引数、繰り返し回数を2つ目の引数に取るように書き換えられます。

呼び出し方

$ # python repeat.py 文字列 繰り返し回数
$ python repeat.py シオン 3
シオンシオンシオン

引数を指定する順番に意味をもたせているということです。

書き換える前と同様に、繰り返し回数(2番めの引数)を省略してスクリプトを呼び出すこともできます。

$ python repeat.py シオン
シオンシオン

実装

help引数で指定するヘルプメッセージは省略しています。

import argparse

parser = argparse.ArgumentParser(description="Example command")
parser.add_argument("string")
parser.add_argument("num", type=int, nargs="?", default=2)
args = parser.parse_args()

print(args.string * args.num)

書籍のコードから以下のように変更しました。

  • オプション引数ではなく、位置引数とする(add_argumentの第1引数に渡す文字列を変更)
  • 繰り返し回数は、省略できる位置引数とする(add_argumentnargs引数を利用)

オプション引数から位置引数への書き換えポイント

引数名を-から始めないことで、位置引数とする

add_argumentの第1引数は-から始めないことで、位置引数として指定しました。

parse_args() が呼ばれたとき、オプション引数は接頭辞 - により識別され、それ以外の引数は位置引数として扱われます:

https://docs.python.org/ja/3/library/argparse.html#name-or-flags

位置引数はオプション(指定が任意)ではなく、指定が必須になっているため、第1引数stringは、required引数の指定が不要となります。
残っていると、「TypeError: 'required' is an invalid argument for positionals」が送出されます(「required引数は位置引数には無効」とのこと)。

parser.add_argument("string")

第2引数numは、省略できる位置引数

位置引数としての指定を省略した場合にデフォルト値を使うよう、nargs引数とdefault引数を指定しています。

parser.add_argument("num", type=int, nargs="?", default=2)

オプション引数にrequired=Trueを指定するのは「一般的には悪いやり方」

Python実践レシピ』のコードは、文字列のオプション(-s)の指定を必須にするためにrequired引数にTrueを渡しています。

parser.add_argument("-s", "--string", required=True)

この点について、argparseのドキュメントに「一般的には悪いやり方」という記載を見つけました。

注釈: ユーザーは、通常 フラグ の指定は 任意 であると認識しているため、必須にするのは一般的には悪いやり方で、できる限り避けるべきです。

https://docs.python.org/ja/3/library/argparse.html#required

Python実践レシピ』の記載だけを読むと、「required=Trueと指定すればいいのか」と誤解してしまうかもしれません。

書籍は情報が正確である(例えば、公式ドキュメントに沿っている)ことを私は重視しています。
初めて知る読者が間違った使い方を実践してしまわないよう、『Python実践レシピ』のコードはrequired=Trueと書かなくて済むように、位置引数で紹介したほうが適切だったのではないかと考えます。

Zen of Pythonには「Special cases aren't special enough to break the rules. Although practicality beats purity.3」とありますね。
オプション引数でrequired=Trueを使うというのは特別扱いだと思います。
どうしても特別扱いしなくてはいけない理由が私には見出だせていないので、ルールを破らず位置引数で実装したいかなという意見です。

type=strは省略できると考えます

https://docs.python.org/ja/3/library/argparse.html#type

デフォルトでは、ArgumentParser オブジェクトはコマンドライン引数を単なる文字列として読み込みます。

第1引数はデフォルトの挙動で問題ないので、type=strという指定はしませんでした。

私はintfloatに変えたいとき(文字列として扱われると困るとき)だけ、type引数を指定しています。
パスを表す文字列をpathlib.Pathに変えることもありますね。

argparseのチュートリアルやドキュメントのコードで、add_argumenttype=strが指定されている例はほとんど見ないので、省略してしまっていいのではないかと考えています。

IMO:『Python実践レシピ』のargparseのコードをnikkieが書くなら

ここで実装を示したように、位置引数を使います。 オプション引数は使いません。

理由は2点あり、どちらも私の好みによるものです。

  • -s,-nというオプションを毎回入力するのが面倒だから(インターフェースに関する好み)
    • 最初にヘルプメッセージを表示して、位置引数の順番を確認したほうが手っ取り早いと感じます
  • オプション引数の指定を必須にするためにrequired=Trueとするのは、ドキュメントによれば一般的に悪いやり方だから(一般的に悪いやり方は採用したくないという好み)

Python実践レシピ』には引数が1つのケースをオプション引数で実装する例も登場します(10.4.4)が、その場合も私だったら位置引数とします。

終わりに

Python実践レシピ』で紹介されたargparseについて、オプション引数だけでなく、位置引数もあることを補足しました。

書籍は紙面が限られており、その中で豊富なライブラリを紹介するという『Python実践レシピ』のスタンスは素晴らしいと思います。
そして、この本は認定試験の教科書でもあるため、多くの方が読むと期待されます。
残念ながらargparseについては説明が十分とは感じられず、「情報量が少ないためにargparseへの誤解が広がってはいけない」と勝手に補足しました。

Python公式ドキュメントを翻訳されているcocoatomoさんが、以下のように書いています。

Python公式ドキュメントが取り零している部分は、きっと他のブログや勉強会の発表で解説されるでしょう。

Python実践レシピ』についても、この記事が補完関係になったらいいなと思っていますし、今後も勝手に補足していきたいと考えています。

(執筆者の方々やレビュアーの方々には顔見知りの方もいらっしゃるので、)私の補足の仕方として至らない点があれば、TwitterやSlackのDMでフィードバックいただければ大変ありがたいです。


  1. 優秀賞の『アイの歌声を聴かせて』も面白いからみんな観て!(このブログのお約束ですね)

  2. 「Command Line Interface Creation Kit」、略してClickだそうで、コマンドを作るのをサポートする、サードパーティライブラリです(argparseと同じことができると理解しています) https://click.palletsprojects.com/en/8.0.x/

  3. 「特別だと思うものもルールを破るほど特別ではない。ただし、実用に耐えるようにする」(『パーフェクト Python [改訂2版]』より)

イベントレポート | YAPC::Japan::Online 2022、刺激的なトークがいくつも聞けました #yapcjapan

はじめに

いえーい! 3/4,5開催の YAPC::Japan::Online 2022、楽しかった! nikkieです。

#yapcjapan の参加ブログ、小出し作戦を展開中です。

今回はトークの感想です。

目次

Perlは入門レベルですが、飛び込みました!

YAPC::Japan::Online 2022を知ったのは、2021/12/10のイベント振り返り Meetupです。
karupaneruraさんから、Japan.pm 2021について、ふりかえりの共有がありました。

(少し脱線)2日目(3/5)にはピザハットさんのピザが届きましたが、実は、MeetupのPyCon JP 2021振り返りの中で共有したものなんです!
当日はTwitterにピザの写真がいっぱい投稿され、YAPC参加者の皆さんも楽しまれているのを目撃し、感激していました。
感想ブログを拝見し、ピザの話題を見かけるたびに、顔をほころばせています。

YAPC自体は「YouTubeに面白いLTがある!」と知っていて1、イベント振り返りを機に飛び込むことにしました。
タイムテーブルを見て「Perl以外のトークもあり、なんだか楽しそうだった」というのが理由です。
(結果的に飛び込んで大正解だったと思います!!)

印象深かったトーーク!

Perl以外のトークを中心に(LTのブラッシュアップをしながら)聞きました。

私が勝手に登壇資料をまとめたものがこちら2

印象深かった2本を紹介します。

フロー効率の向上から始める開発生産性の高め方 モブワークを沿えて

面川さんによる、開発生産性についてのトーク
個人的ベストトークです!👏👏👏

副題にあるモブワークが注目されますが、モブワーク以外のラクティスを重ね合わせて開発生産性を高めているのが素晴らしいと思いました。

slide=20より

  • 技術面:継続的デリバリー
    • 「トランクベース開発でビッグバンリリースを防ぐ」
    • など
  • チーム面:心理的安全性

私はXPに馴染んでいるのですが、プラクティスの重ね合わせがXPの考え方に通じているように感じられ、成功例として気付きが多かったです。

面川さんの参加ブログに登壇後記もあります。

話せなかったことの共有もステキです。
モブワークのつらみ」を読んで、「やはりシルバーバレットではないんだな」と認識したり、 「1人で作業したいときもある。人間だもの」から裏トークで聞いた「同じ人でも日によってモブワークしたくないこともあるので、柔軟にしていた」という話も思い出しました。
そして、裏トークであった「ステッパーのリンク、共有してください」も実現している!😆

エンジニアの個人ブランディングと技術組織

はてなさんの事例共有!

暗黙知やフロー情報を、技術勉強会でまとめて放流し直す」という点に興味を持ちました。
個人のアウトプットも社内に流通させるべく、技術を使って実現している点がとても興味深かったです!👏

技術記事かどうかは「技術ワード 200 個ぐらいについて正規表現でマッチした個数で判定」しているとのこと。
単語境界を工夫!

上記のブログには、「ブログの URL を入れると技術記事のみの title, url が帰ってくる API を用意」もあったので、このブログで試してみました。

$ curl -G -d url=https://nikkie-ftnext.hatenablog.com https://tech-entry.onk.ninja/entries | jq '.'
[
  ...,
  {
    "title": "声をPythonに聴かせて(後編:対処し、マイクの音声でも「変じゃないよ」)",
    "url": "https://nikkie-ftnext.hatenablog.com/entry/my-first-shion-python-speech-recognition-part2?utm_source=feed"
  },
  ...,
  {
    "title": "おうちで楽しむ #アイの歌声を聴かせて (ミュージカル曲篇)",
    "url": "https://nikkie-ftnext.hatenablog.com/entry/ainouta-music-list?utm_source=feed"
  },
  ...,
]

おー👏 直近の「ありがとう、新宿ピカデリーさん」は入ってないですね(📣このブログはアイうたファン活動する技術ブログみたいですよ!!)
抜粋したアイうたの記事は「エンジニア」といった語を含んでいたからヒットしたのかもしれないですね。
発表スライド22にありますが、たしかに「偽陽性があっても、Slackにノイズがたまに流れる程度」ですから、この判定ロジックは素晴らしいと思います!
どんな正規表現なのか、私、気になります!

LT面白かった!

めちゃくちゃ楽しませていただきました😂

aaa.pl

($a == 1 && $a == 2 && $a == 3) をtrueとして評価する多種多様な方法を紹介!😂

「やり方は一つじゃない(TMTOWTDI: There’s More Than One Way To Do It.)」を存分に浴びました👏

Perl詩を味わう

Perlは文学!!

Perlのキーワード、650もあるんですね!(キーワードの少なさが売りのPython3とはぜんぜん違って面白い!)
例えば、studyというキーワードがある!!study - Perldoc Browser

豊富なキーワードで味わい深い文学的な表現ができます👏(これがホントの文芸的プログラミング)

Tシャツに書かれたコードを読む

コードが書かれているだなんて、Tシャツ、ステキすぎじゃないですか!!

Tシャツに書かれたコードは、TMTOWTDI

Acme::Bleach で「漂白」されたコードの読み解き方法、お見事でした👏
私はこういうの大好きです!

トークを聞いての感想

ハッカー

Twitterに流れてくる発表資料を見て思ったのが、Reveal.jsの利用率が高い!ということ。
発表資料のアップロード先を自分で用意する姿勢にも、ハッカー感を感じます4

sphinx-revealjsユーザで、TwitterでOGP画像出す設定は自作5した身からすると、「すごい!このスライドもOGP画像きれいに出ている!どうやってるんだろう」と、すごく興味を惹かれました。

例えば以下、Reveal.js + Hugo による例ですが、OGP画像の設定の仕組みやGitHub Actionsまわりなど、自分の参考にしたいですね。

こういうの覗けるの最高だなって思います。ありがとうございます!

トークの他にも、Tシャツといい、川柳ジェネレーターといい、YAPC随所にハッカーを感じました。

多様性

「やり方は一つじゃない」という哲学を持つPerlというのもあってか、「多様性」という語を見聞きする機会がPyConよりも多いように感じました。

上で紹介した面川さんの参加ブログより

テックカンファレンスは他にも参加しましたが、YAPCは器の広さ、つまりオープンな雰囲気が他のカンファレンスよりも大きいと思いました。

songmuさんのキーノートより
https://junkyard.song.mu/slides/yapc-japan-online-2022/#72

多様性: 「変な人」を直ぐに排斥して欲しくない

多様性が言語化されていることもあってか、色んな話6が聞けて大変刺激的でしたし、Perl入門者でも受け入れてもらえたように感じて楽しめました。

終わりに

飛び込んでみた #yapcjapanPythonコミュニティとは空気感が全然違って、私にはとても刺激的な2日間でした。
会期が終わった後もスライドや実装を覗いて刺激を受けています。
2日間本当にありがとうございました!

YAPC::Japan::Online 2022については全3回で語り尽くしました。
あとはLT登壇報告(Perl入門の感想)もアウトプットしてみたいなと思っています。

話題は変わって、別の言語のカンファレンスに行くという機会は、4月にもあると知りました。
4/9(土),10(日),11(月)開催のPHPerKaigi 2022ハイブリッド開催とのことです!
タイムテーブルを覗くと、t-wadaさんやそーだいさんのトークがある・・🤤

YAPCで大活躍されてたuzullaさんが、クーポンを共有されてます!
ありがたく使わせていただきましょう。

それではまた、どこかの(オンサイトかオンラインの)カンファレンスで!🖐

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


  1. YAPC::Japan 運営ブログに「登壇資料まとめ」として記載いただき大変恐縮です。ありがとうございます。 YAPC::Japan::Online 2022 感想エントリーや登壇資料などまとめ(更新中) - YAPC::Japan 運営ブログ

  2. https://docs.python.org/ja/3/reference/lexical_analysis.html#keywords

  3. songmuさんキーノートにも「自分の道具を自分で作る古式ゆかしきハッカー仕草」とありました ref:https://junkyard.song.mu/slides/yapc-japan-online-2022/#3

  4. アウトプットネタとしてストックされています。sphinx-revealjsいいと思うので、皆さんに使ってほしく、筆を進めねば・・

  5. 過去のPyCon JPの例ですが、「Python関係」という縛りがあります。 ref: PyCon JP Blog: PyCon JP 2021 トークプロポーザルのレビューの観点を共有します | Review perspectives of talk proposals of PyCon JP 2021 今回のYAPCのようなラインナップは私が参加したPyCon JP 2018〜2021では実現していないと感じますね(どちらがいい/悪いと言いたいわけではないです)

イベントレポート | YAPC::Japan::Online 2022の川柳大会、楽しかったです #yapcjapan

はじめに

いえーい!1 YAPC::Japan::Online 2022、楽しかった! nikkieです。

#yapcjapan の参加ブログ、小出し作戦を展開中です。

前回がトーク以外だったから次はトークの感想を語る、と思わせての川柳大会レポートです。
私はあんまり川柳詠んでませんが、ツール(川柳ジェネレーター)がめちゃくちゃよかったんです!

目次

川柳ってどういうこと?

会期前〜当日までYAPC川柳大会が行われていました。

入選したら「技術書1万円分」!!
参加方法は、

YAPC川柳ジェネレーター」で、川柳を詠んだら、詠んだ川柳の画像を 「#yapc川柳」のハッシュタグをつけてツイートするだけです!

川柳の画像は「YAPC川柳ジェネレーター」で生成した画像のみを対象とさせていただきます。

YAPC川柳ジェネレーター

川柳大会への参加に使うのが、川柳ジェネレーター!👏

こんな感じで使います:

Firefoxだと川柳画像をクリップボードにコピーが動かないのか、画像を右クリックして新規タブで開き、再度右クリックしてコピーしました)

入選作品(5本)

※川柳大会のアナウンスブログに「結果の発表は、YAPC::Japan::Online 2022イベント当日と本ブログで行います」とあるので、これは非公式情報です。
RTして自分のタイムラインにメモっていたのですが、バックアップ用途で以下に書き出しました。

2日目(3/5(土))のClosingで発表されました。
Discordは大いに盛り上がりました(サイリウム振りまくり!)。

1日目のReDosのトークに繋がってる!

Plagger、興味深いです👀

縦読み! 技巧派!!

個人的に好きな作品群(RTしたもの)

(いいねしたものも拾いたいですが、それは余力が出せるタイミングがあればやるということで・・)

nikkieとYAPC川柳ジェネレーター

初めて触ったときに、川柳をツイートする以外の可能性を感じました✨

これは俳句2の話なのですが、「自由律」というものがあります。
スーパー大辞林を当たると「従来の三十一音や十七音の形式にとらわれず,自由な音数律で詠もうとするもの」。
つまり、五七五の十七音にとらわれないということです。

自由律の例はこちら(学生時代に見て、記憶に刻まれました)

分け入っても分け入っても青い山

自由律が浮かんだ私は「自分のLTのタイトルもジェネレーターに当てはめられる!」と思いつきました。
Perlの力も使って聴かせるAIの声」、そもそも十七音じゃないですが、川柳ジェネレーターに入れてしまえるぞ、と。

ジェネレーターに入れた後は、画像がダウンロードできるのですが、「Zoomの背景画像に設定できるじゃん!」と気付き、設定しました。
また、スライドで最初に見せる画像や、OGP画像としても設定させてもらいました。

川柳画像をURLで共有できる裏機能もあるようで、気になる方は以下のURLにアクセスしてみてください。

https://yapcjapan.org/2022online/senryu/?line1=Perl%E3%81%AE%E5%8A%9B%E3%82%82&line2=%E4%BD%BF%E3%81%A3%E3%81%A6%E8%81%B4%E3%81%8B%E3%81%9B%E3%82%8B&line3=AI%E3%81%AE%E5%A3%B0&nameInput=%E3%81%AB%E3%81%A3%E3%81%8D%E3%83%BC

ジェネレーターのおかげもあってYAPCのLT登壇は満喫しました。

川柳画像をジェネレートするソースコード

川柳画像の生成、どう実装しているんでしょう?
私、気になります!3

ということでソースコードを探したところ・・

Japan Perl Associationの下に見つけました!(私が勘違いしていたら教えてください)4

index.html と src/index.ts で実現しているのかなーと思っています。
この実装を読み解いてみます!

終わりに

参加中はアウトプットしてませんでしたが、私の琴線に触れまくっていた川柳ジェネレーターについてレポートしました(川柳大会レポートだけでなく)。
最高のジェネレーターのおかげもあって、3/4,5の #yapcjapan は優勝超えの楽しさでした。

俳句の型は五七五ですが、自由律も成り立っているって、Perlの「TMTOWTDI」に通じるかもと思いました。

また、川柳には #yapcjapan ハッシュタグもデフォルトで付くので、楽しみながらチャリティー企画5に参加できるのもいいですね!

スタッフの皆さま、特にpastakさん、川柳大会の開催、ありがとうございました。
また川柳大会に参加した皆さま、当日作品が流れて来るのがとても楽しかったです! ありがとうございました。

脱線(アニメネタ):自由律が浮かんだのは『サイダーのように言葉が湧き上がる』のおかげ

2020年の公開延期を経て、2021年7月公開。
現在は配信で視聴できますし、円盤も入手可能です6

タイトル、予告だと「サイダーのように/言葉が湧き上がる」と切ってますが、これ自体が俳句で、「サイダーの/ように言葉が/湧き上がる」と切ると、十七音と分かります。
劇中にも自由律の句が出てきますし、この作品を観ていたのもあって、今回川柳ジェネレーターを心ゆくまで使い倒せました!

(サイコト、Python使って推したかったんですが、PyCon JP 2021もあって推し切れなくて、やりたかったことができなかった反動をいま、アイうたファン活動(=アイカツ)のモチベにしているのかもと思いました)


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


  1. Perl界隈は新参者なので、アンカンファレンスでよく聞いた「いえーい!」(「うぇーい!」?)を使ってますが、もっといい感じの挨拶があったらTwitter @ftnext 宛に教えてください🙏

  2. 川柳も俳句も五七五ですよね。俳句は季語が必要ですが、川柳は季語不要と認識しています(詳しい方に聞いたらまさかり飛んでくるかもですが)

  3. 入力したテキストからリアルタイムに画像が作れる機能、私はいろんなところで パク 参考にしたいと思ったんです!

  4. (3/8 追記) pastakさんから「合ってます!」と返信いただきました。ありがとうございます!

  5. 日頃の感謝を伝えよう!Twitter連動型チャリティー企画のお知らせ - YAPC::Japan 運営ブログ

  6. 冒頭20分が公開されている!ようなので、予告でビビッときた方はこちらもどうぞ: https://youtu.be/KKoyD1Sp0-E

イベントレポート | YAPC::Japan::Online 2022に参加、優勝超えのカンファレンスでした #yapcjapan

はじめに

いえーい! YAPC::Japan::Online 2022、楽しかった! nikkieです。

優勝という概念を"完全に理解"した身ですが、2日間のカンファレンスの75%くらいが終わった時点で優勝でした。
その後も楽しませていただき、優勝超え です1
盛り上がっている気持ちのまま、楽しんだポイントを書き出していきます。

おことわり

  • スライド見直したいので、トークの内容はほぼ触れずにいきます!
  • LT登壇は別途まとめます

目次

YAPC::Japan::Online 2022とは

YAPCはYet Another Perl Conferenceの略で、Perlを軸としたITに関わる全ての人のためのカンファレンスです。
Perlだけにとどまらない技術者たちが、好きな技術の話をし交流するカンファレンスで、技術者であれば誰でも楽しめるお祭りです!

今回のYAPC::Japan::Onlineは、オンラインイベントにありがちな単に見るだけのものではなく、ちゃんと参加して楽しめるオンラインカンファレンスになるように工夫を凝らしています。

参加してからこのサイトを改めて見ると、たしかに ちゃんと参加して楽しめる オンラインカンファレンスでした!👏

YAPC Japanは運営ブログが精力的に書かれていて、かつ、参加者に読まれている感もちゃんとありますね。2

タイムテーブル

2日間開催のオンラインカンファレンス、

  • 3/4(金)は夕方からで、トーク & 懇親会
  • 3/5(土)は午後からで、トークやキーノートやLT

という感じでした。
個人的には土曜の午後からというのが新鮮で、かつ、嬉しかったです。
土曜の朝はちょっと寝坊したいんですよね。

タイムテーブルは運営ブログにも詳しくまとまっています。

オンライン開催の雰囲気

  • YouTubeで配信(トークは2トラック)
  • 会場はDiscord
    • トーク中の実況はトラックごとのチャンネルへ
    • トークの合間にDiscordのステージを使ったトーク3
    • オリジナルemojiで盛り上がりました4サイリウム振りまくったし、草生やしまくったぞ!!
  • 登壇はZoom
    • LTでZoomに入って気付いたのですが、配信がめちゃくちゃスムーズでした👏

3/5の夕方にLTが控えていたので、トークを聞きながらLTのスライドやコードをブラッシュアップしていました。
興味深いトークは裏トークも聞きに行きました。
深い話が聞けたり、質問への回答を聞いて学びがあったりと、トーク、めちゃくちゃ刺激的でした。

掴まれた胃袋

3/4(金)、懇親会のフードが大満足だったんです!

また、3/5(土)にはおやつの時間帯にピザハットさんのアツアツのピザが届きました!

初めてづくし=いくつも一歩踏み出したぞ(※追記:踏み込むでしたね)

(3/6 追記)

※「一歩踏み込む」を「一歩踏み出す」と勘違いして書いていたことに気付きました🙈
Opening直後は「踏み込む」で認識していましたが、レポートをまとめる際に「踏み出す」に取り違えたようです。

以下は勘違いしていた際の記載のママで残しておきます。ご笑覧ください。
踏み出す→踏み込むの差分が自分の伸びしろってことですね!

(3/6 追記終わり)

Openingで共有された「一歩踏み出す」。
オンラインだとオフラインよりも遠慮しがちかなと思うので、これを共有してもらえて背中を押されました。

LTでPerl入門したのも、今思うと「一歩踏み出す」ですね。

初めてのYAPC

参加自体が初めて!

PyConとの空気感の違いは面白かった(interesting)です。5
言語の設計思想を体感できるのが言語ごとのカンファレンスなのかなと思いました。
他の言語のカンファレンスも参加してみたい!(例えば、4月にPHPerKaigi 2022があるみたいです)

初めてのローストチキン切り分け

上の記事でおすすめされていたため、切り分け方を調べていただきました。

トークを聞きながらもぐもぐもぐもぐ。

初めてのラムネ開栓

懇親会フードと一緒にいただいたヤプシーラムネ。
ラムネって開けたことなく(そもそも飲んだことがほとんどない)、これも方法を調べて開けました。

(参加したオンラインカンファレンスでは)初めてのスポンサーグッズノベルティ

初めてのサイリウム

なかなか折れず、調べてパキッとしました。

そしてLT中などふりふりしてました。楽しい!🙌

終わりに

2日間のカンファレンスが終わったという高揚感で書き上げました。

ここでは触れていませんが、聞けてよかったトークが何本もありました。
カンファレンスのメインコンテンツのトークも、それ以外の要素(食事など)も、非常に楽しみました!

登壇者、スタッフ、スポンサー、そして参加者の皆さま、2日間楽しいカンファレンスをありがとうございました。
スタッフの皆さまはここまでの準備、大変お疲れさまでした。とても楽しかったです!


  1. 入門者が謎概念を作り出したので、まさかりが飛んでくるかもしれませんねw 優勝ってもしかして上限はないんですかね?(無限大と同じ可能性あるぞ)

  2. PyCon JPスタッフの中で何本もブログを書いての感想ですが、PyCon JP Blogは読まれてないと感じます。隣の芝生は青いってやつかもしれませんが

  3. 今回もやります!YAPC::Japan::Online 2022 裏トークチャンネルとは - YAPC::Japan 運営ブログ

  4. YAPC::Japan::Online 2022 スポンサー :株式会社ネコトーストラボ Neko Toast Lab.

  5. Perlの「やり方は一つじゃない(TMTOWTDI: There’s More Than One Way To Do It.)」と、Zen of Pythonの「There should be one– and preferably only one –obvious way to do it.(1つのことをするのに、いろいろなやり方は好ましくない。引用:『パーフェクト Python [改訂2版]』)」って真逆ですよね。YAPC::Japanでは「多様性」が多く登場した印象です。翻って、Pythonコミュニティは多様性が無いわけではないと思いますが、言語化しているPerlコミュニティほど「多様性」って言葉に出されてないかもなあと思いました

イベントレポート | Pythonで自然言語処理ハンズオン #はんなりPython

はじめに

すごい、すごいよこれ。 nikkieです。

2/25(金)に、はんなりPythonさん開催の自然言語処理ハンズオンに参加しました。
初めてtransformersを触ったのですが、「学習済みのモデルって、いまやこんなに簡単に使えるのか!」と衝撃を受けました。
レポートを綴ります。

目次

イベントの概要

Pythonで自然言語処理ハンズオン - connpass

BERTを中心とした言語モデルを使いこなそう!というコンセプトで開催します。今回は、分散表現(Word2vec)からBERTによる感情分析までを行います。

自然言語処理の入門と位置づけており、入門者を対象とします。中級者以上の方には、手ごたえが感じられないかもしれないのでご注意ください。

実務で自然言語処理をやっている えぬえるぴ〜や(=NLPer)ですが、「BERTを使ったハンズオンって珍しい!」と興味を惹かれ、参加しました。

ハンズオンの資料

SlideShareからダウンロードすると、リンク先が参照できます

2部構成のハンズオン

  1. 理論編:自然言語処理の関連学問分野を知る本格的な講義!
  2. 実践編:入門ハンズオン

今回の時間配分としては、理論:実践=3:1くらいでした。
理論は私もキャッチアップ中1ですが、今回の私の興味は動くコードにあります。
そこで、入門ハンズオンに絞ってレポートします。

動作環境

Colabで全然やっていいと思うのですが、今回は訓練がなかったので、ローカルに環境構築して動かしました。
モデルが小さめというのもあり、推論はCPUでも動きました。

$ python3.9 -m venv venv --upgrade-deps
$ . venv/bin/activate
(venv) $ pip install transformers[ja] torch

入門ハンズオン

「BERTを使ってみる」ハンズオンです。
transformersを使って、日英それぞれで以下のタスクを解きます。

  • 感情分析("sentiment-analysis"
  • マスクした語を埋める("fill-mask"

タスクの解き方は共通です。
transformers.Pipelineを初期化し、対象の文を渡すだけ!2
Pipeline初期化時に、モデルとトークナイザも指定します。

>>> from transformers import pipeline
>>> nlp = pipeline("sentiment-analysis", model="daigo/bert-base-japanese-sentiment", tokenizer="daigo/bert-base-japanese-sentiment")
>>> print(nlp("この商品を買ってよかった。"))
[{'label': 'ポジティブ', 'score': 0.9898485541343689}]

ハンズオンで使ったモデル

英語文の感情分析

"sentiment-analysis"タスクでmodel引数、tokenizer引数を指定しない場合、デフォルトで使われるそうです(実行時に出力されたメッセージより)。

日本語文の感情分析

英文中のマスクした語埋め

"fill-mask"タスクのデフォルトはこちら。
tokenizer.mask_token"<mask>"なので、"I eat <mask> everyday""<mask>"部分を埋めるように処理するんですね。

日本語文中のマスクした語埋め

今回指定したトークナイザではtokenizer.mask_token"[MASK]"でした。

終わりに

transformersモデルの指定を変えるだけ自然言語処理のいろんなタスクが解けるんですね!
各タスク向けのモデルは有志が公開していて、手元の問題に合わせてモデルをダウンロードして使うだけという状況3になっているとは!

先日、音声認識音声合成のモデルを試したとき4にも感じましたが、必要なライブラリを選んで使うように、必要なモデルを探してダウンロードして使う時代になってるんですね。
そして中身をきちんと理解していなくても(=ブラックボックスでも)、それなりの結果が利用できる!

これってすごくないですか?

今回のハンズオンは3/18(金)に続くそうです。
次回も楽しみにしています。
登壇者のusagisanさん、運営・参加者の皆さま、ありがとうございました!

補足:合わせて読みたい

読んできた中から、このハンズオンで初めて自然言語処理に触れた方向けに、関連書籍を挙げておきます。
ハンズオン資料の参考文献に当たるのもありだと思います。

復習や予習によさそうなのが『BERTによる自然言語処理入門』5

私視点でBERTを使いこなしているように見える方から教えていただいたのですが、サンプルコード豊富で(BERT以後の)入門書として推していきたい一冊です(写経の時間を作りたい・・)。
またBERTに絞って、理論面の解説もあります(サブワードの解説とか分かりやすかった!)

サンプルコードはこちらで公開されています:https://github.com/stockmarkteam/bert-book

もう1冊。
今回のハンズオン、理論面が本格的でしたが、私が一歩目として読んだのはこちら(参考文献でも挙がっています)。

自然言語処理はいろいろなタスクがあり、前提知識が少ないタスクに当たるときはこの本まで立ち戻っています。


  1. 私の意見として、BERTがゲームチェンジャーすぎて、BERT以前の自然言語処理の内容はやや時代錯誤になってしまった部分もあるように感じています。

  2. インスタンス__call__メソッドで処理できるの、spaCyっぽいと思いました。参考:https://spacy.io/usage/spacy-101#annotations

  3. ただし、推論の精度が不十分であれば、教師ラベルを用意して訓練(fine-tuning)する必要もあると思います

  4. 声をPythonに聴かせて(後編:対処し、マイクの音声でも「変じゃないよ」) - nikkie-ftnextの日記

  5. 2月は自然言語処理関連の勉強会が多く、【初心者向け】Pythonで手軽に始める文章校正 - connpass で清原さんも挙げられていました

ありがとう、新宿ピカデリーさん #アイの歌声を聴かせて

はじめに

ありがとう、新宿ピカデリーさん、nikkieです。

公開から17週にわたる新宿ピカデリーさんでの『アイの歌声を聴かせて』の上映が、2/24(木)で一区切りとなりました。
新宿ピカデリーさんでのいくつものmemoriesを、ここにまとめます。

目次

新宿ピカデリーさんで初回鑑賞!(10/30)

ぶっ刺さって書いたブログが以下です。

その後、新宿ピカデリーさんでのスタッフトークに通い詰めます。

スタッフトーク 音楽篇(11/8)

アイうたは公式さんが爆速でイベントレポートを上げてくださるの、とてもありがたいです。

咲妃さん×吉浦監督登壇 舞台挨拶(11/21)

「咲妃さんのファン優先だから、私は客層違うだろう」と当初行く気はなかったのですが、監督がぼそっと漏らした"トクベツ"がどうしても気になって行ったのです。

立川シネマシティさんなどでの上映前の「フィール ザ ムーンライト 〜愛の歌声を聴かせて〜」再生は、ここから始まったのですね。

スタッフトーク 美術篇(11/25)

2人のお話面白かったなーと思い出します。
背景美術の工夫とか聞けたのがよかったです。

美術は添えるだけで良いという感じで、スラムダンクでいう左手みたいなものです

スタッフトーク 作画篇(11/30)

このあたりのスタッフトークから、登壇した監督が「いつもお見かけする方がいますね」と言われるようになって、客席でギクッとしてました😂

その後もたびたび通います

たまに大きい箱で上映してくださり、「いい音響で観たい!」と通いました。

終わりに:またね!

想い出を振り返ったところ、11月時点では一人で楽しんでる感じでしたが、TwitterHarmonizerの皆さんと繋がっていって、最近はTLがアイうた一色です。
みんなで観てる感覚があって、めっちゃ楽しいです、いつもありがとうございます!

新宿ピカデリーさん、本当にありがとうございました👏👏👏