Upload
tetsuji-ogata
View
357
Download
5
Embed Size (px)
DESCRIPTION
2014/5/17に行われた Hachioji.pm#40 で発表したLTのスライドです。
Citation preview
Macで使える便利モジュールOGATA Tetsuji (@xtetsuji)
2014/05/17 Hachioji.pm#40
自己紹介
• 尾形 鉄次 (OGATA Tetsuji)
• Twitter: @xtetsuji
• Blog: http://post.tetsuji.jp/
ウェブエンジニアのMac率• Windows、Mac、Linuxとあるが、ウェブエンジニアの
Mac率の高さはすごい
• @__papix__ 校長も今年度からMacユーザになった
• その他、iPhone効果かMacへ移る人が増えている印象
• Mac限定の便利モジュールでも結構多く使えてもらえそうな時代になった
Perlの Cocoa:: 名前空間• Perlモジュールには Mac:: 名前空間のMac専用モジュール群があるものの、ポストCarbonである最近のMacのCocoaフレームワークから取った Cocoa:: 名前空間以下に面白いモジュールが最近多い印象
• それらを紹介していきます
• 実際に使っているユースケースも紹介
• 詳細は後日ブログに書きます
Cocoa:: 名前空間の重要人物
• typesterさん
• akiymさん
• 他にもいるかもしれない
• 自分もCocoa XSに興味あるから重要人物になりたい
とりあえず思いつくの列挙
• Cocoa::Growl (by typester)
• Cocoa::BatteryInfo (by typester)
• Cocoa::EventLoop (by typester)
• Cocoa::NetworkChange (by akiym)
電源ライフハック• Cocoa::BatteryInfo 便利だけど、先日はそれを知らずに
pmset コマンドをbacktickで叩くやり方をしてしまった
• MacBookやLinuxノートパソコンのバッテリー残量をウォッチしてImKayacでiPhoneに通知を送るPerlプログラムを作ったら地味に便利だった: http://post.tetsuji.jp/2014/04/useful-battery-watchd-by-perl/
• Cocoa::BatteryInfo モジュールだと、時間経過や低電源時に簡単にフックを書くことができる
Cocoa::Growl
• 通知センター登場後も、Growl便利だし好き
• Growl::Anyというモジュールがあって、Macの場合はMac::Growlを優先するけど、Mac::Growlは往々にして動かない事が多くて環境変数設定したりうざったかった
• 最近はCocoa::Growl決め打ちで書くのが好き
• WindowsやLinuxでGrowl使っている人極小数だろうし
Cocoa::NetworkChange
• akiymさんがtypesterさんの影響を受けて(?)Cocoa XSを習得して、色々面白いものを作ってくれている
• Cocoa::NetworkChange はネットワーク変更を検知してコールバックが書ける
• コールバックはネットワークインターフェースやSSIDを取得できるので、それで好きにやる
Cocoa::NetworkChange活用• mac-wland ってプログラムを書いて、バックグラウンドでいつも起動している
• 自宅のSSIDに接続したら、自宅のWindowsマシンにWake-on-LANパケットを投げる
• 任意のSSIDに起動したら、autosshプロセスにHUPを投げて再接続を促す
• …とか色々便利
もっとCocoa::NetworkChange
• 最近は認証付きフリーWi-Fiが多いので、そういうSSIDに接続したら勝手にMechでフォーム認証とかできるといいと考えているけど、使用頻度少ないので未着手
• 会社のSSIDの接続監視もできるので、退勤は難しいけど出勤記録は取れる?
• IFTTTってサービスのAndroidアプリにWi-Fiレシピができたので、それで自動勤怠管理みたいなことできます
Cocoa::EventLoop• Cocoa:: 系モジュールはtypester worldだし、それを使ってしまったらCocoa worldが当然なので、非同期処理にはAnyEventよりもCocoa::EventLoopを使うことが多い
• 先ほどの mac-wland でも、autosshへHUPを送る回数をCocoa::EventLoopで制御している
• Cocoa::EventLoopのインターフェースはAnyEventとだいたい同じなので省略
AnyEvent::Mac::Pasteboard
• Mac::Pasteboardモジュールを利用して、ペーストボードの変更をポーリングで監視する拙作CPANモジュール
• Mac::Pasteboardの作者とやりとりしたけど、マルチバイト文字列の文字化けの件でうまくやりとりできず
• というわけで、中は結構バッドハックになっている
• というかCocoa::Pasteboardみたいなの書きたい
まとめ
• Macに特化したプログラムを書くのにCocoa名前空間のモジュールは有効
• Cocoa XSのノウハウが出まわって欲しい
• コードの詳細とかはブログ書く予定なので見てください
• 声かけてくだされば可能な範囲でシェアします
おしまい