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
mrbgem 三角測量 開発
ogom
0
220
Kubernetes祭り #2 OP/ED
bells17
0
110
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
170
FreeBSDでZabbixを動かす
kenkino
0
360
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
580
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
570
ジョジョの世界をXRで再現する
mofurune
0
140
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
360
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
270
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
770
Optimising Largest Contentful Paint
csswizardry
37
4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
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開発に繋がっていた • 自分の欲しい物、手に馴染むものを作る • 道具がより手に馴染むようになって最高