あんパン

こしあん派

YAPC::Hakodate 2024にスタッフとして参加した

2024/10/5に開催された YAPC::Hakodate 2024 にコアスタッフとして参加していたので、ややいまさらながら個人の感想などを書いておく。ブログを書くまでがYAPCです。

yapcjapan.org


JPA理事の id:papix さん繋がりで YAPC::Kyoto 2023 ではコアスタッフをしていて YAPC::Hiroshima 2024 でもと思っていたのだけど、ちょうどたてこんでいる時期だったためやむなく断念。ひととおり終わって余裕がでてきたので YAPC::Hakodate 2024 ではスタッフをやらせてくださいとpapixさんにお伝えして参加することになった。ちなみに何故忙しかったというと以下の仕事をしていたから。

masawada.hatenablog.jp

準備面で担当したのは参加者向けの名札の監修と、学生旅費支援に参加する学生さんとのやりとり。名札のデザイン自体は id:mazco さんにお願いしていて、自分は名札に配置する要素だったり文言だったりを考える係だった。大吉祥寺.pmに参加した際に名札のおもてなしがめちゃいいな〜と思っていて、YAPCでもこういう名札ができるといいなと考えていたので自ら買って出たのだった。

最低限必要な要素を運営内でヒアリングして、あとは完全に自由にやらせてもらった。いま見返すと表面についてはほぼ初稿のままで細かい調整が入っているくらいで、 id:mazco さんに助けられまくっている。

検討段階の名札(初稿)

入稿した名札

裏面はいろいろな変遷を経て決定稿に落ち着いた。QRコードからヘルプページに飛べたり、ベストスピーカー賞のフォームに飛べたりという感じ。実は当日向けのヘルプページを作る試みも今回が初めてで、このコンテンツも自分が担当していた。ヘルプページについてはいろいろ反省事項もあるので今後に役立てたい。

もちろん名札以外にも、前夜祭や当日の運営スタッフとしてもいろいろと動いていた。なりゆきで裏方の裏方みたいな動きをしていたので、発表をあんまり見られなかったり参加されていた方々との交流が少なめだったりという感じでこちらもやや反省。発表については後日公開されるであろうYouTubeでの配信を見つつ、次回は余裕をもった動き方をしたい。しかし反省といいつつ、こういうわちゃわちゃした感じが文化祭っぽくて楽しくはあるのだよなあ。


個人的に参加した中で一番よかったことは @deckeye さんと初めてリアルでお会いできたことだと思う。というのも、@deckeyeさんはTwitterでほぼ最初期にフォローしていただいた方なのだった。おそらく1人目か2人目くらいじゃないだろうか? 自分がTwitterアカウントを作ったのは中学の卒業式を終えた直後の2009年3月21日なので、実に丸15年越し。今回 YAPC::Hakodate 2024 の特別企画に登壇されるという話を運営内で聞いてからずっとご挨拶したかったので、お声がけできて本当によかった。今後ともよろしくお願いします。

一方最大の後悔は観光を一切せずに函館を脱出してしまったこと。2年前に妻と函館旅行をしていたこともあり、余市とかにも行きたいしシュッと札幌まで移動してしまうか〜と考えていたのだけど、2日間動き回った反動なのか札幌のホテルで夕方まで寝てしまいなにもできずに破滅。こんなことなら函館に残ってもうちょっといろいろ食べ歩いたらよかった。また近いうちに遊びにいけたらいいな。

と思っていたら、これを書いているいま、妻が社員旅行で函館にいます。なぜ。

Hatena Engineer Seminar #31 「少年ジャンプ+」 サーバーサイド編でオンライン登壇します

2024年10月15日(明日!)に開催される Hatena Engineer Seminar #31 に「10年続くサービスのデータを1日未満のメンテナンスウィンドウで安全に移管する」というタイトルで登壇します。

hatena.connpass.com

3月末まで忙しくしていた理由の一端であり、これまでの自分の仕事の中でもかなりの大玉という感じなのでぜひ見にきてください。配信のみなので自宅にいながら見られます。


しかし、話したいことがありすぎて30分の発表では到底収まらないので、隙を見つけて一般化可能なデータ移行テクをいろいろとアウトプットしていきたい所存。

WU4/H1を購入してArch Linuxをインストールする

2年前に組み立てたThinkPad X270の筐体が割れ始めたので代替PCを探していた。軽量なのがいいと思っていたところ、id:uzullaさんの記事でFCCL(元富士通)の端末がいいというのを見かけて、量販店で触り比べながらWU4/H1という型番のラップトップを購入した。

uzulla.hateblo.jp

ややこしいことに、ほぼ同じ筐体で型番がいくつかあって微妙に仕様が異なる(しかも店頭モデルとWeb直販モデルでも型番が違う)。購入したWU4/H1はバッテリ容量が比較的多めでP系のプロセッサを搭載できてThunderbolt 4が2ポートあるWeb直販モデル。自分はCore i7-1360Pで32GB、SSDは512GBにカスタムして発注した。

最軽量のWU-X/H1は700gを切るが、WU4/H1は900gをギリ切るくらいの重量。とはいえこれまで持っていたThinkPadから比べると300-400gくらい減るのでだいたい缶ビール1本分なくなると考えるとかなり差がある。これでいて画面サイズは16:10の14インチなので驚きがある。

ところでこのシリーズはJIS配列のキーボードしか選べないが、かな刻印がない。バックライトをつけない場合は印字がかなり薄く、一瞬無刻印かのような気持ちになる。なので、違和感なくUS配列として扱うことができている。


WSLを利用するかいつも通りLinuxにするか5分くらい考えて、慣れた環境がいいと思いLinuxを入れることにした。いつも使っているインストールスクリプトで入れた。

github.com

結果、特に何事もなく動いている。sof-firmware をインストールしていなかったためPulseAudioでdummy outputしか存在せず音が出なかったというポカミスはあったがそれくらい。指紋リーダについても fprint を入れることで問題なく動く。なんならmicroSDのカードリーダーもちゃんと動く。まあ令和だしもう動かない方が珍しいのかもしれない。ひととおり動いたのでArch Wikiに動作確認情報を追加しておいた。

あとキーボード関連の細かな話題として以下のような挙動をするようであった。一応忘れないようにメモ。

  • キーボードバックライトはLinuxからは制御できず、fn+spaceで明るさを3段階で制御できる
    • どうもデバイスがないと思ったらOSを介さずに制御することになっていそう?
  • F10を押すとXF86Displayが発火すると思いきやmod+pが発火する
    • xevで様子を確認できる

軽量ラップトップではあるもののキーボードも特に打ちづらいといったことはないし、選べるなかでは一番強いPプロセッサを搭載しているがファンはあまり回らず回っても静音でかなり体験が良い。届いてから1ヶ月弱くらい使って様子を見ていたが特に違和感なく生活に溶け込んでいる。全体的に満足度の高い買い物ができたと思う。

jqで複数ファイルに分割されたJSONの配列の要素数を合計する

jq -s 'add | length' ./*.json でいける。

$ cat a.json
[1, 2, 3, 4]
$ cat b.json
[5, 6, 7, 8, 9]
$ jq -s 'add | length' ./*.json
9

-s--slurp の略らしい。

-s, --slurp read all inputs into an array

以下のように挙動を追うとよく分かる。

$ jq '.' ./*.json
[
  1,
  2,
  3,
  4
]
[
  5,
  6,
  7,
  8,
  9
]
$ jq -s '.' ./*.json
[
  [
    1,
    2,
    3,
    4
  ],
  [
    5,
    6,
    7,
    8,
    9
  ]
]
$ jq -s '. | add' ./*.json
[
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9
]
$ jq -s '. | add | length' ./*.json
9

初めて触る言語で爆速に物をつくりはじめるまでにやったこと

とある事情により産業用のプロトコルを喋るコードを書く必要があり、そのライブラリがPython向けにしか提供されていないというケースに出くわした。普段はPerlとTypeScriptのみで生きていて、ときどきGoを触ったりRubyを触ったりシェルスクリプトを触ったり……という感じでPythonは数年前にVimのプラグインを書くのにちょろっと触ったくらい。記憶としてはなんかインデントに意味があったはず、くらいが残っている状態。

教科書的にいうと公式ドキュメントのチュートリアルなどから入って書き方を学びつつREPLで試しましょう、GitHubなどで公開されているコードを読みましょう、といったコースが王道だし丁寧にやっていくならそうなるでしょうと思う。しかしだらだらと勉強から始めていたら成果を出せない、品質はホットモックレベルでいいからとにかく高速に物を作りたい、といったときにこれをなぞっていると足が遅い。そういうケースでこうやったぜ的なTipsを書いてみる。主に作りたいものが決まっている人向けRTAテクといえる。

今回はPythonにフォーカスしているので必ずしも普遍的ではないが、まあまあ他のオブジェクト指向っぽい言語でも流用できるのではないかとは思う。どうでしょう。他の言語を学んでいるかとかのバックグラウンドにもよりそうなのでかなり限定的なポジショントークかもしれない。

依存モジュールの管理方法を学ぶ

  • ローカルのディレクトリに依存を閉じ込める方法を最初に学んでおけるといい
  • ミスってグローバルな領域を汚染するとあとで面倒なことになるケースがある
  • どうせ何らかのモジュールを使わないと開発できないのだから初手で学んでおく

printデバッグの方法を確認する

  • とにかく変数の状態を見られればなんとでもなる
  • Hello, Worldぽいけど必ずしもテキストを出力したいわけではない
    • なんかオブジェクトっぽいものの内部状態とかを出力できると便利
    • メソッドの一覧出す方法とか知っておくと役立つこともある

github/gitignoreを眺める

  • リポジトリに混ぜてはいけないものを学ぶために便利
    • まあパクってきたらいい
  • どういうツールが存在するのかを見るのに便利

作りたいもので使う依存モジュールのコードを読みまくる

  • ドキュメントになくてもサンプルコードがあったりテストを読むとなんとなく使い方がわかる
  • 言語としての文化もなんとなく分かる
    • それが必ずしも一般とは限らないけど……

というわけでこまごま書いてみた。みんなやっとるで、というものばかりだけど、最低限これくらいおさえたらあとは流れで物を作ることはできた。他の人は新しい言語で爆速に物を作りたいときにどこを見ているのかはやや気になる。