2010年11月30日火曜日

Zen Codingを導入してみた

Amazonで、『HTML+CSSコーディングが10倍速くなるZen Coding』なる書物を見かけたので、ちっとばかり調べてみた。
ばりばり使うことがあるかというとかなり疑問だったけど、便利そうなので手もとのEmEditorやAptanaに導入してみた。


1. EmEditor


EmEditor向けにはマクロとして提供されている。
http://www.emeditor.com/modules/mydownloads/singlefile.php?cid=18&lid=281


上記ページで、FDマークの右の「Zen Coding macros and snippets」という部分をクリックすると、マクロのファイルがダウンロード可能。


同ページの手順書によると、

  1. 「マイドキュメント」フォルダに「My Macros」(MyとMacrosの間は半角スペース)というフォルダを探す。
  2. ない場合は、EmEditorでマクロを一度も使用したことがないことが原因と思われる。ない場合は、自分で作成してしまうこと(EmEditorで何でもいいのでマクロを記録、名前をつけて保存しようとすると自動で作成される)。
  3. My Macrosフォルダに、zen_emeditor.jseeをコピーする。
  4. もしスニペット・カスタムバーが表示されていなければ、メニューから<ツール→プラグイン→スニペット>をクリックし、表示する。
  5. スニペット・カスタムバーの上で右クリック<インポート/エクスポート→ルートにインポート>をクリック。
  6. zen-coding-en.eesnip(もしくは~ja.eesnip)を選択。
  7. もしスニペット・カスタムバーが表示されていない状態でもZen Codingマクロを使用したい場合は、<メニューからツール→プラグイン→プラグインの設定>をクリック。
  8. プラグイン一覧からスニペットを選択し、プロパティをクリック。
  9. 「バックグラウンドでも実行する」にチェックを入れ、OK。


(以上、意訳・補足あり)

これでZen Codingマクロが有効化し、「div#name」とか何とか入力してF12を押すと、コードの展開が可能になる。編集設定がCSSの場合はCSS向けのZen Codingも可能。
また、ほかにもコマンドがあるらしいけど、そこら辺は上記ページを確認のこと。



2. Aptana(Eclipse)


Aptana(Eclipse)向けには、プラグインの形式でリリースが行われはじめている。
以前、Zen Codingについて調べたときにはまだなかったように思うので、隔世の感?


プラグインは、以下のページで配布されている。
https://github.com/sergeche/eclipse-zencoding


インストール手順にしたがうと、

  1. メニューから<Help→Install New Software...>と進む。
  2. アップデートサイトのロケーションとして、http://zen-coding.ru/eclipse/updates/を追加する。
  3. 利用可能なプラグインのリスト中、「Zen Coding for Eclipse」(Uncategorized...→Zen Coding for Eclipse)にチェックを入れ、Nextボタンをクリック。インストール手続きを進める。
  4. インストール後、(Aptana/Eclipseに促されるまま)再起動する。

(以上、意訳・補足あり)


これだけで、Aptanaのテキストエディター中でZen Codingが使用可能になる。
例によって「div#name」とか何とか入力してTabキーを押すと直前のコードが展開されて、HTMLになる。
コマンドのショートカットのカスタマイズもできるっぽい。詳細は上記ページを確認のこと。

2010年8月22日日曜日

Scalaコードの強調表示定義ファイルの所在

Scalaのソースコードを編集する際に便利な、各種テキスト・エディタ向けの強調表示の定義ファイルの所在について、備忘録。
どこで見たのか忘れてしまった…というか確認作業が面倒なのでしないだけなのだけど、ともかく誰かさんのおかげで知りました。

Scala公式サイトで配布されている圧縮ファイルを展開してできたフォルダの、
scala-(バージョン・ナンバー).final > misc > scala-tool-support
に、VimやらEmacsやらNotepad++やら何やらかんやら、ともかく諸種ツールの名前のフォルダがあります。

Windows環境の場合、インストーラーをダウンロードして、手もとのPCにインストールする、ということもできます。その場合も、同じように、
C:\Program Files\scala\misc\scala-tool-support
などのフォルダをのぞくと、見つかります。

たとえばNotepad++向けのフォルダは「notepad-plus」で、この中にしまわれているXMLファイルを、Notepad++のインストール・ディレクトリか、
C:\Users\(ユーザー名)\AppData\Roaming\Notepad++
などにコピーすると(Windows 7の場合)、Scalaソースコード向けの強調表示ができるようになります。







Maven2.2 で新しいプロジェクトを作成する

