Archive for the ‘software’ Category
WebStormのコード補完に新しく候補を追加する方法
WebStorm/PhpStormのEAP build 98.458でJavaScript Librariesのスコープを決定できる機能が追加されました。
なので、この方法が使えるのはWebStorm & PhpStorm 2.0以上(EAPビルド)の場合のみです。
Titaniumでデスクトップアプリケーションを作る
Titaniumという言葉は最近AndroidやiPhoneのモバイル関係で話題になっていたのでどこか聞いたことはあると思います。
Titaniumには「Titanium Desktop」というWindows/Linux/Mac OSのアプリケーションをHTML+CSS+JavaScriptとRuby,Python,PHPをバックに使って作成できるものがあります。
Titanium Desktopの存在をTwitterクライアント『昼おっぱい』で知ったのでどんな感じか試して見ました。
Titanium Desktopでデスクトップアプリケーション作成
- Download Titanium | AppceleratorからをTitanium Developerダウンロード。
- ドキュメント類はAppcelerator Developer Center – Documentationに。
- APIリファレンスはPrintable API Reference GuidesにPDFで置いてある。
- サンプルアプリはTitanium Desktopの情報源 – 仙台 Ruby Vim JavaScript社長を参考に見てみる。
APIの使い方はサンプル見た方が分かりやすい。
手順はAppcelerator Titanium DesktopでRuby,Python,PHPを使ったお手軽デスクトップアプリ開発その1 – 仙台 Ruby Vim JavaScript社長を参考にテストアプリを作成する。(丁寧でとても参考になるのでよく読む)
基本はHTMLにCSSで装飾して、JavaScriptなどで用意されているAPIを叩くことでネイティブアプリっぽいことも行える感じになっているみたいです。
JavaScript以外も下のようなスクリプトタグで囲んで使う感じになっていて簡単に使える感じでした。
<script type="text/ruby"></script>
文字コードに関して、日本語はhtmlのMetaタグでcharsetを設定しないと文字化けする。
なのでSandBoxタブでは日本語使えないかも。
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
基本的にはUTF-8でやれば日本語は問題にならなそうです。
今回は単純にjsからTwitterのtest API叩くだけのどうでもいいものを作ってみました。
Titanium Desktop SDKにあるtestappを見ると使い方が分かりやすかった。(ただ、たった数行なのにライブラリを使いまくってるのが微妙な…)
ソースコード(単なるHTMLファイルです)
これを作ったプロジェクトのResourcesフォルダに置いておくだけでアプリが完成。
できたものTitanium Application : TwitterStatus
ここまで大体1時間でできたのでかなり手軽にデスクトップアプリケーションを作れる段階に触れる感じがしました。
Titanium Developerから直接公開できて、アップデート通知機能も入ってるので簡単に配布できるのは結構素敵だと思う。(ただwindowsはmsiインストーラーなので入れるのはちょっと躊躇するかも)
まだ全然触って無いですが、デバッグは通常のWebみたいにsafari/Chromeで使われてるWeb Inspectorが使えるので、普通にJS書いてる感覚が通じる感じがします(毎回Lauch Appして起動するのが億劫だけど)
NILScriptもそうですがローカルでもjs使って書けるものが増えてきたりして、Webとデスクトップの境はどんどん小さくなってきているんだなーと思った。
最強のJavaScript IDE 「WebStorm」を使ってみた
JavaScript対応のIDEをまとめてみたの続きのようなもので、その中で紹介していたWebStormが素晴らしいので別途紹介。
WebStormはHTML(5)+CSS+JavaScriptに対応してるIDEで、Windows, Mac OS、Linux上で動作します。
有料のソフトウェアですが、オープンソースライセンスがあったり体験版は45日間使えるのでとりあえず試してみましょう。
特徴
とにかく膨大な機能が載ってるので全てを紹介するのは無理があるため、凄いと思ったところを掻い摘んで紹介。
主にJavaScriptを書くエディタとして使っていますが、CSSやHTMLも普通のIDEより書きやすいです。
基本的にWebStormで日本語に関する問題は少なめです。一部IMEの変換候補が出てくる場所がずれたり、プラグインで日本語がダメだったりするものがありますが、殆ど問題ではない程度です。文字コードはShift_JIS(windowsだとwindows-31j)も対応しているので問題にはならないと思います。
優秀なコード補完機能
WebStormはソースコードを自動的にコ-ド解析(静的解析?)してるようで、JavaScriptの構造を認識してコード補完を行えます。
例えば@teramakoさんがKomodo Edit が面白いで言っていたような
var container = {
init: function() {},
};
container.obj = (function(){
var privateProp = null;
var namager = {
publicMethod: function(){ },
};
return namager;
})();というコードの場合container.obj.pu と書くとちゃんとpublicMethodも補完候補に表示されます。
さらにpublicMethodはメソッドなのでcontainer.obj.publicMethod()という形で補完されて、今は仮引数がないのでカーソルの位置は)の→になります。仮引数があると()の中にカーソルが置かれます。

