2009/10/28
[PSTweet]TwitterクライアントPowerShellモジュールを作ろう!(1)
というわけで、PowerShell 2.0が出ましたのでモジュールをなんか作ってみたいと思います。手ごろで最近熱いといえばやっぱりTwitterクライアントじゃないかなあと。というわけで題材はこれ。
設計的なもの
・PSプロバイダを実装することで実現
・よって、独自コマンドレットは必要最低限実装
・Get-ChildItemでタイムラインを表示
・タイムラインはTimeLineオブジェクトで表現
・発言はTweetオブジェクトとして表現
・TimeLineオブジェクトの中にTweetオブジェクトの配列が含まれる
・PSpathとしてはタイムラインの場合Twitter::Friendになり、発言の場合はTwitter::username\0000000とかになる
・Set-Locationでタイムライン移動(フレンドTL,リプライTL,DirectMessage,任意のユーザー)
・Get-Contentでタイムラインや発言を文字列として取得
・Invoke-Itemでブラウザを開く
・Remove-Itemで自分の発言削除
・New-Itemでポスト
・Set-ItemPropertyで発言をお気に入りに追加
・認証が必要な操作に関しては-credentialパラメータを使用。ただしデフォルト値はどこかに保持しておく
・ぱっと思いつく必要な独自コマンドレットはGet-FollowerとGet/New/Remove-Followingかな。返す値はTweetする人ということでTweeterクラスを作る
というわけで、非常にシンプルというか硬派なクライアントです。シェルでパイプラインを駆使してフィルターかけたりスクリプトを組んだり、ラッパーGUIを組んだり(!)すると色々楽しいと思います。
とりあえずモジュールのHello Worldまでメモ。
基本はPSスナップインを作るのと同じです。なので、詳細は
C#と諸々 コマンドレットの作成方法
http://csharper.blog57.fc2.com/blog-entry-55.html
をご覧ください。ここでスナップインクラスを作る、インストール、スナップイン登録という部分をまるっきり省けばOKです。
配置ですが、$pshome\Modulesに今回作るクライアント名であるPSTweetフォルダを作ります。そこにPSTweet.dllとPSTweet.psd1を配置します。psd1ファイルはこんな感じで良いようです。
@{
GUID="{847D070F-3247-46AB-BAE9-166038EFEA4B}"
Author="Daisuke Mutaguchi"
CompanyName="Winscript"
Copyright="© Daisuke Mutaguchi. All rights reserved."
ModuleVersion="1.0.0.0"
PowerShellVersion="2.0"
CLRVersion="2.0"
NestedModules="PSTweet"
RequiredAssemblies=Join-Path $psScriptRoot "PSTweet.dll"
}
あとはImport-Module PSTweetでシェルから読み込めます。
というわけでこれから作っていこうと思いますよ。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2009/10/28/182510.aspx2007/06/17
6/23わんくま大阪勉強会
わんくま同盟 大阪勉強会 #10
http://www.wankuma.com/seminar/20070623osaka10/
という内容で勉強会があります。
DSLってなんだろう?って思ってちょっと調べてみたんですが(WikiPedia、Microsoft)、要するに、ある対象(ドメイン)に特化した言語を作ろう、という話なのかな?と思いました。スクリプト言語もDSLに近い概念であるらしいし私の守備範囲かもしれませんので是非聞いておこうと思いました。
とりこびとさんのセッションは、例題ではHello Worldってよくやるけど、なんでHello Worldが出力されるんだ、その仕組みはどうなんだ、ということを特定言語に問わずやるっぽいですね。これも面白そう。
囚人さんのは題名とレベルからASP.NETの内部的な濃い話が聞けるんじゃないかと思います。ちょっとついていくのがつらそうですが頑張ってついていこうと思います。
そんな感じで。お近くの方はぜひどうぞ。私も今回は参戦しますよー。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/06/17/81011.aspx
Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー