FlashDevelop 3.0.0 RC5
64bit挑戦中のシステム環境
先日から挑戦中の64bitマシン。具体的なスペックを書いていなかったのでここに記述する。
ハードウェア
OS | Windows Vista Ultimate 64bit版 |
CPU | Intel Core 2 Quad Q6600 |
マザーボード | P35D2-A7 |
CHIPSET | Intel G33/G31/P35 Express |
Memory | 4GB |
VIDEO | NVIDIA Geforce 8800 GT(G92) |
Disk | ST31000333AS |
Sound | RME HDSP 9632 |
ソフトウェア
Adobe CS 4 Production Premium | |
Adobe Flex Builder 3 | |
Aptane Studio 1.2 | |
ATOK 2008 | |
CrystalMark 2004R3 | |
Cygwin | |
Flash Develop 3.0.0 | |
Lhaplus | |
Mozilla Firefox 3.0.7 | |
Norton AntiVirus | |
Notepad++ | |
Cubase 5(※以前使っていたプラグインはまだインストールしていない) | |
VMware Player | |
WinShot |
マシンは2008年1月購入のものです。もう1年以上前のマシンになるんですね。
突っ込みどころとしては、メモリ4GB。64bit化しておきながら何で8GBとかじゃないんだ、と。
購入時点では32bitOSだったので。メモリ増設はまた追って行うこととします。
(じゃあ、なんで32bitOSは3GBしか認識しないのに4GB搭載したんだ、と言われると返す言葉がない。自分でもよく分からない。)
インストールしているアプリは上記のとおり。まだまだインストール真っ最中。
とりあえず上記については問題なく動作しています。問題なく、というのがどの程度かと言われると難しいのですが、一通り動かしてエラーなどは出なかった、ということでしょうか。
ですので、Photoshop は動作していますが、GBレベルのファイルの急速な拡大縮小とか、レイヤー数百枚重ねての動作検証などは行っておりません。
今後の予定としてはMSの開発系(Visual Studio、SQL Server など)ですね。SQL Server の 64bit下でのメモリ使用量など興味あり。
あ、一点だけ現状うまくいっていないのがありました。プリンタドライバです。Canon MP500 を使用しているのですが、32bit XP のマシンをプリントサーバとして使っています。64Bit Vistaマシンからネットワークプリンタを追加するもドライバがないというエラーになってしまいます。32bit XPマシンに最新のドライバ入れてるんですけどね。要調査です。直接64bitマシンとプリンタつなげちゃえばおそらく動くんだろうけど。
というわけで、もう64bit環境にすっかり慣れてきました。普通に使える環境なんだな、とちょっと拍子抜けするくらいあっさりです。
Math.atan2 のパラメータ間違ってるよ
これをバグと呼んでよいものか。ちょっと気づいてしまったので書く。
FlashDevelop 3.0.0 RC2 で、Math.atan2 と入力した時に出てくるツールチップの表記
x と y が逆なんですよね。正しくは、atan2(y:Number, x:Number):Number
Adobe のサイト(http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Math.html#atan2())を見ても分かるとおり。
このツールチップの値はどこから持ってきているのだろう。
FlashDevelopのインストールフォルダ\Library\AS3\intrinsic\FP9 の Math.as みたいですね。
public static function atan2 (x:Number, y:Number) : Number;
て書いてある。
これのためにフォーラム(FlashDevelop.org - View forum - Bugs)にスレ立てるのもなー、と逡巡。
M-V-VM パターン関係のリンク集的な
Silverlight3 凄くね?WPF 大丈夫?、なんて思ったりする今日この頃。
それなりの規模のアプリを作るにはやはり場当たり的なコーディングでは破綻が見えているわけで。
最近、WPF、Silverlight に関する、 M-V-VM パターンの記事をよく目にするようになって。
まだ理解できたとはいえないが、何となくこれは大事な概念に違いないという思いが強まってきた。
あとで読む的な意味を含みつつ、見つけたページを列挙
Model-View-ViewModel デザイン パターンによる WPF アプリケーション
MSDNマガジン。王道でしょう。
Silverlight 2 アプリケーションでの Model-View-ViewModel
Silverlight 版のM-V-VM の記事もありました。概念的には WPFもSilverlightもそう変わりはないと思うけど。
アプリケーション開発支援ツール/コンポーネント/ライブラリ | Developer Tools - グレープシティ株式会社
グレープシティ八巻さんのデブサミ資料。スライドが非常に分かりやすい。
http://karlshifflett.wordpress.com/mvvm/
MVVM関係の記事を鋭意執筆中のページ。XAML Power Toy の作者さんなのね。
Code Project の記事も同一人物
Exploring a Model-View-ViewModel Application; WPF Password Manager, Cipher Text - CodeProject
WPF 入門記事と MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターンまとめ - アジャイルプログラマの日常
M-V-VM とその他アーキテクチャーのリンク集。どれも必読ですね。
Tips på Internett -
リンク集的な。日付が 2006年なのでどうなんだろ。
きっとこれからさらに M-V-VM の記事が増えてくるのでは、と予想。本質的なところが理解できればそう慌てることもないと思うけど。
時代が変わり、テクノロジーが変化するにつれ、問題に対する最適解というのは変わりうる。そもそも最適解というのが存在するのか
という疑問もあるけど。そういった中で M-V-VM という新しい手法が出てくるのも必然なのかもしれない。
でも、VM の層が結構微妙な気がしていて。きちんと設計されたものであればいいけど、VMの名のもとに ビューとモデルを混在させたようなアーキテクチャー、とか作らないようにね。
FlashDevelop のカスタマイズ。クラス作成時の継承元(extends)指定
FlashDevelop 3.0.0 RC2を使用。
ファイル(クラス)新規作成時、次の手順で行っています。
src フォルダ右クリック → New Class
クラス名を指定。
するとこのようなファイルが吐かれます。
クラスの雛形を自動的に作ってくれるのでとても便利。
しかし、使っていくうちに不満も出てきて。例えば、Sprite クラスを継承したクラスを作成したいとしましょう。
雛形に対して、次のような作業を行わなければなりません。
1. いま、カーソルがコンストラクタ部にあるので、クラス宣言部まで移動
2. extends Sprite と入力
3. import flash.display.Sprite; も必要なのだが、これは 2を入力すると自動的に補完してくれる。
何度も同じ作業をしているとさすがに何とかならないものかと考えてしまいます。
そこで、テンプレートをカスタマイズしてみましょう。
Tools → Application Files で開かれるフォルダから Templates\ProjectFiles\AS3Project と進むと、Class.as.fdt というファイルがあります。中身は
package $(Package) $(CSLB){ /** $(CBI)* ... $(CBI)* @author $(DefaultUser) $(CBI)*/ public class $(FileName) $(CSLB){ public function $(FileName)() $(CSLB){ $(EntryPoint) } } }
これに基づいて新規クラスファイルが作られるんですね。これを書き換えていきましょう。念のためにバックアップを忘れずに。
・$(EntryPoint) がカーソルの位置を示します。これをクラス宣言部の直後に移動させる。
・クラス宣言部に、extends $$(ParentClass) という分を追加。$$(変数名) とすると、変数の内容を入力させるダイアログが立ち上がるようになります。(参考ページ:http://blog.bk-zen.com/2009/03/11/132/)
修正後はこうなります。(Class.as.fdt)
package $(Package) $(CSLB){ /** $(CBI)* ... $(CBI)* @author $(DefaultUser) $(CBI)*/ public class $(FileName) extends $$(ParentClass) $(EntryPoint) $(CSLB){ public function $(FileName)() $(CSLB){ } } }
さてどうなるのかな。再びクラス新規作成
ParentClass指定ダイアログが現れました。ここでSpriteと入力。
見事 extends Sprite が追加されました。
しかし問題は import文。import flash.display.Sprite; を手入力はメンドイ。何のためにテンプレートカスタマイズしたんだ、って話です。
でも大丈夫。Sprite のところにカーソルを持ってきて、Shift + Ctrl + 1。Contextual Generator が働いて自動的に import 文が挿入されます。素敵。
Contextual Generator はとても便利なんですが、ショートカットキーが押しづらいので、Tools → Program Settings → ASCompletion → Shortcuts のところでお好きなキーに割り当てるとよいかもしれません。
課題としては、継承したくない場合でも extends が表示されてしまうのでどうするんだろ。とかあります。引き続き調べよう。
あと、人によっては、クラス新規作成時は Ctrl + 2(File → New AS3 Document)を使っている人もいると思います。この際に適用されるテンプレートは Templates\AS3.fdt になります。こちらをカスタマイズするというのもありでしょう。
64bit化奮闘中。64bit JDK では Flex SDK 3.3 が動作しない?
世間ではIE8で大盛り上がりの中、全然ついて行けてない今日この頃。いかがお過ごしでしょうか。
引き続き Vista 64bitマシンセッティング中。タイトル疑問形なのは、ネットで検索しても同様の問題に遭遇している人が見つからなかったから。もしかしたら自分だけかも、という自信のなさのため。
すでに Flash CS 4、Flex Builder 3 がインストールされている Vista 64bit マシン。
ちょっとしたコーディングには FlashDevelop (FlashDevelop.org - Index page)が何かと便利なのでインストールする。FlashDevelop でasファイルをコンパイルするには別途 Flex SDK をインストールする必要がある。Flex Builder がインストールされているのですでに Flex SDK は入っているのだが、これは Ver 3.2.0だし、今は Ver 3.3 が出ているのでせっかくだから3.3をインストールしようと思う。
http://www.adobe.com/products/flex/flexdownloads/ よりダウンロード。
JRE(JDKでもよい)が必要なので、JDK 1.6 Update 12をダウンロード、インストール。
で、FlashDevelop 起動。Flex SDK のパス設定。(Tools → Program Settings → AS3Context → Flex SDK Location)
これでよし。簡単なコード書いてF5でデバッグ開始。
でエラーとなる。コンパイラである mxmlc の起動に失敗しているようである。
原因の切り分けのために、コマンドプロンプトで Flex SDK のパス\bin に移動して mxmlc を実行してみる。
C:\app\FlexSDK\3.3.0\bin>mxmlc -help
Error: could not find JRE
Error: could not find Java 2 Runtime Environment.
JREが見つからないそうです。そんなはずはないぞ。 java コマンドたたく。
C:\app\FlexSDK\3.3.0\bin>java -version
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) 64-Bit Server VM (build 11.2-b01, mixed mode)
ほら、ちゃんとあるし。
ここでしばらく悪戦苦闘。JVM がServer VMなのがよくないのではないか、とか、じゃあどうすればClient VM になるんだよ、とか。http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/guide/vm/server-class.html よりCPUの数と搭載メモリにより決定されるみたいなのでどうしようもない。
JREが見えないということは、JREの場所が分からないのではないか、環境変数の問題?そこでJAVA__HOME=JREのパス として設定。
C:\app\FlexSDK\3.3.0\bin>mxmlc -help
Error loading: C:\Program Files\Java\jre6\bin\server\jvm.dll
相変わらずエラーだがエラーメッセージが変わった。
埒があかないので別マシンで試す。Flash、Flex Builderについてはライセンスの問題でインストールするわけにはいかず、全く同じ環境というわけにはいかない。OS も Vista 32bit だし。これに FlashDevelop、Flex SDK 3.3、JDK 1.6 UPdate 12をインストール。
あ、動いた。
じゃあ何が問題なんだろう、としばし考えたあげく、もしかしたら コンパイラ mxmlc は 64bit のJDKでは動かない(よって見つからないと判断)のでは?と思い早速実験。JDK 削除、32 bit版のJDKダウンロード、インストール。さあどうだ。
C:\app\FlexSDK\3.3.0\bin>mxmlc -help
Adobe Flex Compiler (mxmlc)
Version 3.3.0 build 4852
Copyright (c) 2004-2007 Adobe Systems, Inc. All rights reserved.
動作しました。(JAVA_HOME環境変数も必要ありませんでした。)
というわけで、JDK は32bit版を入れなくてはならなかったというわけです。でも心理的に、64 bitマシンだったら JDKダウンロード時にどれにしますかの選択肢出たら迷わず64bitにするよな−。
書いてる最中にこんなの見つけた。
http://bugs.adobe.com/jira/browse/FB-10052
64 bit版Eclipse でFlex SDK 動作せず。同じ現象なのかな。次のバージョンで解決?Moxie M3 (zero)の次のバージョンて??いいやこれ以上の深入りはやめておこう。
それにしても、トラブル時の原因の切り分けって難しいな、と改めて実感。