ネイティブの補完候補もHTML5,ECMA,DOMCoreや結構細かいものも対応していて補完でアレが出てこないって事はかなり少ないです(ブラウザ拡張開発用とかは除いて)
補完候補は開いているディレクトリ以下のファイルを全部解析して表示してくれるので、ファイルをまたいだメソッドなども候補に表示されます。
今まで触ったJavaScriptエディタ、IDEで補完は最も素晴らしいと感じました。
JavaScript以外のHTMLタグやCSSも補完を行え、1つのファイルにHTML、JavaScriptなどが混在していた場合も正しく認識して補完が行える。HTML, CSS, JavaScript editing in an intelligent environment :: WebStorm Featuresで特徴がいろいろ紹介されています。
コ-ド解析による良さ
上でコ-ド解析してるのでインテリセンスみたいな事が凄くできるよと書きましたが、
他にもCtrl+クリックで関数宣言にジャンプ(Tipsで設定の変更方法が記載してあります)する機能や、リファクタリングで特定の変数名や関数名をリネームする機能(その名前を使ってるもの全部を変えてくれる)、Structureパネルでコードのアウトラインを表示できたりします。

後、文法が間違ってる場合などは警告なども表示できその設定も警告レベルから決められてかなり細かな指定が行えます。(JSLintみたいなもの?)
自動整形機能
個人的にIDEと言ったらコードの自動整形機能です。CodeメニューのReformat codeから実行できます。(ショートカットからもできる)
自動整形のルールはOptionのCode Styleからかなり細かく設定できるので、自分ルールに合わせて整形させる事ができます。
ショートカットキーはkeymap>Reformat codeで変更できます
E4X対応
Firefoxユーザー向けですが、構文解析がE4Xの記法に対応しています。
普通なら上記の自動整形でE4Xが混じってると崩れてしまって残念になりますが、E4Xもちゃんと扱えるので崩れません。
Firefox向けのコード、Greasemonkeyなどを書く人に使ってもらいたいところ。
(分割代入の記法にはまだ対応してなかったのはちょっぴり残念)
標準でバージョン管理機能がある
Vision Contorolメニューを有効にすると標準でローカルなバージョン管理が行えます。
デフォルトだと差分やrevertがができるLocal Historyが機能しますが、外部のバージョン管理ソフトと連携してSVN、Gitが使用できます。(Mercurialは標準ではなくhg4idea-luciadプラグインによって使用できます)
コミットやpushなどはIDE上からその場でできて、マージや差分表示などもできるので結構便利です。
JavaScriptデバッガー
Local JavaScript debuggingで紹介されてるようにFirefoxアドオンと連携したIDE上で動くデバッガが付いています。
他にもFirebugと連携して機能するプラグインなどもあったりしてFirefoxとの親和性は少し高め。
使い勝手
他の機能紹介はWebStorm Featuresやヘルプなどを見てもらうとして、使った感覚としてはそこまで重くは無いです。
起動はIDEらしくちょっとかかりますが(コード解析もあったりするので)、太ったEmacsの起動を我慢できるなら問題ない。
Aptanaみたいに長いコードだと極端に重くなるとかはないので、大規模なものでも扱えると思います(構造もみやすいし)
ショートカットはEclipse、NetBeans、Emacs、Visual Studio、Mac、GNOME、KDEなどの設定が最初から用意されていて、殆どの操作をカスタマイズできるので、自分好みにする事もできると思います。
Vimのキーバインドは標準ではなくプラグインのIdeaVIMによって使えます。(JetBrainsのIDEなら大体対応してる)
メモリは数十MB~多くても200MBいかないぐらいなので(ステータスバーにメモリ量が表示される)、少し古いPCでも動かせるぐらいです。自分のノートであるCore Duo T2300(1.66GHz)、512MBのPCでも使えるぐらいなので、最近のPCなら問題ないと思います。
UIが完全に英語ですが、設定は検索機能が優秀なので適当な単語からたどり着けることが多いし、表示している項目には全部ヘルプや説明が付いてるぐらいなので、オプションが豊富すぎるぐらいでそこまでつっかかりはないと思います。
(何ができないのかというのが少し分かりにくい感じではある)
Tips
メモみたいな
- Productivity Tips 動画
他のソフトだけど大体一緒なので参考になる。主にコード補完系 - ショートカットキーはkeymapで変更できて、キーだけではなくてマウスクリックなどのショートカットもあります。
- Ctrl+クリックで関数宣言にジャンプするのは keymap > Go to > declaration で設定変更できる。(デフォルトだとCtrl+B)
- Find Action (Ctrl+Shift+A)でコマンド検索できる
- ショートカット一覧(デフォルト)はPDFで配布もしてる WebStorm Resources
- keymapでcomplete current statement(ctrl+shift+enter)が便利。最後の;が無かったら;を入れてくれて、あったら次の行へ。
今の行のステートメントを自動的に補完してくれる感じ - Editor > Code Folding でコメントがデフォルトでたたまれるのを防止できる
(Greasemonkeyとかデフォルトだとたたまれちゃうので) - File Templeteで${NAME}でファイル名が取れる(大文字区別する)
適当な変数${test}を書くとファイル作成ダイアログでそれを入力して指定できる。
例えばGreasemonkeyっぽいテンプレートを書くなら gist: 648943 – WebStormのFile Templete- GitHubみたいな感じ。 - Editor > Editor Tabsでタブ位置を上下左右に変えられるので、縦置きタブバーも可能
- JavaScript IntentionPowerPack。if-elseを||にするとか!から始まるifをflipして逆にするとか、リファクタリング関係のものが詰まってる。
- 変数に下線とかの装飾はEditor > Color & Fonts > JavaScriptあたりから変更できます。
- 文字コードの変更は画面下にある所をクリックでも変更できる
- JetBrainsのIDEは大体形が同じ(扱える言語が違う)なので、他の種類のIDEのノウハウが使えることもある。
プラグイン
- eSnippet Pro plugin
スニペットプラグイン。Ctrl+Alt+Spaceで補完のようにスニペットを追加できる。
スニペットをオンラインに登録して、検索できる - CSS-X-Fire
FirebugのCSSパネルのようにCSSを編集できるプラグイン - hg4idea-luciad
Mercurial統合のプラグイン
他のバージョン管理はデフォルトで大体ある。 - デフォルトで入ってるスペルチェッカーは日本語に反応してうるさいので無効にした。
から探せる(他にもあると思う)
手動インストール方法はIntelliJ IDEA Plugin – TeamCity 3.x Documentation – Confluenceに書いてあるように、指定のpluginsフォルダにjarとかプラグインファイルをおいて、設定のpluginsから有効にすればいいみたい。
けど、他のソフトを対象に書かれたプラグインは動作しない気がする。
よく分かってないこと
やり方があったら教えて欲しいです。
- いつでも参照できる補完候補の追加方法→実装されたWebStormのコード補完に新しく候補を追加する方法
- WebStormを開いてる状態で、もう一回WebStormを開くと複数のウィンドウになるのをタブにまとめる方法→WebStorm-EAP-98.458でタブで開くようになった
- 分割代入が整形機能で崩れる
- 配列の最後に,がある時に警告がでるのを消す方法
- 他のJetBrainsIDEのプラグインの入れ方がよく分からない(対応してないだけ?)
感想
とにかく機能が多くて、まだまだ使いきれない感じでさらにもうすぐ2.0がリリースされるので成長も早いIDEだと思います。
体験版が45日間と長いと思ったけど、1ヶ月使ってもまだ底が見えないので妥当な日数だと分かった。
珍しくタイトルが誇大っぽいけど、(現時点では)最強のJavaScript IDEは「WebStorm」だと言い切れるぐらい圧倒的できの良さ。
周りのJavaScript対応IDEと差がかなり大きいと思うので、後1-2年は追いつけるレベルのものが出てこない予感。
日本でのユーザ数がとっても少ない感じがするので、使ってどんどんブログなどに情報を書いてくれるともっと発展できるソフトウェアだと思うよ。
- The best HTML, CSS and JavaScript Editor for Web development :: JetBrains WebStorm
- http://www.jetbrains.com/webstorm/
- HTML, CSS, JavaScript editing in an intelligent environment :: WebStorm Features
- http://www.jetbrains.com/webstorm/features/
使ってないGreasemonkeyスクリプトを削除・整理するNILScript
Greasemonkeyはとても便利ですが、使用してないけどアンインストールするのが面倒で使わないスクリプトが貯まっていったりします。使わないスクリプトが貯まると猿アイコンを右クリックしたときに画面いっぱいになったり、管理画面が見づらくなったりしてとても邪魔になります。
そこで、今無効となっているスクリプトを適当なフォルダに移動して、Greasemonkeyスクリプトを整理するNILScriptを書いてみました。
(タイトルが削除とかなってますが、実際は移動させるだけ)
使い方
最初にgm_scriptsをバックアップして下さい(おかしな動作をして失敗しても大丈夫なように)
Firefoxが起動してないときに実行して下さい。
- ngスクリプト(remove_noused_Greasemonkey.ng)をダウンロード
- ngスクリプトをエディタで開いて、 var saveDirPath = “C:\\path\\to\\dir\\”; 移動先のディレクトリパスを書き換える
- ngスクリプトをFirefoxのプロファイルフォルダにあるgm_scriptsフォルダ内に置きます。
- Firefoxが起動してるならばFirefoxを終了しましょう
- 必ずgm_scriptsをバックアップしてからngスクリプトを実行しましょう
ngスクリプトの実行方法はNILScriptの使い方と書き方やreadme.txtを見ると良いでしょう。
一応ログっぽいのも表示してるのでダブルクリック実行が手軽でしょう。
完了すると”無効になっているスクリプト m/n を移動しました”というメッセージが出て終わりです。