Windows環境においてMaven2.2で新しいプロジェクトを作成する方法についてメモ。

Maven2での同手順については、以下のサイトなど諸処で解説されている。

■プロジェクトの作成 - Maven-THECHSCOPE
http://www.techscore.com/tech/ApacheJakarta/Maven/2-2.html

■Maven Getting Started Guide - Apache Maven Project
http://maven.apache.org/guides/getting-started/index.html

ようするに、Mavenをローカルにインストールし、mvnコマンドを実行できる状態にまでした上で
mvn archetype:create
-DgroupId=com.mycompany.app
-DartifactId=my-app

か(Maven-THECHSCOPEの場合)、
mvn archetype:create
-DarchetypeGroupId=org.apache.maven.archetypes
-DgroupId=com.mycompany.app
-DartifactId=my-app
を(Apache Maven Projectの場合)、実行するのだけど、どちらにしても警告が出る。

まず、「archetype:create」の部分は、「archetype:generate」が正しい(Mavenのバージョンのちがいによるものと思われる)。
また前者のコマンドを実行した場合、プロジェクトの構築中に、
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
と表示されて、アーキタイプとそのバージョンを、数字で選択するよう促される。アーキタイプについては、「org.apache.maven.archetypes:maven-archetype-quickstart:1.0」がデフォルトのようだったが、これは環境や、直前の操作に影響されるものかもしれない。

前者のコマンドの場合、アーキタイプとバージョンへの回答が済むと、あとは放っておけばプロジェクトの作成が完了する。後者の場合は、アーキタイプの選択をせずとも作業は完了する。

また、こちらのサイトでも述べられていたが、どちらのコマンドもそのままではPowershell上で実行できない。コマンドプロンプトでは問題ないが、Powershell上で実行する場合は、「-D○○」系のオプションを1つ1つ、「"」(ダブルクオテーション)で囲う必要がある。
(そうしないと、コマンドの構文解析に失敗するらしく、どう足掻いてもエラーになる。)

つまり、こうなる。
mvn archetype:generate
"-DarchetypeGroupId=org.apache.maven.archetypes" (アーキタイプ・グループID)
"-DgroupId=com.m12i.myapp" (デフォルト・パッケージ名)
"-DartifactId=my-app" (作成するプロジェクト名)
※コマンドは、可読性のために改行を施したが、実際に実行する場合はこれらの改行はなくする。

2010年8月21日土曜日

Scalaを単体で実行可能なJarファイルにまとめる

【注】この記事の記述にはまちがいがありました。紹介されている参考記事の記述のうち、不要だったのは、マニフェストファイルでのクラスパス(Class-Path)の記述であって、scala-library.jarの展開は必須でした。

Scalaソースコードを、Javaクラスファイルにコンパイルしたあと、Scalaがインストールされていない環境でも(Java実行環境があれば)単体で実行可能なJarファイルにまとめる手順について。

jarコマンドとか、classpathとかそのへんすごい苦手なので、備忘録。
おおむね下記サイトに掲載されている通りでも問題ない。

■ScalaをJar化してみるComments - ゲーム作ろうよ
http://d.hatena.ne.jp/mitsu_chie/20100719/1279552867

だけど、要らない手順も含まれていたので、整理しておく。

1. Scalaソースコードを作成

ともかくmainメソッドを持つobject(シングルトンクラス)があればよいよね。
例えば、

HelloWorld.scala
object HelloWorld {
    def main (args: Array[String]): Unit = println("Hello world!")
}
とか。


2. scalacコマンドでJavaクラスファイルに変換

コマンドラインで、作成したScalaソースコード・ファイルを指定して
scalac HelloWorld.scala
この段階で、
scala HelloWorld
とコマンドを打てば、「Hello world!」とか表示されるはず。

3. scala-library.jarを用意する

scala-library.jarは、Scalaのインストール・ディレクトリに含まれる。
jarコマンドに長々とパスを指定したりしたくないので、scala-library.jarをコピーして、
Scalaソースコードと同じディレクトリにコピーする。


コマンドプロンプトで、
jar xf scala-library.jar
を実行して、scala-library.jarを展開する。結果的にフォルダ内にはscalaフォルダが新たに作られる。



4. マニフェスト・ファイルを作成

作成する実行可能Jarファイルの、実行時の設定を指定するため、マニフェスト・ファイルを用意する。

マニフェスト・ファイルでは、mainメソッドを持つクラス名(Scalaコード的にはobjectとして作ったもの)の名称と、Scalaコードから生成したクラスファイルを実行するために必要な、Scala APIのクラスを探索するクラスパスを指定する。

