neocomplcache 導入時に ActionScript の補完がすべて小文字になってしまう

actionscript.vimneocomplcache を同時に導入すると、キーワード補完が全て小文字になる不具合が発生します。

これは actionscript.vim 内に書かれている、

syn case ignore

この一文が問題のようです (neocomplcacheWiki より)。

使いづらいので修正しました。

修正方法

  1. neocomplcache のキャッシュ ($HOME/.neocon/syntax_cache/actionscript) を消す
  2. actionscript.vim 内の "syn case ignore" をコメントアウトする

これで正しく大文字小文字込みで補完されるようになりました。

「さめがめ」の Flash ゲームを作りました

「さめがめ」の Flash ゲームを作りました。暇つぶしにどうぞ

ルール

  • 2 つ以上つながっているブロックを消せる
  • つながっている数が多いほど得点が高い
  • 消せなくなった時点で残っているブロックが少ないとボーナス得点が入る

スクリーンショット

フォントは 04 さんのビットマップフォントを使用しています。

userenv.info のデザイン変更と機能追加を行いました

Flash Player やブラウザなどのバージョンを確認できるサイト userenv.info のデザイン変更と機能追加を行いました。

スクリーンショット

追加した機能

  • ブラウザ (描画領域) のサイズ表示
  • 表示内容をクリップボードにコピーする機能
  • 表示内容をメール本文に貼り付ける機能 (メーラが起動します)

Flash コンテンツのデバッグや、制作中のサイトをお客様に見せたときに「動かない!」と言われた際などに当サイトをご利用ください。

iPhone 用のごみの日確認 Web アプリ「ごみの日確認くん」を作りました

iPhone 向けのごみの日確認 Web アプリケーション「ごみの日確認くん」を作りました。「第2月曜日」のような細かい指定ができますので「あれ?今日は第何月曜だっけ?」といった確認が不要になります。ご活用ください。

スクリーンショット

使い方

  1. 初期状態ではサンプルのスケジュールが設定されていますので、個々の「x」アイコンを押すか設定ページ下部の「初期化する」ボタンを押して設定を削除します。
  2. 「スケジュールを追加する」ボタンで、収集スケジュールを追加します。

iPhone 用の家計簿 Web アプリ「家計ぽ」を作りました

iPhone 向けの家計簿 Web アプリケーション「家計ぽ」を作りました。

更新履歴

  • 2011.03.03 日付が一桁の際に送信できなかった問題を修正しました。

スクリーンショット

「家計ぽ」を使うまでの準備

「家計ぽ」は、データベースに Google ドキュメントスプレッドシートを利用しています。「家計ぽ」のサーバに入力されたデータが保存されることはありません。
ただし、使うまでには幾つかのセットアップ作業が必要です。

PC でのセットアップ

  1. まず最初に、テンプレートの家計簿シートGoogle ドキュメントにアップロードします。
  2. アップロード後の家計簿シートは、言語設定などが米国になっていますので「ファイル」→「スプレッドシートの設定」から、日本に変更します。

ここまでが PC でのセットアップです。
テンプレートのスプレッドシート単体でも家計簿として十分に機能しますので、Google ドキュメントでのみ利用いただくこともできます。 すでに入力されているサンプルのデータをコピー&ペーストすることで、集計などの値も自動的に反映されます。

「家計ぽ」の位置づけは、スプレッドシートへの入力支援アプリケーションとなっています。

iPhone でのセットアップ

次に iPhone 側のセットアップ方法です。

  1. iPhone から Google ドキュメントにアクセスし、先ほどアップロードした家計簿シートを開きます。
  2. 家計簿シートの URL をコピーします。
  3. 「家計ぽ」にアクセスします。Google の認証画面が表示されますので「アクセスを許可」ボタンを押します。
  4. 設定画面の「シートの URL」に、コピーした URL をペースとして「シートのキーを設定する」ボタンを押します。

ここまでが iPhone でのセットアップです。

