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
19
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小さなPerlスクリプトから続くOSS
2025/11/15 YAPC::Fukuoka 2025
iberianpig
November 15, 2025
More Decks by iberianpig
See All by iberianpig
RubyKaigiで手に入れた HHKB Studioのための HIDRawドライバ
iberianpig
0
1.5k
DIY Your Touchpad Experience: Building Your Own Gestures
iberianpig
1
2.4k
Other Decks in Programming
See All in Programming
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
140
Contextとはなにか
chiroruxx
1
320
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Agentic UI
manfredsteyer
PRO
0
160
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
260
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
240
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
140
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
WENDY [Excerpt]
tessaabrams
11
38k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
ラッコキーワード サービス紹介資料
rakko
1
3.7M
First, design no harm
axbom
PRO
2
1.2k
Building an army of robots
kneath
306
46k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
The Curious Case for Waylosing
cassininazir
1
390
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
The Curse of the Amulet
leimatthew05
1
13k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
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開発に繋がっていた • 自分の欲しい物、手に馴染むものを作る • 道具がより手に馴染むようになって最高