例えば、
manifest.mf
Manifest-Version: 1.0
Main-Class: HelloWorld
Class-Path: scala-library.jar
とか。
このファイルも便宜上、Scalaソースコードと同じディレクトリに 保存。

5. jarコマンドでアーカイブ

jarコマンドのオプションとして、

c(Jarファイルをつくるよ)
f(作成するJarファイル名を指定するよ)
m(マニフェスト・ファイルもあるよ)

を与え、
さらに、作成するJarファイルの名前と、作成したマニフェスト・ファイル名を指定。
最後に、新たにJarファイルとしてまとめることになるJavaクラスファイルやJarファイルを指定。

例えば、
jar cfm HelloWorld.jar manifest.mf *.class scala-library.jar
となる。
これで、このディレクトリ内のすべてのJavaクラスファイルと、scala-library.jarがまとめられてJarファイルHelloWorld.jarになる。
java -jar HelloWorld.jar
などとコマンドを打てば、「Hello world!」とか表示される。
Scalaコード内で呼び出しているScala APIによっては、jarコマンド末尾のアーカイブ化対象クラスファイルやJarファイルの一覧がながーくなっていくものと思われる。

2010年5月2日日曜日

Scala開発用Eclipseプラグインのバグ

最近、JVMを基盤にして動く関数型言語Scalaを勉強しはじめた。
インタラクティブにコードを実行できるツールが提供されているあたりが、とてもありがたい。
プロンプトの表示に若干バグがあるのが気になるけど…

それでScala開発用のEclipseプラグインSDT(Scala Development Tools)も提供されていたので、さっそく入れてみた。いや、実のところいままでJavaで作ってきたプログラムを、部分的にでもScala化できればという考えもあって…。

しかしこのプラグインはかなり使いづらく、かつバグっている。
  • プロジェクトビューでScalaプロジェクトを選択した状態では、「実行」メニューにも、「実行」ボタンにも、コンテクストメニューの「実行」にも、「Scala Application」が表示されない。ソースコードファイルそのものを選択している状態でないといけない。
  • ソースコードエディタに関しては、入力をアシストする機能はない。あるのはキーワードの強調表示だけ。
  • 自動インデントの単位はEclipse一般の設定を無視して、半角スペース2つで固定。
  • コンパイルがうまくいかず、「java.lang.NoSuchMethodError: main」などとエラーが表示されたりする(アンインストール→再インストールでなんとか解決)

2010年2月19日金曜日

Abduction!を無理やりFirefox3.6にインストール

Webページのスクリーンショットを、ページ全体もしくは指定した範囲で撮影、PNG画像として保存できる拡張機能Abduction!はUIもシンプルでとても便利なのだが、昨年(2009年)夏以来更新がなく、結局Firefox3.6には対応していない。

しばらく待てば3.6へと対応するかと思っていたが、待てど暮らせどで、Add-ons for Firefoxのページでも、3.6への対応の熱い期待(と苛立ち)のメッセージが貯まるばかり。

そういうわけで、強制的に3.6に対応させることにした。

  1. まず上述のページで、拡張機能インストール用の緑色のボタンを右クリックして、「リンク先を保存」(Firefox3.6でこのページを表示するとそもそも緑色のボタンが表示されないので、別のバージョンもしくは別のブラウザで開くのがよい)
  2. ダウンロードした「abduction!-3.0.4-fx.xpi」の拡張子を「.xpi」から「.zip」に書き換え
  3. 「abduction!-3.0.4-fx.zip」を展開(Windows では右クリック→「すべて展開」)
  4. 展開してできた「abduction!-3.0.4-fx」フォルダの中の、「install.rdf」をテキストエディタで開き
  5. 「<em:maxVersion>3.6b1pre</em:maxVersion>」という部分を「<em:maxVersion>3.6</em:maxVersion>」と書き換え上書き保存
  6. 「abduction!-3.0.4-fx」フォルダの中のすべてのファイルとフォルダを選択し、zipファイルにする(Windowsでは右クリック→「送る」→「圧縮(Zip形式)フォルダー」)
  7. できあがったzipファイルを「abduction!-3.0.4-fx.xpi」に名前変更
  8. これをFirefox3.6のウィンドウ内にドラッグ&ドロップする。

以上でFirefox3.6にAbduction!を無理やりインストールできる。

使ってみたところ、自分のPC環境(Windows7)では問題なく動作するようだけれど、他の環境でどうなるかは不明。上述の方法もあくまでも「無理矢理」のことなので、保証も保障もない。