「家計簿をつけたいけれどなんか面倒くさそう」という方は、これを機に「家計ぽ」で家計簿デビューしてみてはいかがでしょうか!

スクリプトローダ JohnnyDepp.js を書きました

JohnnyDepp.js という JavaScriptスクリプトローダを書いてみました。依存性 (DEPendency) を解決するところから JohnnyDEPp.js です。名前だけはとてもクールだと思います。

一点注意。世の中には、LABjs をはじめ、ControlJSHead JS など JavaScript ローダは沢山ありますので、プロダクションコードではこれらのライブラリを使ってください。

また、スクリプトローダに関しては賛否が色々あると思います。私の経験上、スクリプトローダで複数の JavaScript ファイルを読み込むよりは、プロダクション環境にデプロイする際に minify して 1 つのファイルにチャンクするのが手堅いと思います。

…それでは、JohnnyDepp.js の説明に入ります。

JohnnyDepp.js

デモページの解説

上記のデモページでは、幾つかの JavaScript ファイルを使用していますが、HTML には、ライブラリを除くと app/Application.js のみ指定されています。lib/Application.js を起点として、JohnnyDepp.js が幾つかの JavaScript ファイルを読み込んだ後に、最終的に「地獄のミサワ」の、ジョニー・デップに激似な櫻井 (29) の画像がランダムで表示されます。

HTML

<script type="text/javascript" src="Processor.js"></script>
<script type="text/javascript" src="JohnnyDepp.js"></script>
<script type="text/javascript" src="app/Application.js"></script>

app/Application.js

//this is app/Application.js
//コンテキストの指定
JD.setContext("app/Application.js");
JD.require(
  "exlib/jquery-1.5.min.js",
  "lib/UI.js",
  "lib/config/Config.js",
  //コールバック関数
  function () {
    //"depps" 配列は lib/config/Config.js で定義されている
    //"getRandomInt" 関数は lib/util/MathUtil.js で定義されている
    //lib/util/MathUtil.js は lib/UI.js で require されている
    //本来は Application.js が require("lib/util/MathUtil.js") すべき
    var src = depps[getRandomInt(depps.length)];

    //"renderDepp" 関数は lib/UI.js で定義されている
    $(function() {
      renderDepp(src);
    });
  }
);

まず、JD.setContext の引数にそのファイル自身の、HTML からの相対パスを指定します。これで、読み込み時のパスのルートが決まります。ちょっとダサいです。

次に、JD.require で、そのコードに必要な JavaScript ファイルのパスを指定します。Application.js は jQuery、lib/config/Config.js、lib/UI.js を必要とします。JohnnyDepp.js は JavaScript ファイルを並列処理で読み込みます (並列処理は自身がないコードです)。引数の最後には、読み込み完了時の callback 関数を指定します。

依存性を解決する

サンプルコード lib/UI.js の中身は下記のようになっています。コンテキストは Application.js で指定したのでここでは必要ありません。つまり、require で指定するパスは Application.js からの相対パスとなっています。ちょっとダサいです。

//this is UI.js
JD.require(
  "exlib/jquery-1.5.min.js",
  "lib/config/Config.js",
  "lib/util/MathUtil.js",
  function () {
    //callback
  }
);

Application.js は lib/UI.js を必要としますが、lib/UI.js がさらに lib/util/MathUtil.js を必要とする場合、JohnnyDepp.js は、よしなに依存関係を解決します。サブモジュールの依存関係ツリーをすべて解決した後に Application.js の callback 関数が呼ばれます (なぜか上手く動いています)。

一度読み込んだスクリプトは読み込まない

また、一度読み込まれた JavaScript ファイルは読み込みません。lib/UI.js 内でも jQuery が指定されていますが、jQuery はすでに読み込み済みなので、スクリプトの読み込みは実行されません。

…と、こんな感じのライブラリです。名前だけはとてもクールだと思います。ジョニー・デップ主演のパイレーツ・オブ・カリビアンの続編も要チェック。