2012/12/31

Yeoman ServerでURL Rewrite


フロントエンド開発のワークフローをサポートしてくれるコマンドラインツールのYeoman(ヨーマン)おじさん、Jenkinsおじさんとは違う形で活躍しています。
チームみんなのJenkinsおじさんに対して、私だけのYeomanおじさんのような感じで。
Yeoman
http://yeoman.io/ 
https://github.com/yeoman/yeoman
Gruntfile.js/.coffeeにワークフローを定義すれば多彩な才能を発揮してくれるんですが、ウチでは、CoffeeScript/LESSのコンパイル、.html/.js/.cssのconcat/minify、mochaテスト実行、ローカルサーバ、LiveReloadによるファイル編集時の自動リロード...等々でお世話になってます。

で、そんなYeomanおじさんは
$ yeoman server
とコマンド入力すると http://localhost:3501でローカルサーバ起動してくれるのですが、このローカルサーバでは、mod_rewrite相当の手段が見当たりませんでした(ある?)。
HTML5 Hisotry APIを使ったSingle Page Applicationで、URLを更新した後のリロードすると404になって困ってました。

YeomanのGithub Issueを見ると同じような要望は度々上がっているようで、マージされてませんが実装されてる方はいるようです。
今のところ私は以下を参考にv0.9.6の yeoman/tasks/server.js へパッチを当て、Gruntfile.jsにrewriteルールを記載した形で対応しています。開発用のローカルサーバなので。
Yeoman Server and Backbone/BBB pushState
https://github.com/yeoman/yeoman/issues/468
参考まで。

2012/10/13

Mac版astahの言語設定を日本語/英語で切り替える方法

私はMac OSの言語設定を英語に設定しているので、その上で動作するソフトも英語に対応している場合、自動的に英語表記になります。
企画の際のアイデアのまとめやシステムのラフな設計に astah というソフトを使っているのですが、それも同様です。

しかし、日本語表記で利用しているユーザーと話すとき英語表記だと通じないことがあるので、そういう時は日本語表記に切り替えて確認することもありました。
Windows版やLinux版とはやり方が違うので紹介しておきます。

1. astahのInfo.plistをエディタで開く - エディションによって違うけど下記の何れか
/Applications/astah\ community/astah\ community.app/Contents/Info.plist
/Applications/astah\ UML/astah\ UML.app/Contents/Info.plist
/Applications/astah\ professional/astah\ professional.app/Contents/Info.plist
2. VMOptionsプロパティに、-Duser.language=ja -Duser.country=JP を追加する

    修正前 - OSの言語設定に従う
<key>VMOptions</key>
<string>-Xms16m -Xmx768m</string>

    修正後 - 日本語表記に切り替え
<key>VMOptions</key>
<string>-Xms16m -Xmx768m -Duser.language=ja -Duser.country=JP</string>

    修正後 - 英語表記に切り替え
<key>VMOptions</key>
<string>-Xms16m -Xmx768m -Duser.language=en -Duser.country=US</string>
このVMOptionsで、コマンドラインからjavaを実行するときのオプションと同等のものを指定できるので、Mac版astahでは初期ヒープサイズ(-Xms)、最大ヒープサイズ(-Xmx)のデフォルト値が設定されています。

なお、Windows版astahについては公式サイトでFAQが公開されています。
英語でastahを使用できますか
http://astah.change-vision.com/ja/faq/faq-setup/astah-inenglish.html

2012/01/10

MicrojsでJavaScriptのソースコードリーディング

Microjs CodeReading Bookmarkletとは
http://microjs.com にリストされているJavaScriptライブラリのソースコードリーディングを支援するブックマークレットです。Read/Unread状況、Readサイズ/合計コードサイズを把握できるので、ソースコードリーディングでちょっとした達成感を味わえます。ブックマークレットは http://let.hatelabo.jp/ を利用して公開しています。
Microjsとは Microjsは、数百バイト〜数キロバイトの小さなJavaScriptフレームワークやライブラリを集めて紹介しているサイトです。2012/01/09時点で154個、合計206.7kBのライブラリがリストされています。小さいものに限定されているので、短時間で読めるものがほとんどです。Backbone.js, Zepto, yepnope, Modernizrなど、JavaScript, CSS3, HTML5に興味のある方は一度は見聞きしたことがあるものが並んでると思います。 インストール方法 Hatena::Letのブックマークレット公開ページからブックマークレットをブックマークに追加します。 http://let.hatelabo.jp/shoito/let/gYC-xZiazbHnRw
使用方法
1. http://microjs.com にアクセスします。
2. ブックマークをクリックし、ブックマークレットを実行します。
    実行すると下図のように、どのライブラリがRead/Unreadなのか、どの程度のコードを読んだのかが表示されます。
注意 ソースコードリーディングの履歴はWeb Storageを利用してブラウザに保存していますので、別ブラウザ/別マシンを使用した際に履歴は引き継がれません。 ソースコード https://github.com/shoito/bookmarklet/tree/master/microjs
フィードバック
感想、要望、不具合などありましたら @shoito へツイートいただけると嬉しいです。

2012/01/09

FreeMind Import for astah - astahプラグイン

背景
これまで6年ほどマインドマップを描いていて、ツールはMindManager, MiNDPiECE, FreeMind, astahといろいろ使ってきてました。そのため、それぞれのツールで作ったファイルがあるんですが、全てのツールに互換性がある訳じゃなくて「あー、以前描いたマインドマップが見たいのになー。」ってことがありました。
そんな訳で、まずは自分以外からも要望のあったFreeMind → astahを実現してみました。

FreeMind Import for astahとは
ソフトウェア設計支援ツール astah(旧JUDE) に、マインドマップ作成ツール FreeMind のファイル(.mm)をインポートするastahプラグインです。astah UMLprofessionalの何れかにインストールして利用します。
※このプラグインはastahのバージョン6.5.1以上で動作します。
※マインドマップを利用するため、astah communityでは利用できません。
※個人で作ったプロトタイプなので無保証でお願いします。
FreeMindのこんなマインドマップを↑
↑astahにインポートするとこうなります
FreeMindとは
FreeMind(フリーマインド)は、PC上でマインドマッピングナレッジビルディングのための無料のソフトウェアである。 
GPL下でソースコードが公開されているオープンソースソフトウェアである。 Javaで書かれたソースのほかに、バイナリ形式で、Microsoft Windows版、Mac OS X版、Linux (DebianSuSE) 版が公開されている 。
FreeMind - Wikipediaより引用
プロジェクトページ インストール方法など詳細は下記プロジェクトページをご覧ください。

freemind-import-for-astah 

プラグイン開発について astahプラグイン開発チュートリアルとSDKが公開されているので、それをベースに開発しています。 http://astah.change-vision.com/ja/plugin-tutorial/ FreeMindファイル(.mm) 拡張子.mmのXMLファイルであり、XML Schemaが公開されています。 これをJAXBバインディングコンパイラ(xjc)にかけてJavaのモデルクラスを作っています。
$ xjc src/main/resources/schema/freemind.xsd -p com.github.astah.mm2asta.model -d src/main/java
これでFreeMindファイル(.mm)をastah側で読み込むベースは出来たので、あとはプラグイン側で、読み込んだマインドマップのツリー構造通りにastahのマインドマップAPIを使って、astah側のデータを作っています。この処理はこの辺でやってます。 フィードバック
感想、要望、不具合などありましたら @shoito へツイートいただけると嬉しいです。