« 2008年6月 | メイン | 2008年8月 »

2008年7月 アーカイブ

2008年7月12日

レビュー:iPodnano3rdとNike+雑感

はじめに

アンチAppleの僕が購入したiPod nano3。今回はMS信者も魅せられるiPod nano3の簡単なセットアップガイドと、ランニングマネージャのNike+をあわせてツンデレレビュー。

とはいってもそろそろ新型発売を待つ時期(7月)です。そしていまさらiPodのレビューなど聞きたくないことは、僕自身知っています。ええ知っています。ですが、iPodを持っている人がNike+のユーザでもあるケースだけではないですよね。このNike+とは、2006年に発表されたランニングマネージャとなるハードウェアで、NikeのWebSiteでビジュアル管理してくれます。パラメータが見て取れるのは、ゲーム好きの僕にはなかなかやる気が沸いてくるものです。

それでは簡単にiPodのセットアップガイドから。続いてNike+のレビューです。iPodレビューは要らないという人は、直接Nike+レビューへ(ページ内リンク)。

iPod nanoレビュー

iPod nano外箱遠景
これが噂のiPod nano。Zune2を買おうと思ったら日本語版が無いことと、Nike+に対応していないことの2点で購入を決意。ええい、いまいましい。

iPod nano外箱近景
たばこの箱に見えるが重たい。

iPod nanoはがす
それでははがしてみましょう。

iPod nano内箱
手のひらサイズ。箱は包まれているおかげで無傷。油分の少ない僕の手では、神々しいiPodを汚すことすらかないません。

iPod nano上シール
ガッチガチに固められた全方位シール。ちなみに黒は容量的に上位モデルで8Gです。おお、ずっとフラッシュメモリを買わないですみそうだ。

