Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
小さなPerlスクリプトから続くOSS
Search
iberianpig
November 15, 2025
Programming
27
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.6k
DIY Your Touchpad Experience: Building Your Own Gestures
iberianpig
1
2.4k
Other Decks in Programming
See All in Programming
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
140
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
200
気持ちぃ〜角丸 Squircle
ryu1013
0
370
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
250
sbt 2.0: takeoff
eed3si9n
0
180
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
1
270
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
310
dotNET_vulnclicker_intro.pdf
deka_morita
0
160
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.4k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
170
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
190
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
310
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
109
250k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
490
Code Reviewing Like a Champion
maltzj
529
40k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Mind Mapping
helmedeiros
1
420
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
370
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
470
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
750
sira's awesome portfolio website redesign presentation
elsirapls
0
480
Optimizing for Happiness
mojombo
378
71k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
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開発に繋がっていた • 自分の欲しい物、手に馴染むものを作る • 道具がより手に馴染むようになって最高