16
Mac で使える便利モジュール OGATA Tetsuji (@xtetsuji) 2014/0 5/17 Hachioji.pm#40

Macで使える便利モジュール #hachiojipm

Embed Size (px)

DESCRIPTION

2014/5/17に行われた Hachioji.pm#40 で発表したLTのスライドです。

Citation preview

Page 1: Macで使える便利モジュール #hachiojipm

Macで使える便利モジュールOGATA Tetsuji (@xtetsuji)

2014/05/17 Hachioji.pm#40

Page 2: Macで使える便利モジュール #hachiojipm

自己紹介

• 尾形 鉄次 (OGATA Tetsuji)

• Twitter: @xtetsuji

• Blog: http://post.tetsuji.jp/

Page 3: Macで使える便利モジュール #hachiojipm

ウェブエンジニアのMac率• Windows、Mac、Linuxとあるが、ウェブエンジニアの

Mac率の高さはすごい

• @__papix__ 校長も今年度からMacユーザになった

• その他、iPhone効果かMacへ移る人が増えている印象

• Mac限定の便利モジュールでも結構多く使えてもらえそうな時代になった

Page 4: Macで使える便利モジュール #hachiojipm

Perlの Cocoa:: 名前空間• Perlモジュールには Mac:: 名前空間のMac専用モジュール群があるものの、ポストCarbonである最近のMacのCocoaフレームワークから取った Cocoa:: 名前空間以下に面白いモジュールが最近多い印象

• それらを紹介していきます

• 実際に使っているユースケースも紹介

• 詳細は後日ブログに書きます

Page 5: Macで使える便利モジュール #hachiojipm

Cocoa:: 名前空間の重要人物

• typesterさん

• akiymさん

• 他にもいるかもしれない

• 自分もCocoa XSに興味あるから重要人物になりたい

Page 6: Macで使える便利モジュール #hachiojipm
Page 7: Macで使える便利モジュール #hachiojipm

とりあえず思いつくの列挙

• Cocoa::Growl (by typester)

• Cocoa::BatteryInfo (by typester)

• Cocoa::EventLoop (by typester)

• Cocoa::NetworkChange (by akiym)

Page 8: Macで使える便利モジュール #hachiojipm

電源ライフハック• Cocoa::BatteryInfo 便利だけど、先日はそれを知らずに

pmset コマンドをbacktickで叩くやり方をしてしまった

• MacBookやLinuxノートパソコンのバッテリー残量をウォッチしてImKayacでiPhoneに通知を送るPerlプログラムを作ったら地味に便利だった: http://post.tetsuji.jp/2014/04/useful-battery-watchd-by-perl/

• Cocoa::BatteryInfo モジュールだと、時間経過や低電源時に簡単にフックを書くことができる

Page 9: Macで使える便利モジュール #hachiojipm

Cocoa::Growl

• 通知センター登場後も、Growl便利だし好き

• Growl::Anyというモジュールがあって、Macの場合はMac::Growlを優先するけど、Mac::Growlは往々にして動かない事が多くて環境変数設定したりうざったかった

• 最近はCocoa::Growl決め打ちで書くのが好き

• WindowsやLinuxでGrowl使っている人極小数だろうし

Page 10: Macで使える便利モジュール #hachiojipm

Cocoa::NetworkChange

• akiymさんがtypesterさんの影響を受けて(?)Cocoa XSを習得して、色々面白いものを作ってくれている

• Cocoa::NetworkChange はネットワーク変更を検知してコールバックが書ける

• コールバックはネットワークインターフェースやSSIDを取得できるので、それで好きにやる

Page 11: Macで使える便利モジュール #hachiojipm

Cocoa::NetworkChange活用• mac-wland ってプログラムを書いて、バックグラウンドでいつも起動している

• 自宅のSSIDに接続したら、自宅のWindowsマシンにWake-on-LANパケットを投げる

• 任意のSSIDに起動したら、autosshプロセスにHUPを投げて再接続を促す

• …とか色々便利

Page 12: Macで使える便利モジュール #hachiojipm

もっとCocoa::NetworkChange

• 最近は認証付きフリーWi-Fiが多いので、そういうSSIDに接続したら勝手にMechでフォーム認証とかできるといいと考えているけど、使用頻度少ないので未着手

• 会社のSSIDの接続監視もできるので、退勤は難しいけど出勤記録は取れる?

• IFTTTってサービスのAndroidアプリにWi-Fiレシピができたので、それで自動勤怠管理みたいなことできます

Page 13: Macで使える便利モジュール #hachiojipm

Cocoa::EventLoop• Cocoa:: 系モジュールはtypester worldだし、それを使ってしまったらCocoa worldが当然なので、非同期処理にはAnyEventよりもCocoa::EventLoopを使うことが多い

• 先ほどの mac-wland でも、autosshへHUPを送る回数をCocoa::EventLoopで制御している

• Cocoa::EventLoopのインターフェースはAnyEventとだいたい同じなので省略

Page 14: Macで使える便利モジュール #hachiojipm

AnyEvent::Mac::Pasteboard

• Mac::Pasteboardモジュールを利用して、ペーストボードの変更をポーリングで監視する拙作CPANモジュール

• Mac::Pasteboardの作者とやりとりしたけど、マルチバイト文字列の文字化けの件でうまくやりとりできず

• というわけで、中は結構バッドハックになっている

• というかCocoa::Pasteboardみたいなの書きたい

Page 15: Macで使える便利モジュール #hachiojipm

まとめ

• Macに特化したプログラムを書くのにCocoa名前空間のモジュールは有効

• Cocoa XSのノウハウが出まわって欲しい

• コードの詳細とかはブログ書く予定なので見てください

• 声かけてくだされば可能な範囲でシェアします

Page 16: Macで使える便利モジュール #hachiojipm

おしまい