iPod nanoいざ空けん
ハァハァいざ開封せん。無垢なiPodnanoが今まさに毒牙にかけられようとしています。(普通にレビューできなくてすみません

iPod nano開封
らめええ、そんな声があたりから聞こえてきます(きません)。恩敵のiPodの素肌はさらされ、裏にはもう一段のパッケージが。

Designed by Apple in California
「Designed by Apple in California」おお、シンプルイズベスト(死語)

内容物
中に入っているものは5点。上から時計回りに取扱説明書、注意書き、イヤホン、電源ケーブル、それとなにか。

iPodnano背面
iPodnanoの背面はトゥルトゥルテッカテカ。危うく自分の顔を写真に取りそうになります。僕が使うと油分が少ないから汚れにくい反面、汚れた日はずっとこすっていそう。

電源オン
iPodの電源をいれます。初めに見た人を親だと思うとかなんとか。

メニュー画面
撮影した画像ではあたりから浮かび上がって見えるnanoの姿が。神々しい......

厚みと斜めから見た液晶画面
とても薄く、車の隙間に落としそうなくらいです。また、斜めから見た場合は、ほかの多くの液晶と同じように色が反転して見えます。

操作はカバーを用いずに直接やる分には違和感を感じません。人によっては、ホイールを回転しすぎるなどがあるようですが、とりたてていうほどの操作ミスがありませんでした。カバーの有無で差が出そうです。

ほかにはいまさら言うこともなさそうですので、nanoについてはこれくらいで切り上げましょう。次はiTunesです。Appleに反感を持ち、かつ予備知識もなくインストールを試みる若者をうならせることはできるのか!

iTunesレビュー

ダウンロードは以下のurlから。Ver7.4の時点で57.1Mbyte。
アップル - iTunes - Download iTuneshttp://www.apple.com/jp/itunes/download/?ipod

勝手に更新されそうな一覧
iTunesで僕のWindowsが侵食されないか心配です。ここまでは大丈夫そう。

インストール後に音楽の検索をしているようです。終わると同時に今度は分類わけとジャケットの自動入手。お、おい......こんなことされちゃあ......Appleが好きになっちゃうじゃないか......。これは便利ですね。

ジャケットの自動入手
なんと!勝手にジャケットを落としてきてくれている!僕が聞いている音楽はこんな破廉恥なジャケットだったのか!ジャケットは自動的にnanoにも加わっている。Coolとしか言いようが無い。

shift操作
操作は直感に頼っていても大体可能。例えば、音楽ファイルをマウスで複数選択できなくても、Shift+方向キーで選択可能とか。ある程度のユーザならわかりますよね。初心者は不便に感じるかもしれません。ただこの点の操作性に難がありました。具体的には、最初の音楽から上を押せば上に一つ、下を押せば下に一つ動くことです。例として、上やっぱり下、と動かすと3曲選ばれます。

で、ほかのプレーヤと比較して、一次感想は以下の通り。

良い点
視覚効果がグー
楽曲検索が自動
悪い点
基本的に大量の楽曲に対応していないUI
重い
動画が致命的にかくつく
初期状態で音量を均一にしてくれていない

という感じです。良い点は、検索やソートなどが、完全にブラウザのように扱えることです。しかし悪い点のこちらが大問題で、たとえばプレイリストを数十抱え込むとそれだけで閲覧性ががた落ちします。また、動画は動画として見ることができません。静止画を連続に流している程度のFPSです。以上のことから恒常的に使うことについては、iPodに収めれる範囲で、iTunesも使用可能といったところでしょうか。それ以上のものは、自分でカスタマイズしたプレーヤがはるかに勝ります。

しかしほかのプレーヤに無い魅力もあります。音楽を購入する人には最適なのかもしれませんし、曲を検索し、アーティストごとに振り分けを行ってくれることなどです。

Nike+レビュー

Nike+準備

さて、次はNike+のレビュー。

購入した2品
対応シューズが無いので、Nike+本体と、シューズ外側に止めるポーチを購入。

Nike+背面
背面はこんな感じ。こちらはNike+。アマゾネスな女性の採用が多いNikeです。

シューズ止め
シューズ止めは台湾製。一番良い評判でしたが、高い。1200円。

Nike+内容物
Nike+に含まれるものは4品。左上からNike+本体と、レシーバ、保証書です。背面にあるのは取り扱い説明書。CDはありませんでした。

分厚いマニュアル、Nike+は親指サイズよりやや大きい
マニュアルは分厚い。多言語使用のためでしたが、最初は注意書きで埋まっているのかと思いました。

Nike+は靴に入れることができないので、先ほどのポーチに入れます。

間違いの例
こちらから入れるのは間違い。赤を上にはしないでください。

正しい例
赤を奥に、スイッチが上にあるように入れます。きっつきつです。

あとはこれを靴にとめて走るだけ。それでは次にレシーバの装着。

増えたメニュー画面
メニュー画面が増えました。まさにNike。

体重の設定
最初に必要そうなのは体重の設定とレシーバの精度について。レシーバの精度については、僕は1回しか設定しませんでしたが、ランニング、ウォーキング、多くの設定をしたほうが精度が高いようです。

それでは走ってきます。結果はいかに。

ランニング後

ランニングから帰ってきました。ジャージのポケットに入れても落ちにくいように感じました。ただし付属のイヤホンでは音が聞こえにくいので、インナーホンを用意したほうがいいです。当たり前ですが走行時のiPod操作には気をつけてください。

ロードワーク結果
走った結果です。画像が見えにくくてすみませんが、表示されるのは距離とタイム、ペースと消費カロリーの4項目。使ってみて若干走行距離がさば読んでいるような気がしました。個人的には3km前後ではないかな、と思っています。

Naikeサービス画面
iTunes接続後、なんどか指示に従ううちに、サイトが展開されました。今回の走りっぷりが表示されています。最初のくぼみはストレッチ、次のくぼみは休憩のウォーキング時ですね。なるほど。

iTune Nike+メニュータブ
初めての使用の時に、今後のデータ蓄積には登録が必要といわれます。よくある情報を入力し、2ステップで登録完了。いったんiPodを外し、再接続をします。そしてiPodのタブから右端Nikeタブを選択。

登録後、増えたメニュー画面
登録完了。再接続し、メニュー画面が増えたのを確認しました。

ブログパーツも作れる
ブログパーツもいけるようです。それではソースコードを引っ張ってきます。


表示はこのようになります。これ、xhtmlに対応しているのかな。&は置き換えたけど。確認したらエラー吐きまくりでした。修正大変そうですね。ちなみに国内のソースでは見つからない上に、デザイナさんも直張りしてました。

他の問題として、Nike+のサイトは国外用に一度作られているためか、日本人にとっては的確なUIに思えませんでした。ブログパーツなどは「他人に公開する」から選択とは思えない......よね。

'08.07.13追記ということで書き換えてみました。 Nike+、xhtmlに対応したobject要素への書き換えの記事で詳しく解説しています。

あとがき

さて、iPodを購入からランニングをNike+で計測まで、さらっと流してみました。iPodは、視覚デザインが本当に素敵です。操作性はボタンが少ないためにどうしても難しいところもあるのですが、それを補う心地よい反応を返してくれます。MS信者だけど買ってよかったと思えました。しかしこの高額商品の元を取ることは容易ではありません。当面はこの音楽に乗って、月100kmを目標に走ろうと思います。

2008年7月13日

Nike+、xhtmlに対応したobject要素への書き換え

Nike+のブログパーツはobjectタグ使っているのにxhtmlには対応していません。今回はXHTML 1.0 Transitionalに対応させつつ、IE6.0やモダンブラウザでも動作するNike+ブログパーツへの変更方法です。

iframeやembedをobjectへ変更する方法は、過去記事のアマゾンアソシエイト、<iframe>を<object>にStickam、<embed>を<object>にでも解説しています。

実用範囲についての注意

方法は以下に示しますが、その前に注意書きを何点か。

  • XHTML 1.0 Transitionalについてのみの解説(Strictでも動くかも
  • ブログパーツの表示形式が異なるときはwidthやheightに注意
  • &の文字を文字実態参照(&amp;)、もしくは数値文字参照(&#38;)に置き換えること

'08.08.17追記CSSoffの状態で表示されないのを確認しました。原因はわからないです。。

実際の表示

今回は以下の表示形式に対応しています。

テンプレートと使用方法

テンプレートを貼り付けて起きます。

<object data="ここに表示されているurlが入ります"
	type="application/x-shockwave-flash" width="198" height="182" align="middle">
<param name="movie" value="ここに表示されているurlが入ります" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="wmode" value="transparent" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="FlashVars" value="FlashVarsのvalue値、人によって異なるはず"/>
</object>

使用する際には前述した"&"を書き換える注意事項を踏まえたうえで、表示されているurlに同じものを記述してください。ここには表示形式に関する情報が入ります。

FlashVarsのvalue値には、多分個人の識別番号(id)が入っているので、独自の値になるはずです。

変更方法について技術情報

objectにembedが入っていたりでわけのわからない元ソースです。そこでembedについて調べてみるのですが、なかなか的を得た情報が出てきません。もしかすると多くのブラウザに対応させるためにこういった書式なのかも知れませんね。

先ず、objectタグ内のid値について、"+"や" "は出現を許されていないのでidごと消します。

次にembedタグ内のsrc値とtype値をobjectに書きます。このとき、srcはdataの値として、typeはそのままコピペします。本来はこれで動くはずなんですが......あれ、表示できない。

もう一度objectタグに戻ってください。ここのcodebaseとclassidを丸ごと削除します。そうすると表示を確認できましたね。classid値は識別番号かと思いきや、どうやら必要ないようです。

後もう少しで完成です。embedを消すために、必要な値が他には無いか確認しましょう。bgcolorやwidth、heightは既に別に定義されています。そのほかの主要そうなものも定義されてますね。ということでembedと内包された値を丸ごと削除。するとテンプレートと同じになるはずです。

最後に&を記事の冒頭に書いたように、置換して終わりです。

あとがき

無理だと思ってあきらめるところだった今回の置換方法。表示が出来ないのはなかなかに困りました。

それよりもNike+ブログパーツは種類が多すぎるので絞ってもらいたいところです。

2008年7月17日

AIR:チュートリアル、ActionScriptとmxmlで記述するコツ

はじめに

AIRプログラミングをしていて、ActionScript(以下AS)を使ったチュートリアルは充実していてもmxmlとASを用いたものはなかなか見つかりませんでした。僕自身プログラミング自体初心者なので、いちいち四苦八苦しています。

ということで、備忘録もかねて、mxmlとASを用いたプログラミングのチュートリアルと、ありがちな間違いについての記事を書きたいと思います。

実行環境

過去に紹介した「AIR:Eclipseでmxmlをコンパイラできる環境を一から実装」と、「AIR:Eclipseでfcsh環境を実装」を前提に、EclipseとFlex3SDKを使います。

プロラムは、undo0530さんのドラッグ&ドロップ1 外からドラッグ | FlashでAIR作りたい人の日記の最後の段落、「ファイルですねわかります」をそのまま流用させてもらいます。そちらから入手してください。

Let's Programing

まずはASだけでコンパイル

まずは先ほどのソースコードが正常にコンパイルできることを確認しましょう。ファイルを作成します。Eclipseでファイルを新規作成、ファイル名は本家が「DandDtest.as」なので、2番目ということで「DandDtest2.as」としましょう。

ソースコードを貼り付けて保存してfcsh環境を立ち上げます。

mxmlc DandDtest2.as

でコンパイル。するとエラー。

(fcsh) mxmlc DandDtest2.as
fcsh: Assigned 1 as the compile target id
Loading configuration file C:\flex3sdk\frameworks\flex-config.xml
C:\flex\helloworld\src\DandDtest2.as: Error: A file found in a source-path 'DandDtest2' must have the same name as the class definition inside the file 'DandDtest'.

(fcsh) 

Javaでもそうですが、ファイル名とclass名、function名は一致させなければいけません。ファイル名は「DandDtest2.as」としたので、class名とfunction名も「DandDtest.as」にして再度コンパイル。

(fcsh) compile 1
Loading configuration file C:\flex3sdk\frameworks\flex-config.xml
Recompile: C:\flex\helloworld\src\DandDtest2.as
Reason: The source file wasn't fully compiled.
Files changed: 0 Files affected: 1
C:\flex\helloworld\src\DandDtest2.as(23): col: 36 Error: 型が見つからないか、コンパイル時定数ではありません : NativeDragEvent。

		private function onDragEnter(evt:NativeDragEvent) {
		                                 ^

C:\flex\helloworld\src\DandDtest2.as(30): col: 35 Error: 型が見つからないか、コンパイル時定数ではありません : NativeDragEvent。

		private function onDragDrop(evt:NativeDragEvent) {
		                                ^

(fcsh) 

今度もいい感じにエラー。ここで注目しなければいけないのは、元のサンプルは正しいのにもかかわらず、僕の環境ではエラーを吐いていることです。

共通しているエラー内容は、NativeDragEventが無いよ、です。しかしNativeDragEventは定義されています。それなのに間違っているのはなぜでしょうか。このNativeDragEventはFlex3SDKにAIRアプリケーション用として組み込まれています。リファレンスはこちら、NativeDragEvent - ActionScript 3.0 言語およびコンポーネントリファレンスガイドから。

これを読んでも僕は気がつかなかったわけですが、パブリック定数の項を見てください。定数の横に赤い三角のマークがありますよね。これはAIRのアプリケーションのみで使えますよ、という印です。

僕のコンパイル方法、「mxmlc DandDtest2.as」ではAIRアプリケーションではなく、Flashになってしまっています。ですからここでのコンパイルは

amxmlc DandDtest2.as

でAIRアプリケーションとしてコンパイルする必要があります。しかしfcsh環境では、デフォルトではamxmlcのコンパイルに対応していません。fcshでのamxmlcコマンドはfcshでApolloを高速コンパイル(参考リンク集のおまけ付き) | てっく煮ブログで実装方法を解説しています。今回はfcshを使わない方法でいきます。

「AIR:Eclipseでmxmlをコンパイラできる環境を一から実装」こちらの記事と同様に、Eclipseの実行>外部ツールから新たに実行プログラムを登録しましょう。

新規作成したロケーションには

C:\flex3sdk\bin\amxmlc.bat

を登録、作業ディレクトリには各人に合わせたものを、引数には

DandDtest2.as

と、コンパイルするファイルを指定してください。そしてコンパイルすると、以下のように表示されます。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.as(14): col: 25 Warning: return value for function 'init' に型宣言がありません。

		private function init() {
		                      ^

C:\flex\helloworld\src\DandDtest2.as(23): col: 51 Warning: return value for function 'onDragEnter' に型宣言がありません。

		private function onDragEnter(evt:NativeDragEvent) {
		                                                ^

C:\flex\helloworld\src\DandDtest2.as(30): col: 50 Warning: return value for function 'onDragDrop' に型宣言がありません。

		private function onDragDrop(evt:NativeDragEvent) {
		                                               ^

C:\flex\helloworld\src\DandDtest2.swf (1016 bytes)

Eclipseでは、このメッセージが赤色で表示されます。Errorは出ていませんが、Warningが出ています。見えにくいので、型宣言を忘れないようにすると、気持ち間違えにくいプログラミングが出来ると思います。それぞれの()のあとに「:void」をつけてコンパイル。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.swf (1027 bytes)

コンパイル成功。しかしこれでは実行できません。出力されたファイルを実行すると、

VerifyError: Error #1014: クラス flash.events::NativeDragEvent が見つかりません。

	at global$init()

amxmlcコマンドでコンパイルして出力されるswfファイルは、AIRアプリケーションのための中間段階のファイルです。実際に実行するためにはAIRアプリケーションとしてパッケージングしなければいけません。

とはいっても、いちいち動作確認の度にやるのは馬鹿らしい話です。そこで登場するのがadlコマンドです。これはデバッグ用のコマンドで、一度そのプログラムに対応させたものを作成しておけば、amxmlcコマンドで中間ファイルとして出力されたswfを実際のアプリケーションとして動作させることができます。

新しいファイルを作成し、それの名前を「DandDtest2.xml」としてください。そしてファイルの中身を、

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0" minimumPatchLevel="1047">
	<id>net.libertatem.org.DandDtest2</id>
	<name>DandDtest2</name>
	<version>1.0</version>
	<filename>DandDtest2</filename>
	<description>DandDtest2 application</description>
	<copyright>(c) 2008 Libertas</copyright>
	<initialWindow>
		<content>DandDtest2.swf</content>
		<title>DandDtest2</title>
		<systemChrome>standard</systemChrome>
		<transparent>false</transparent>
		<visible>true</visible>
		<minimizable>true</minimizable>
		<maximizable>true</maximizable>
		<resizable>true</resizable>
		<x>150</x>
		<y>150</y>
	</initialWindow>
	<installFolder>libertas/DandDtest2</installFolder>
	<programMenuFolder>libertas/DandDtest2.as</programMenuFolder>
	<customUpdateUI>false</customUpdateUI>
	<allowBrowserInvocation>false</allowBrowserInvocation>
</application>

コピペして保存。このファイルは詳しい説明は省略します。adfファイルというもので、プログラムのウィンドウサイズなどを指定しています。DandDtest2.swfが中段で指定されているところに注目してください。

それではまたEclipseの実行>外部ツールから新たに実行プログラムを登録しましょう。新規作成したロケーションには

C:\flex3sdk\bin\adl.exe

を登録、作業ディレクトリには各人に合わせたものを、引数には

DandDtest2.xml

としてLet's実行です。そうするとウィンドウが現れましたね。この白い四角になにかファイルをドラック&ドロップしてみてください。そうするとEclipseのコンソールウィンドウに文字が現れました。traceは本来デバッグなどに使用する出力コマンドです。僕の環境では文字化けしてしまっていますが、"ファイルですね、わかります"と出力されているはずです。

AS+mxmlでコンパイル

やっとmxmlです。それではmxmlファイルを「DandDtest2.mxml」で新しく作成してください。そして以下をコピぺ。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute">
	<mx:Script source="DandDtest2.as" />
</mx:Application>

さて、これでmxmlからASを呼び出しています。実行できるはず......!と、その前に、amxmlcコマンドの対象を新たなファイルにするために、引数の値を書き換えておきましょう。「DandDtest2.as」から「DandDtest2.mxml」です。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.as(1): col: 9 Error: パッケージをネストすることはできません。

package {
        ^

Why何故......。ではここでは何も考えずに消してみましょう。出来ないなら消せばいい。「DandDtest2.as」のpackageを{}と一緒に消しましょう。これでどうだとコンパイル。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.as(6): col: 9 Error: クラスをネストすることはできません。

	public class DandDtest2 extends Sprite {
	       ^

shit何故......。不安なんか気にせずに消してみましょう。出来ないなら消せばいい。「DandDtest2.as」のclassの行を{}と一緒に消しましょう。これでどうだとコンパイル。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.as(10): col: 20: Error: Multiple constructor definitions found. Constructor may not be defined in <Script/> code.

		public function DandDtest2() {
		                 ^

......もう言わなくてもわかりますね。消し消し~。

Loading configuration file C:\flex3sdk\frameworks\air-config.xml
C:\flex\helloworld\src\DandDtest2.swf (157260 bytes)

やった!コンパイルは成功です!

何でネストできないの?

さまざまな記事で触れられていますが、mxmlからASを呼び出したときは、既にpackageとclassは呼び出されています。ですからファイルにも書かれていると二重に呼び出されたことになります。そのために消す必要があります。

これは仕様ですので今後気をつけてください。ASの書き始めは見た目C言語のようになる、ということです。

完成したかな?

ここまでのASがどうなっているかを下に示します。

	import flash.desktop.*;
	import flash.display.*;
	import flash.events.*;


		private var Yohaku:Number = 20;
		private var canvas:Sprite = new Sprite();


			init();


		private function init():void {
			canvas.graphics.beginFill(0xeeeeee);
			canvas.graphics.drawRect(Yohaku,Yohaku,stage.stageWidth - Yohaku*2, stage.stageHeight - Yohaku*2);
			canvas.graphics.endFill();
			addChild(canvas);
			canvas.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,onDragEnter);
			canvas.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,onDragDrop);
		}

		private function onDragEnter(evt:NativeDragEvent):void {
			var data:Clipboard = evt.clipboard;
			if (data.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)) {
				NativeDragManager.acceptDragDrop(canvas);
			}
		}

		private function onDragDrop(evt:NativeDragEvent):void {
			trace("ファイルですね、わかります");
		}

adlを呼び出しましょう。コンパイルが成功するはずです。

やった~コンパイル成功。でも、あれ、白い四角が表示されていない?

AS+mxmlでのプログラミングで間違いやすいポイント

継承

AIRアプリケーションではUIComponentはSpriteを継承しているためです。これの取り組みについてはこちらの記事に詳しく書かれています。Flex 3で直接Spriteを使用することはできない? - Memorize -

この行に注目してください。

		private var canvas:Sprite = new Sprite();

ここでSpriteが使われていますね。これを以下のようにします。

		private var canvas:UIComponent = new UIComponent();

このように定義が変わっていることがあります。コンパイルが通っても正常動作するとは限らないので用心してください。

mx.core

AIRアプリケーションとして、インポートをいつも求められるのがこれです。先頭行に追加してください。

import mx.core.*;

必ず書くぐらいの認識で問題ないです。

mxmlから呼び出そう

さて、本来のASで以下の部分がありましたね。

		public function DandDtest() {
			init();
		}

ここから「init()」を呼び出していましたが、先ほど消してしまったので機能していません。ですから残された「init()」も消してしまいましょう。

変わりにmxmlから呼び出す必要があります。次の要素を「mx:Application」タグ内に定義してください。

 applicationComplete="init();"

これで完成です。

完成!出来上がった3つのファイル

完成しました!いや、記述ミスがあったら完成していないかもしれません。困ったね。

完成したファイルは以下のようになります。

DandDtest2.mxml

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="init();"
	layout="absolute">
	<mx:Script source="DandDtest2.as" />
</mx:Application>

DandDtest2.as

import mx.core.*;
	import flash.desktop.*;
	import flash.display.*;
	import flash.events.*;


		private var Yohaku:Number = 20;
		private var canvas:UIComponent = new UIComponent();


		private function init():void {
			canvas.graphics.beginFill(0xeeeeee);
			canvas.graphics.drawRect(Yohaku,Yohaku,stage.stageWidth - Yohaku*2, stage.stageHeight - Yohaku*2);
			canvas.graphics.endFill();
			addChild(canvas);
			canvas.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,onDragEnter);
			canvas.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,onDragDrop);
		}

		private function onDragEnter(evt:NativeDragEvent):void {
			var data:Clipboard = evt.clipboard;
			if (data.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)) {
				NativeDragManager.acceptDragDrop(canvas);
			}
		}

		private function onDragDrop(evt:NativeDragEvent):void {
			trace("ファイルですね、わかります");
		}


DandDtest2.xml

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0" minimumPatchLevel="1047">
	<id>net.libertatem.org.DandDtest2</id>
	<name>DandDtest2</name>
	<version>1.0</version>
	<filename>DandDtest2</filename>
	<description>DandDtest2 application</description>
	<copyright>(c) 2008 Libertas</copyright>
	<initialWindow>
		<content>DandDtest2.swf</content>
		<title>DandDtest2</title>
		<systemChrome>standard</systemChrome>
		<transparent>false</transparent>
		<visible>true</visible>
		<minimizable>true</minimizable>
		<maximizable>true</maximizable>
		<resizable>true</resizable>
		<x>150</x>
		<y>150</y>
	</initialWindow>
	<installFolder>libertas/DandDtest2</installFolder>
	<programMenuFolder>libertas/DandDtest2.as</programMenuFolder>
	<customUpdateUI>false</customUpdateUI>
	<allowBrowserInvocation>false</allowBrowserInvocation>
</application>
</pre>

あとがき

用語とか高確率で間違っていると思います。調べながらやってみましたが、そのかわり初心者の僕らしいチュートリアルにするべく、慣れていない人には気になるポイントを重点的に取り上げてみました。誰かに聞けないとめちゃくちゃ解決に時間かかりますからね......

記述ミスの確認もしましたが、何かありましたらコメントお願いします。

2008年7月29日

Web:カンコさん運営「HariHari」のサイト制作

カンコさん運営のHariHariのサイトを制作しました。今回は制作を経て所感。

フリーサウンドを手がけているHariHariのトップは以下のリンクから。
HariHarihttp://kanko.ninja-web.net/

HariHariのトップ一部切り出し
サイトトップはこんな感じ。相手方のサイトの印象以前にテンプレート的に考案していたので、カンコ、という冬を連想させる配色には至れていません。

で、今回は小難しいデザインワークや、仕様上記をつけたところなどの技術的な話はありません。多少の面識を持つカンコさんのサイト紹介と、制作秘話についてです。

HariHari

カンコさんの作られたサイトHariHariは、なんでもはりはり鍋、のはりはりらしいです。だからといって鍋のサイトにしてもおかしいので、とりあえずはハンドメイドのような親しみやすい雰囲気を出そうとデザインしました。

なんだか2000年以前の海外の配色に思えます。あと何がハンドメイドらしいかって、色の不一致がげふんげふん。個人的な印象は、何もないところに放り出された感じ。

話を戻してHariHari。Soundのリンクから音楽を視聴、ダウンロードできます。カンコさんは若い頃音楽をやられていたようなので、曲作りには不便を感じていないようでうらやましいです。ここの「天気雨」はお気に入りです。

初期のフリーノベルゲームが好きなようなので、その頃を連想させるmidiサウンドは古き良きあの感覚と、現代に合わせられた音作りをしてくれそうです。サイト制作の件もあり、ノベルゲーム制作の際にはサウンドを用意してくれるとのこと。やったね!

2chでの作曲経験もあるカンコさんは、HariHari更新をゆっくりと続けるようなので、ツボにはまるサウンドを心待ちにしています。

制作秘話

秘密にするもなにも、サイト制作に当たった日数は一日だけ。自己への挑戦でした。

現状、Libertasも何もデザインされていない状態です。これに一区切りつけるために、(このニュアンスの許可はもらっています)習作として制作しました。すると身についている知識から漠然としているところまでがわかるわかる!実装に不安なところは妥協したこともあり、htmlやcssは少しも詰まりませんでした。デザインのほうがはるかに難しいです。

確かに、よくよく考えてみるとcssでのレイアウトは、経験の無い方ではホームページビルダーを使ったとしても難しいものに思えます。その分喜んでもらえました。やったね!

技術的なことを一つ言うとすれば、CMSを使わないなら、管理する人のhtml理解度に合わせて制作することも必要ですね。多少のバグを包容できるシンプルなサイトが重要そうです。

一日の集中で作れて、それがオリジナル。多少野暮ったくてもそれは嬉しいものに思えます。機会があったら別の方のサイトも作りたいなぁ。最も仕事じゃないので主観混ぜまくりで、クライアントほったらかしですが。興味のある方は連絡ください。

そんなこんなのサイト制作。僕のほうからもありがとうございました。

About 2008年7月

2008年7月にブログ「Libertas」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年6月です。

次のアーカイブは2008年8月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
body>