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
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
JavaDoc 再入門
nagise
1
350
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
560
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Curious Case for Waylosing
cassininazir
1
390
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Embracing the Ebb and Flow
colly
88
5.1k
The Invisible Side of Design
smashingmag
302
52k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
WENDY [Excerpt]
tessaabrams
11
38k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Docker and Python
trallard
47
3.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Discover your Explorer Soul
emna__ayadi
2
1.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
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開発に繋がっていた • 自分の欲しい物、手に馴染むものを作る • 道具がより手に馴染むようになって最高