猿アイコンのコンテキストメニューがスッキリして気持ち軽くなりました(実際に動作が軽くなるかは知りません)
各Greasemonkeyがpref.jsに保存していた情報は消えてないので、完璧に綺麗になったわけではありません。
戻すときはバックアップしていたものを上書きすればもどせると思います。
- utilityTools/Greasemonkey at master from azu/NILScript – GitHub
- https://github.com/azu/NILScript/tree/master/utilityTools/Greasemonkey
Windows Updateの自動再起動を止めさせる方法
Windows Updateでいきなり再起動されてデータが消えたって話は未だによく聞くので自動的に再起動を防止する方法のメモ
Business以降のグレードならだったらグループポリシーを使えば設定できる
Homeとかpremiumはないのでレジストリを直接変更する必要がある。
レジストリを直接変更するのは面倒だと思うので、Prevent Windows Update from Forcibly Rebooting Your Computer – How-To Geekに置いてあるregまたはオンオフがGUIでできるソフトウェアを使うと楽です。
自動更新のダイアログが出ているときに、そのダイアログを黙らせるだけなら(防止はできない)
誠 Biz.ID:3分LifeHacking:「今すぐ再起動しますか?」のダイアログを“マホトーン”するで紹介されている、
XP にマホトーンをとなえるを使うといい。
もっと汎用的にWindows Update以外のソフトウェアによる再起動を防止したいのならShutdownGuardを利用するとその都度確認を取ってからシャットダウン・再起動・ログオフを行える。
追記:同様の事が「ちょっと待った」でも行える
ソフトウェアのリンクまとめ
- Prevent Windows Update from Forcibly Rebooting Your Computer
- XP にマホトーンをとなえる
- ShutdownGuard
- 窓の杜 – 【今日のお気に入り】意図しないシャットダウンや再起動を抑止「ちょっと待った」
JavaScript対応のIDEをまとめてみた
JavaScriptに対応してるIDEのメモまとめ。
- Aptana
有名どころでEclipseのプラグインとしても使えます。
IDEらしくちょっと重たいけど、整形やデバッグやスニペットなど大抵の機能が入ってる。
IDE内でブラウザプレビューができて便利。
最近のバージョンだとFirefoxのプレビュー機能がデフォルトで入ってないので別途プラグインを入れる必要がある。
Aptana Studio 2.0.3-Firefoxプレビュータブ – ゆちの備忘録 - WebStorm
JavaScript EditorにJavaScript関係の対応について書いてある。
HTMLとかまぜこぜでも補完ができてる。
追記:ちょっと触ってみたら実は凄かった
追記2:使い勝手などをまとめて見ました。
最強のJavaScript IDE 「WebStorm」を使ってみた - Komodo IDE
デバッグ系機能がないkomodo Editもある。
komodo Editはオープンソース版のOpen Komodoもあるらしい。
XULと親和性が高そうで Komodo Edit が面白い – hogehoge @teramako - Spket IDE
以前何か書きましたJavaScript向けIDE「Spket IDE」の導入 | Web scratch
IDEの中では軽くて、Firefoxの拡張向けの機能もある。 - Visual Studio 2010
またまたーって感じがするけど意外と凄い子。
neue cc – JavaScriptエディタとしてのVisual Studioの使い方入門を読みましょう。
Visual Studio 2010はデフォルトでjQueryをサポートしています。 - NetBeans
JavaのIDEとして有名。PHPのセット内にJavaScript対応が含まれている。
Editing JavaScript – NetBeans IDE 6.x TutorialやJavaScript – NetBeans Wikiを参照。 - JSDT – Eclipsepedia
結構昔からあるEclipseのプラグイン。 - KompoZer – Easy web authoring
どっちかというとWebページ作成のHTMLエディタ。
WYSIWYGなHTMLエディタ。 - Adobe Dreamweaver
AdobeのWebページ作成ツールなのであんまりJavaScript向けとは言えないけど、Webページエディタとしてはかなり優秀だと思います。
CS5ではJavaScriptのコード補完やその場でプレビューして実行もできます。(ちょっと補完は中途半端)
ちなみにDreamweaver CS5で使われてるレンダリングエンジンはWebkitです。
CSSのインスペクタなど表示確認としての機能はかなり優れているので、Webページの一部としてJavaScript書くならありな選択肢だと思います。
参考 【レビュー】「Adobe Dreamweaver CS5」新機能徹底レビュー(中編) | クリエイティブ | マイコミジャーナル
またDreamweaverはAdobe製品なのでJavaScriptを使って拡張することができます。(ちょっと語弊あるけど)
APIのリファレンスはAdobe Dreamweaver * Adobe Dreamweaver CS4 API リファレンスに書いてあります。またDreamweaver DOMというものが存在し深いとこまでカスタマイズできそうな感じがします。
Dreamweaverの拡張機能まとめ | Archを読むとどんな拡張があるかが分かると思います。 - Eclipse HTML Editor Plugin
名前の通りEclipse系のプラグイン。
作者が日本人で、最近のバージョンではJavaScript機能の強化がいろいろ入ってきています。
AmaterasIDE_2_0_7 – Amateras Wikiや作者のブログを読みましょう。
手軽に試すなら、AmaterasIDEInstallerをインストールして、Eclipse HTML Editorを最新のものに置き換えればいいと思います。 - CodeLobster
エビ。PHPメインでプラグインでjQueryとかの対応があるのでオマケ程度
全部試したわけではないですが、個人的にはAptanaやDreamweaverなど有名な所のできは悪くないです。
Aptanaは無料で使えて機能も充実してるので、重くなければもっと使われてる気がします。(JavaScriptだけなら通常のエディタでも十分通用するので好みによりますが)
IDE全般としては、クロスプラットフォームに対応しているのが殆どだったりします。
エディタとIDE、どちらが優れているとかではなくどっちも優れている部分を持っているので使い分けるのが良いと思います。
いろいろ巡った感想としてjQueryをサポートしてますって書いてるものが多いなーと思った。
IxEditとか見てると、JavaScript言語とは別にjQuery言語があるって思われる日がやってきそう。
元ネタ
- Good JavaScript IDE with jQuery support – Stack Overflow
- http://stackoverflow.com/questions/209126/good-javascript-ide-with-jquery-support
GoogleのJavaScriptコーディングスタイルチェッカー「Closure Linter」
GoogleではJavaScriptは特定のコーディングスタイルで統一されるようにClosure Linterという専用のスクリプトを使用しているそうです。
Google JavaScript Style Guide(Google JavaScript Style Guide 和訳)という規則に従ってjsのコードは書かれていて、その規則に沿っているかを確認するgjslintとその規則に合うように修正するfixjsstyleからなるスクリプトです。
インストール方法
How to Use Closure Linter – Closure Linter – Google Code
pythonで書かれているのでeasy_installを使ってインストールします。
まずはPythonをインストールしてなかったらインストールして、次にeasy_installコマンドを使うためにsetuptoolsを自分のPythonにあったものをインストールします。
WindowsならC:\Python26\Scriptsに環境パスを通せば、コマンドプロンプトからeasy_installが使えるようになるので、
> easy_install http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
と打ってたらインストールできます。(パス通してないならC:\Python26\Scriptseasy_install でも大丈夫)
*注意 (修正済み)
現在配布されるやつはfixjsstyleがTypeError: ‘NoneType’ object is unsubscriptableのようになって動かないので、
easy_install -Z http://closure-linter.googlecode.com/files/closure_linter-latest.tar.gz
という感じでファイルを展開するオプションをつけてインストールしてから、/python2.6/site-packages/closure_linter-2.2.1-py2.6.egg/
closure_linter/fixjsstyle.py の36行目にargfとなってるtypoがあるのでそれをargvにすれば動きます。
使い方
使い方は単純でHow to Use Closure Linter – Closure Linter – Google Codeを見ると分かりますが、
gjslint path/to/my/file.js fixjsstyle path/to/file1.js path/to/file2.js
のようにファイルやディレクトリを指定して実行するだけです。
–strictオプションやディレクトリに対してまとめてやる再帰オプションもあります。またGoogleのコーディングスタイルではJsDocを使う事になってるので、それを無視するオプションもあります。
fixjsstyleはE4Xとか特殊なものは認識してないっぽいので無理に書けると構文エラーを出すようになったりしますが、
Googleのコーディングスタイルはそこまで特殊ではないので、ちょっとした確認に使えたりして便利です。
JavaScriptの整形にはOnline javascript beautifier(これ自体がJavaScriptで書かれているのでEmeditorやNILScriptで動かせるgist: 453042 – クリップボードのJavaScriptコードを整形してクリップボードに返すNILScript – GitHub)とかと併用すると面白いかも。
- Introducing Closure Linter – Closure Tools Blog
- http://closuretools.blogspot.com/2010/08/introducing-closure-linter.html
NILScriptの使い方と書き方
NILScriptとはSpiderMonkeyを使ったJavaScriptベースのスクリプト実行環境です。(Windows専用+Wine環境でもある程度)
直感的に言うと、WSH + AutoHotKeyみたいな感じというのが分かりやすいかな。
できることなど細かい事はNILScriptのページやDocを読んでもらうとして、SpiderMonkey(JavaScript 1.8.1ベース)を使った処理系なのでFirefoxと同じJavaScriptの文法で、エクスプローラでのバッチ処理やキーバインドの変更などWSHやAutoHotKeyで行っていたような事がJavaScriptで書けます。
使い方
NILScriptのページからnil.zipをダウンロードして、適当な場所に解凍します。
解凍して出てくるng.exe(コンソールあり)とngw.exe(コンソールなし)のどちらかに、NILScriptのスクリプトファイルである*.ngファイルを渡すと実行されます。(WSHだとng = Cscript ,ngw = Wscript みたいな感じ)
毎回ng.exeなどにD&Dや引数などでngファイルを渡すのは面倒なので、ngファイルをクリックで実行できるように関連づけを行うinstall.batというのが入っています。実行するとng.exeと*.ngファイルが関連づけされ、クリックで実行できるようになります。
(多分レジストリを使うのはここだけ)
これで、実行する準備はできたので試しに何かスクリプトを実行してみましょう。
追記:現在はHome – NILScript – GitHubにほとんどのスクリプト置いてあります
自分が作った適当なスクリプトで試してみる。
上のngスクリプトはちっちゃいウィンドウが出てきて押したキー(組み合わせも大丈夫)を表示するだけのスクリプトです。
こっちのngスクリプトは、Twitterで自分がフォローしてる人からユーザー名を検索してコピーするスクリプトです。
初回の起動時はOAuth認証します。(NILScriptで立てた簡易サーバをリダイレクト先にしている)
2回目の起動で自分のフォローしてるユーザーのリストを取得してから、ユーザー名を検索するウィンドウを表示します。
ユーザー名を途中まで入力して↓キーなどを押せば、入力したユーザー名の所まで飛べます。Ctrl+Cでユーザー名をコピーできます。
このようにngスクリプトを書けば、ローカルで動くものがJavaScriptで書けるので簡単なものを書いたりするのに便利です。
特にエクスプローラなどのファイル操作周りはWSHより簡単に書けるので、簡易なバッチ処理を書きやすい。
次はngスクリプトの書き方を見ていきます。
書き方
ドキュメントはダウンロードしたnilフォルダにdocというフォルダがあり、その中にユニット(機能)毎のドキュメントが書いてあります。
いろいろあるので何から見れば良いか迷いますが、まずは_readme.txtを開いてみると、NILScriptには大きく分けて、
Base.ng内で定義されているNIL標準クラス・関数 と require()関数で読み込んで使うユニットスクリプトがあることが分かります。
簡単言うと、前者はngスクリプトにそのまま書いて使える関数などで、後者はrequire(‘Clipboard’)のようにユニットスクリプトを読み込んでから使えるようになる関数などが存在するという事です。
まずはNIL標準クラス・関数にどんなものがあるかをbase_*.txtなどを軽く見て把握しましょう。
眺めているとprintlnなどのよくあるような感じのものからsleepやスレッドやポインタなどのJavaScriptでは扱えないものもあることが分かります。(base_main.txtはよく使う関数があるので必須)
正直、まだドキュメントは箇条書き程度で文例などが不足しているので、実際に動かしながら確認する必要がある。
(NILScriptブログで使い方などの解説も始まったので合わせて読む)
必要な機能は必要になったらgrepなどで検索して探すので効率的。
ドキュメントばかり見てもよく分からないので、サンプルファイルを見ながらどういう風に書いているのかを見てみましょう。
サンプルはnilフォルダのsampleというフォルダに入っています。
NIL標準クラス・関数はそのまま使えるので、ドキュメントや動作を見れば何となく分かってくると思います。
ユニットスクリプトを使うものはrequireしてから使う必要があるので、requireの仕方を見てみましょう。
例えばsampleのclipboard.ngを見ると、clipboardを扱うためのユニットスクリプトを読み込んでいるのが分かります。(詳細はClipboard.txtに)
/*
タスクトレイにアイコンを登録して常駐し、
クリップボードの内容が変更された時に、形式に応じた情報を表示します。
*/
Main.createNotifyIcon();// タスクバーにアイコン表示
var Clipboard=require('Clipboard').Clipboard;// ユニットスクリプトを読み込む
Clipboard.observe('change',function(obj){// クリップボードが変化したら動作するリスナー
if(this.hasFormat('files')){// クリップボードの中身がファイル形式
var a=this.files,r=[];
for(var i=0,l=a.length;i<l;i++){
r.push(a[i].name);
}
Main.notifyIcon.showInfo(r.join("\n"),this.isMove?"move":"copy");// タスクトレイのアイコンにバルーンメッセージを表示する
}else if(this.hasFormat('html')){// html形式
var h=this.html;
Main.notifyIcon.showInfo(h.fragment,h.url);
}else if(this.hasFormat('text')){// テキスト形式
Main.notifyIcon.showInfo(this.text,'text');
}
});上ではvar Clipboard=require(‘Clipboard’).Clipboard;というようにクリップボードのユニットスクリプトを読み込んで、
読み込んだクリップボードスクリプトのClipboardというクラスをClipboardという変数に渡しています。
_readme.txtの●ユニットスクリプト機能にも書いてありますが、ユニットスクリプトrequire(“SomeUnit”).SomeClass という感じで、
多くのものはSomeUnitとSomeClassは同じ名前を持っているので上のような読み込み方法がよく出てきます。
他にもユニットスクリプトの使い方はあるので詳しくはNILScript: ユニット(拡張ライブラリスクリプト)の読み込み方法を見ると良いでしょう。(withでやるやり方はWindowでよく使います)
まずはHelloWorldを書いて実行するところから始めて、クリップボードが使いたくなったら関係するサンプルとClipboard.txtを見て作ってみる(それでもよく分からないときはlibフォルダにユニットスクリプトのソースがあるので中身を見てしまうと言うのもあります)
println("Hellow World");サンプルを見ていくと大体雰囲気は使えめると思いますが、まだまだ文例が足りないのでハマる事があります。
くだらないものを書いてもどんどん公開して、いろんな書き方が見られるようになるともっと使いやすいものになると思います!
作例
追記:現在はHome – NILScript – GitHubにほとんどのスクリプト置いてあります
というわけで自分が今までに自分が書いたNILScript。
- gist: 401178 – NILScript用のスクリプト- GitHub
コピーする深さを決められるtreeコマンドみたいなもの。
一番最初に書いたものなので何かおかしいところがあったり。(フォルダ判定はsizeより、dir.attributes.directoryがフォルダならtrueを返してくれるのでそっちを使いましょう) - gist: 425452 – 30分ごとにLDRの未読数を表示するNilScript- GitHub
アイコンとタイマーとHTTP.getText - gist: 526275 – 押したキーを表示するNILScript- GitHub
上で紹介していたもの。
ウィンドウの表示方法とKeyboard。 - gist: 453042 – クリップボードのJavaScriptコードを整形してクリップボードに返すNILScript – GitHub
JavaScriptで実装されたJS Beautifierをそのまま使えるって話 - gist: 453264 – プロセスを起動して落ちるのを待つだけ- GitHub
サンプルにも似たようなものがあるのでそっちの方が参考になる
exeの起動方法 - gist: 526351 – プロセスの起動 – GitHub
上と殆ど同じ。プロセスのフルパスはエスケープする必要がある。 - gist: 454863 – NILScriptでXMLHttpRequest的なものを書くテスト- GitHub
GM_xmlhttpRequestてきな感覚でXHRを書くのをテスト
同じインスタンスのリクエストは上から順に実行される? - gist: 456001 – ファイルの作成して書き込み #NILScript- GitHub
そのまま。 - gist: 467939 – #NILScript にデフォルト値を入れたものを新規作成- GitHub
上のを土台にした作ったもの。
Greasemonkeyの新規作成ダイアログみたいなもので、// ==NILScript==のようなメタ情報を書いたngファイルを生成する。
AutoHotKeyでもそうだったけど、スクリプト単体で配布されることが多いので、後でこれどこで拾ったけ?って事があると思うので、メタ情報はできるだけ入れておいた方がよいと思う。 - gist: 463430 – D&Dしたディレクトリ以下をフラットにする #NILScript- GitHub
フォルダ(1)内のフォルダ(2)の中身をフォルダ(1)に移動させて、フォルダ(2)を削除フォルダ ├fileA ├fileB └フォルダ[DIR] ├fileC └fileD が フォルダ ├fileA ├fileB ├fileC └fileDのようにするスクリプト。複数のフォルダを同時にD&Dしてもできるようにしている。
treeコマンドの時よりフォルダの扱いがちゃんとしてるはず。 - gist: 485691 – #NILScript からTwitterへ投稿- GitHub
Greasemonkey向けにOAuthラッパを書いてあったので、NILScriptでも動くようにしてみたサンプル。
NILscriptでのOAuthについては後ろの方でまた書くのでこれは見る程度で。
azu’s OAuth-for-Greasemonkey at master – GitHub - gist: 487432 – 自分のフォローしてる人からユーザー(スクリーン)名を検索する #NILScript- GitHub
これもOAuth使ったサンプル。
OAuth.jsとかも一緒くたにしてるので、分離する方法はまた後ろ
最後の方で出てきたOAuthをNILScriptで使う方法。(上のサンプルは無視していいよ)
- OAuth.ng (ライブラリみたいなものです)
をダウンロードして、OAuthを使うスクリプト内でinclude(“OAuth.ng”);して、後はOAuth for Greasemonkeyのラッパーライブラリ | Web scratchとメソッドの使い方は同じ。(xhrは実装してないです)
単純なサンプルで、OAuth.ngと同じフォルダに入れて実行するとOAuth認証ができます。
本当はユニットスクリプトやプラグインにした方が良いんだけどやり方がイマイチ分からなかったのでincludeにしてみた。
まとめ
良いところ
SpiderMonkeyベースなのでE4Xなども使えて文字列処理がやりやすいので、Firebugなどでマクロ的な文字列処理をしてる人とかJavaScriptで書くならこっちの方が便利かもよ。(JavaScript の新しめの機能(Array の拡張)とかも動くよ)
デフォルトでマルチストローク対応ホットキーやマウスジェスチャープラグインなどもあるので、AutoHotKeyでよくあるキーバインドを変更するとかもできるよ(自分の設定を公開とかやるといいかも)
WSHに比べてファイル操作をするものがかなり書きやすいよ。(base_io.txtを読む)
AutoHotKeyと違ってマルチバイト文字列に対応してるのでダメ文字とか日本語書けないとかに悩まされないよ。
標準関数やユニットスクリプトなどもNILScriptで書かれているので、ソースを直接読むことができる(この辺、情報不足感といいJetpackによく似てる。requireするとこも)
悪いところ
知名度が少ないので情報が少ない(→作ったものはどんどん公開して欲しい)
SpiderMonkeyにはDOM実装はないので、LooseXMLという独自のパーサーになっている。XPathに似た表記で使えたり悪いとは言い切れないけど、普段使うJavaScriptのDOMとはちょっと違うので手間取る。
GUIの表現が貧弱。Windowを使う事で基本的なウィンドウは簡単に作れるが、文字サイズなど装飾など細かい事ができない部分も多い。
NILScriptの用途として個人的に使うものを書く場合が多いと思いますが、書いたものをどんどん公開していこうぜ!という感じで〆
- NILScript
- NILScript配布場所
- NILScriptブログ
- 特徴や使用例の紹介記事
OneNoteを同期してiPhoneから見る方法
OneNoteをiPhoneから見ることを目的とした記事です。
OneNoteはevernoteと比較されがちなソフトですが、evernoteはiPhoneなどとも連携がとれるので、その部分でevernoteを選んで使っている人も多いでしょう。
Webサイトのスクラップや自由なレイアウトや画像の貼り付け、筆圧対応のペンタブ、画像のOCR(2010は日本語も対応)していて何よりevernoteより軽いのでとても良いソフトだと思います。
スタパビジョン-Microsoft 「Office OneNote 2007」 でも言ってましたがマイクロソフトの製品とは思えないぐらい優れたソフトウェアです。
OneNote自体の話はここまでにしておいて、OneNoteのファイルをiPhoneから見る方法がMobileNoterぐらいしか存在してないので、iPhoneとOneNoteを連携させる方法を作ってみました。
追記:MSから公式でMicrosoft OneNoteのiPhoneアプリが出ています。
おそらく海外アカウントがないとダウンロードできませんが、無料でWindows Liveに保存してあるOneNoteファイルを閲覧できます。
Windows Liveに自動的に同期できるのは2010からだと思うので、下記は2007やOneNoteアプリでは完全な形で閲覧できるわけではないので、見づらくても完璧な形で見たいという人向けの内容になります。
(Onenoteアプリ自体は結構できがよいので、無理に下記の方法をとるべきではないかもしれないです)
OneNoteのプラグインまとめ
そろそろOffice2010がでますが、今更OneNote2007を使い始めたのでOneNoteのプラグイン(add-in)のまとめです。
最後の方はプラグインというよりは関連ソフト。
Calendar/Planner
http://blogs.msdn.com/johnguin/archi…r-onenote.aspx
A new OneNote Favorites Powertoy – OneNote Testing – Site Home – MSDN Blogs
http://blogs.msdn.com/b/johnguin/archive/2008/03/03/a-new-onenote-favorites-powertoy.aspx
ページをお気に入り登録する感じでお気に入りリストを作る。
→最新版 http://blogs.msdn.com/b/johnguin/archive/2008/09/11/onenote-favorites-updated-with-user-requested-feature.aspx
Canvas for OneNote
http://www.officelabs.com/projects/canvasforonenote/Pages/default.aspx
サムネなどでノートの全体を見る。参考 Canvas for OneNoteの感覚的な情報整理 : could
ダウンロードはIEからで無いと崩れていて難しいです。TRY ITのとこをクリックでダウンロード。
OneNote PowerToys – A Collection of PowerToys for OneNote
http://www.onenotepowertoys.com/2007/06/23/onenote-search-and-replace/
検索置換を行うプラグイン。
結果をプレビューできる。
Merge Pages
http://blogs.msdn.com/johnguin/archi…-powertoy.aspx
ページをマージする。
Printout to OneNote Manager
http://blogs.msdn.com/johnguin/archi…o-onenote.aspx
印刷のレイアウト調整OneNote PowerToys – A Collection of PowerToys for OneNote
Word Count
http://blogs.msdn.com/descapa/archiv…ord-count.aspx
文字数カウント
Template Manager
http://blogs.msdn.com/johnguin/archi…note-2007.aspx
http://blogs.msdn.com/olya_veselova/…templates.aspx
Outlook To OneNote AddIn
http://blogs.msdn.com/descapa/archiv…ote-addin.aspx
Text Importer
http://www.onenotepowertoys.com/2007…text-importer/
テキストファイルをインポート
OneNote PowerToys – A Collection of PowerToys for OneNote
http://www.onenotepowertoys.com/2007/12/03/html-importer/
HTMLファイルをインポート
Better Living through Software » Blog Archive » OPML import for OneNote
http://www.netcrucible.com/blog/2004/04/28/opml-import-for-onenote/
OPMLファイルをインポート
Journal to OneNote Importer – OneNote Testing – Site Home – MSDN Blogs
http://blogs.msdn.com/b/johnguin/archive/2007/12/21/journal-to-onenote-importer.aspx
Journal ファイルをインポート
Rambles In The Brambles: PowerPoint To OneNote
http://www.borlik.net/blog/archives/000097.html
PowerPointファイルからインポート
Notebook Cleaner & Privatizer
http://blogs.msdn.com/johnguin/archi…-powertoy.aspx
作者情報などを取り除く
Image Rotator
http://blogs.msdn.com/johnguin/archi…note-2007.aspx
画像を回転させる
Sort Sections
http://blogs.msdn.com/descapa/archiv…-powertoy.aspx
セクションでソートを行う
Sort Pages
http://blogs.msdn.com/descapa/archiv…-powertoy.aspx
ページでソート
Table of Contents
http://blogs.msdn.com/johnguin/archi…-powertoy.aspx
ページの一覧をまとめてテーブルページを作る。OneNote PowerToys – A Collection of PowerToys for OneNote を参考に
Table Sum Powertoy for OneNote – OneNote Testing – Site Home – MSDN Blogs
http://blogs.msdn.com/b/johnguin/archive/2007/12/10/table-sum-powertoy-for-onenote.aspx
テーブルで計算を行う。
Make Subpage
https://blogs.msdn.com/johnguin/arch…vo-update.aspx
A beta powertoy for OneNote 2007 to extract highlighted text from a page – OneNote Testing – Site Home – MSDN Blogs
選択範囲から新たなページを作る
OneNote 2007 Powertoy to change section colors – OneNote Testing – Site Home – MSDN Blogs
セクションの色を変える
A beta powertoy for OneNote 2007 to extract highlighted text from a page – OneNote Testing – Site Home – MSDN Blogs
A powertoy to make using Adapx pens for OneNote a little easier for me – OneNote Testing – Site Home – MSDN Blogs
ページのサイズを自動でfitするように。
Copy page to OneNote Mobile notebook
http://blogs.msdn.com/johnguin/archi…le-device.aspx
OneNote Math AddIn | Dragonshorn Studios
http://dragonshorn.info/node/4?page_id=372
数式を書くツール
OneNote Web Exporter
http://www.codeplex.com/ONWebber
ノートブックをWebページとして出力する。
Powertoy: Double Hyperlink « Tablet PC – A Student’s Perspective
http://tabletpcstudent.wordpress.com/2007/11/17/powertoy-double-hyperlink/
ページ作成時のナビゲーションを補助
Export OneNote to PDF (OneNote2PDF)
http://onenote2pdf.codeplex.com/Wiki…te2PDF%20Usage
Onenoteのファイル.oneからPDF形式に変換する。
Send to OneNote 2007 powertoy – Daniel Escapa’s OneNote Blog – Site Home – MSDN Blogs
http://blogs.msdn.com/b/descapa/archive/2007/02/15/send-to-onenote-2007-powertoy.aspx
エクスプローラからOneNoteへファイルを送る
OneNote PowerShell Provider « Brian’s Brain
http://bdewey.com/2007/07/18/onenote-powershell-provider/
PowerShellとOneNote
The Unknown OneNote Guy’s Blog: OneNote 2007 Xml Viewer
http://unknown-onenote.blogspot.com/2006/09/onenote-2007-xml-viewer.html
OneNoteのXMLをみるためのビューアー
A really great tip to make getting information into OneNote much easier – OneNote Testing – Site Home – MSDN Blogs
OneNoteへコピペするためのAutoHotKey
任意のキーにセットして使う。
Clip to OneNote :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/12003/
Firefoxから落書きノートでスクラップするアドオン
他のまとめ
A summary of the OneNote powertoys from the test team for 2007 – OneNote Testing – Site Home – MSDN Blogs
21 OneNote Power Toys | Sarah In Tampa | Channel 10
http://on10.net/blogs/sarahintampa/20844/
OneNote PowerToys – The Daily Ramblings of an SMS Engineer
http://myitforum.com/cs2/blogs/socal/archive/2008/03/30/onenote-powertoys.aspx
意外とソースを公開しているものが多くていいね。
C#とかでプラグインを作れるようなので興味がある方は作ってみるといいかも。
記事の元ネタにいろいろ追加と説明を加えた。
- Favorite Plugins – www.ms-news.net
- http://www.ms-news.net/f2614/favorite-plugins-10277983.html
Send to OneNote 2007 powertoy – Daniel Escapa’s OneNote Blog – Site Home – MSDN Blogs
http://blogs.msdn.com/b/descapa/archive/2007/02/15/send-to-onenote-2007-powertoy.aspx
エクスプローラからOneNoteへファイルを送る






