Atomすみません、最初に宣伝です。Atom向けTwitterクライアントをリリースしました。atom-twitter-clientよかったら使ってみてください。atom/atom#1783があるので日本語でのツイートに若干の難ありです。Atomパッケージを作るのは初めてだったので、その所感とTipsをつらつらと書いてみます。ドキュメント本家ドキュメントはそれなりにしっかりしているので最初に目を通すと良いかと思います。突っ込んだことしようとするとこれだけではこと足りなくなります。その場合、他の人のパッケージが参考になります、自分の実現したいUIや機能に近いパッケージを探してそのソースを読むのが近道です。機能豊富なので参考になります多分他にもあるはず、ただこの他人のパッケージを参考にするという方法にも限界があります。本家のAPIの変遷が早すぎて半年前のパッケージでも参考にできないことが多々あります。後、本家のパッケージ検索が若干使い辛くて、参考にしたいパッケージが見つかりにくいという難点もあります。最後の手段として、やっぱり本家のソースを読むことになります。頑張ってググるより最初からソース見に行ったほうが解決は早いと思います(残念ながらAtomは非常に検索効率が悪いので...)。あと、Electronのドキュメントとソースも読んでおいたほうが効率が上がります。HTML5とかNode.jsとかatom-twitter-clientではアカウント情報の記憶にIndexedDBを使っています。ChromiumベースなのでHTML5等の最新の機能は使いたい放題です。あと、普通にNode.jsのAPIも使えます。普段レガシーなブラウザ相手にJavaScript書いている人にとっては、互換性考慮せずに好き勝手に最新機能をCoffeeScriptで実装できるのは結構ストレス発散になるのでお勧めです。Publish前後の違い一番困ったのがこれです。レジストリにPublishする前と後でパッケージの挙動に差分があり、初めてPublishした後、Tweetの検索機能が動かなくなってしまっていました。core側のモジュールが利用される仕組みになっているようでした。自分の場合、requestモジュールを利用しているが、Publishしたパッケージを利用した時のみ若干古いrequestモジュールで動作しようとして動かなくなってました。Publishする前とした後にインストーラから落としたソース自体には変な差分は見受けられなかったので、結構原因に行き着くのに時間がかかってしまいました。基本ですが、package.jsonのdependenciesにはちゃんとバージョン番号を指定したほうが無難なようです。Specs]でテストが実行されます。自分で色々下準備する必要がないので楽ちんです。テスティングフレームワークは現時点ではJasmineの1.3が使われています。1.3のJasmineのドキュメントを参照してテストがかけます。setTimeoutやsetIntervalを多用するパッケージの場合注意が必要です。本家のspec-helperがココらへんの関数をモックして回っているので、Jasmineのドキュメントを読むだけでは理解できない挙動をします。自分の場合jasmine.useRealClock()メソッドを使ってココらへんのモックを解除して回避しました。最後になんか文句多くなっちゃいましたが、Atomのパッケージ作るのは楽しいです。「自分の作業環境は自分で良くしよう」みたいなemacs根性を端々に感じるし、若干ドキュメントが不足しているがそれゆえに他人のソース読んで理解できる部分も多いし、後、もともとかっこいいUIに合わせて自分のパッケージもかっこよくUI組めたら楽しいし、githubベースだから基本オープンでpublishしたら速攻でissue飛んでくるし...繰り返しになりますが、仕事効率化を名目に遊べるストレス発散措置としてはemacsなみに楽しいです。upLoginユーザーは見つかりませんでした。