Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
小さなPerlスクリプトから続くOSS
Search
iberianpig
November 15, 2025
Programming
0
11
小さなPerlスクリプトから続くOSS
2025/11/15 YAPC::Fukuoka 2025
iberianpig
November 15, 2025
Tweet
Share
More Decks by iberianpig
See All by iberianpig
RubyKaigiで手に入れた HHKB Studioのための HIDRawドライバ
iberianpig
0
1.4k
DIY Your Touchpad Experience: Building Your Own Gestures
iberianpig
1
2.3k
Other Decks in Programming
See All in Programming
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
230
20260315 AWSなんもわからん🥲
chiilog
2
170
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
390
Windows on Ryzen and I
seosoft
0
360
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
920
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
410
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.1k
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
290
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
3k
飯MCP
yusukebe
0
220
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
240
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
160
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
580
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
A Soul's Torment
seathinner
5
2.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
92
Statistics for Hackers
jakevdp
799
230k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
130
Transcript
小さなPerlスクリプトから続く OSS 2025/11/15 YAPC::Fukuoka 2025 Kohei Yamada @iberianpig
About Me Kohei Yamada GitHub @iberianpig Twitter @nukumaro22 自己紹介
About Me • 福岡県糸島育ち ◦ 中学の職場体験は沖合で漁業 • Ruby / Linux
/ Vim ◦ 環境改善オタク • Perl🔰 自己紹介 九州工業大学在学中に @kis の講義を受けたことがあります
突然ですが
2012年頃、何をしていましたか
Linuxのタッチパッドで マルチタッチジェスチャが無くて困って いましたよね?
いつ頃 ドライバ /ジェスチャ 状況 〜2016 synaptics X 2本指スクロールのみ 2015〜 libinput
△ ジェスチャのAPI 2020〜 各OS・WMで実装 ◦ 徐々にジェスチャ 対応のコンポジタ出 てきた Linux にはジェスチャの選択肢がない …? (2012年ごろ) ◦ macOSはトラックパッドでの ジェスチャ操作ができる ◦ Windowsにもまだない ◦ Linuxには概念すらない 「Macみたいに“シャッと”スワイプしたい!」 一時期、家電量販店で MacBookのトラックパッドで研究していて、ひたすらスワイプを試す変な人やってました。
LinuxでもMacっぽく スワイプしたい
なにかいい手は無いのか …🤔
とりあえず、タッチパッドの ログでも見てみるか …
タッチパッドのデバッグログ Syanpticsドライバのログ $synclientコマンドで タッチパッドのログを出力すると… 指の本数と座標 が取れそう!!
ジェスチャ認識できるのでは?
デバッグログを監視する タッチパッドのデバッグログを取る • デバッグログを読むwhileループ • 座標履歴を配列に詰める • ジェスチャー検出ロジック • X11::GUITestを使ってキーイベント送信
スワイプが実装できた!
200行のPerl スクリプト 「xSwipe 」 一時期、海外のブログ記事とか ArchWikiで言及されたりして、 GitHubの★がちょっとずつ付くようになってました
最初のPerlのスクリプト 当時プログラミング勉強中で無職だったんですが、 Perlスクリプトを面接に持っていったところ、 なんとRubyの職を得ました ◦ ジェスチャ非対応のSynapticsドライバでも動く ◦ LinuxにPerlは標準搭載 ◦ スクリプトなのでインストール不要で配布簡単
何がよかったのか
めでたし、めでたし 🎉
と思ったのも束の間 ...
libinput (2015〜) • OSをアップグレードすると xSwipeが動作しなくなった • デバッグログが出ない ◦ synclient -m
が突然のdeprecated • synaptics → メンテナンスモードに • libinput が Wayland / X11 の標準ドライバに 新しいドライバの登場、 xSwipe 突然の死 🪦
libinput対応の機運
Rubyで再実装 2015~ • (仕事でRubyを使っていたので)RubyでxSwipeを再実装 • X11依存をなくす • レイテンシの観点で、IO多重化してイベント駆動に • 個人的ニッチ機能やWMの違いはプラグインで対応
Fusuma Libinput対応、Ruby製 今もメンテしているGemです。gem i fusuma で今すぐインストール。今すぐ Starをつけましょう。
Fusuma のアーキテクチャ パイプラインとプラグイン たぶん、過剰な抽象化です • IO多重化+マルチプロセス • プラグインアーキテクチャ
プラグインでジェスチャ定義を拡張
Thumbsense タッチパッド中に FとかJをクリックをキーリマップできる ドラッグ・アンド・ドロップが快適になります タッチパッドは修飾キー • タッチパッドのタッチ状態を取得 • 物理キーボードのキーをリマップ ◦
タッチ中のみFキーでクリック
HHKB Studio 用HIDRaw Driver ポインティングスティックでも Fでクリック ポインティングスティックも修飾キー • HHKB StudioでThumbsenseをやる
• RubyでHIDRawを喋る ◦ pack / unpack
まとめ • 最初の200行のPerlのコードが今のOSS開発に繋がっていた • 自分の欲しい物、手に馴染むものを作る • 道具がより手に馴染むようになって最高