<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Xlune::Blog</title>
  <subtitle>フロントエンド/サーバーサイドの技術ソースまとめ、、、</subtitle>
  <id>http://blog.xlune.com/</id>
  <link href="http://blog.xlune.com/"/>
  <link href="http://blog.xlune.com/index.xml" rel="self"/>
  <updated>2013-11-03T05:20:00+09:00</updated>
  <author>
    <name>Xlune</name>
  </author>
  <entry>
    <title>BlogをMTからMiddleman+S3にしたよ</title>
    <link rel="alternate" href="http://blog.xlune.com/2013/11/blogmove.html"/>
    <id>http://blog.xlune.com/2013/11/blogmove.html</id>
    <published>2013-11-03T05:20:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;

&lt;h3 id="blog"&gt;Blog仕分けします&lt;/h3&gt;
&lt;p&gt;さすがに安いvpsでも、こんな更新もしないBlog用にサーバ腐らせておくのはもったいない事に気付いた、、、さっき。&lt;/p&gt;

&lt;p&gt;なんか、他にやらなきゃいけないことが沢山ある気がするけど、そう思い立ってしまったので仕方ない。&lt;br /&gt;
やらなきゃいけない事は、やらなくていいことの後にやればいいじゃん。&lt;br /&gt;
どうせやらなきゃいけないんだからー&lt;/p&gt;

&lt;h3 id="middleman"&gt;Middlemanで記事生成&lt;/h3&gt;
&lt;p&gt;ローカルで記事生成するために、軽量なブログツールをローカルサーバに入れようかと思ったんだけど、Middlemanに公式のブログ機能拡張があったのを思い出したので、それで行くことにした。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://middlemanapp.com/blogging/"&gt;Middleman: Blogging&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;&lt;code&gt;$ mkdir blog
$ cd blog
$ bundle init
$ vim Gemfile
+ gem "unf"
+ gem "middleman"
+ gem "middleman-blog"
+ gem "middleman-s3_sync"
$ bundle install --path=vendor/bundle
$ bundle exec middleman init . --template=blog --js_dir=js --css_dir=css
$ bundle exec middleman
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;な感じで足場を作ったら、テンプレ設定や記事移行を行って完了。&lt;/p&gt;

&lt;p&gt;ちなみに手動で記事移した。&lt;br /&gt;
記事数少なかったのと、古い記事は軒並み捨てて問題ない感じのばっかだったから。&lt;/p&gt;

&lt;h3 id="github"&gt;GitHubで記事管理&lt;/h3&gt;
&lt;p&gt;記事というか、MiddlemanプロジェクトをGitHubで管理しとく。しかも、プライベートで。&lt;br /&gt;
まぁ、プライベートリポジトリが余ってるのもあるんだけど、公開しとくようなもんでもないかなと。&lt;/p&gt;

&lt;p&gt;あとせっかくだから、&lt;a href="http://about.travis-ci.org/docs/user/deployment/s3/"&gt;Travis CI使ってS3に自動デプロイ&lt;/a&gt;してもらおうかと思って設定を調べてたんだけど、Travis CIってプライベートリポジトリの場合は有料なの思い出した。&lt;br /&gt;
それで、おいくらですかーと料金見に行ったら$129/月とか書いてあって、鼻水出たので諦めました。&lt;/p&gt;

&lt;p&gt;さっきしれーっと入れてた、"middleman-s3_sync"はこういう事情からでした。&lt;/p&gt;

&lt;h3 id="s3web"&gt;S3でWebホスティング&lt;/h3&gt;
&lt;p&gt;ちょっと、&lt;a href="http://pages.github.com/"&gt;GitHub Pages&lt;/a&gt;でホスティングしてもらうのもいいかなと思ったんだけど、なんか用途が違う気がしたので、S3のWebホスティングを利用することにしました。&lt;/p&gt;

&lt;p&gt;設定方法は下記の記事がとても丁寧です。&lt;br /&gt;
&lt;a href="http://blog.qnyp.com/2013/05/21/middleman-sync/"&gt;Middlemanで生成したサイトをAmazon S3で運用する - QNYP Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ただ、"middleman-sync"がうまく動かなかったので、&lt;a href="https://github.com/fredjean/middleman-s3_sync"&gt;"middleman-s3_sync"&lt;/a&gt;を使いました。&lt;br /&gt;
これでコマンド一発でビルドファイルがS3にデプロイされるようになった。便利。&lt;/p&gt;

&lt;h3 id="section"&gt;まとめ&lt;/h3&gt;
&lt;p&gt;こうしてみると、世の中すげー便利になってんなーって気になりました。&lt;br /&gt;
おわり。&lt;/p&gt;

&lt;p&gt;ーー&lt;br /&gt;
さぁ、やらなきゃいけないことやるか、、、&lt;/p&gt;

&lt;!-- /article --&gt;

</content>
  </entry>
  <entry>
    <title>非同期ページ遷移なjQueryプラグイン書いたよ</title>
    <link rel="alternate" href="http://blog.xlune.com/2011/05/jquerysmartpage.html"/>
    <id>http://blog.xlune.com/2011/05/jquerysmartpage.html</id>
    <published>2011-05-15T21:07:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;
&lt;h3&gt;非同期ページ(部分)遷移jQueryプラグイン(jquery.smartPage.js)&lt;/h3&gt;
&lt;p class="mb10"&gt;
元々jQueryは基本的な非同期ページ遷移機能は付いてんだけど、もうちょっと機能を追加しつつ、汎用性を持たせたものが欲しいなーと思ってとりあえず書いてはみました。
&lt;/p&gt;
&lt;p class="mb10"&gt;
ステータスとしては、「書いたよ」じゃなくて「書き始めた」けど限が無さそうなので、自分のサイトで使える程度でいいや、、、です。
&lt;/p&gt;
&lt;p class="mb10"&gt;
html5のpushState(pjax)と"#!"を利用したロケーションハッシュによる非同期ページ遷移の両方を実装したモノを目指してます。非対応(IEとか)の場合は普通に同期遷移します。
&lt;/p&gt;
&lt;p class="mb30"&gt;
非同期ソースに、"script"タグがあったり、"document.write"の記述があっても、なるべく表示を再現するよう試みますよー。
&lt;/p&gt;

&lt;h3&gt;jquery.smartPageのオプション/コード&lt;/h3&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=M0sTMe22"&gt;&lt;/script&gt;

&lt;h3&gt;Download&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="https://github.com/xlune/jQuery-SmartPage-Plugin"&gt;github&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/xlune/jQuery-SmartPage-Plugin/archive/master.zip"&gt;zip file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="mb30"&gt;利用には、&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;本体が必要です。別途読み込んでください。&lt;/p&gt;

&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p class="mb10"&gt;
なんか久しぶりにjQueryを見てDeferredとか、新しい機能をうまく使わなきゃいけないなーとか思ったけど、使いこなせませんでした。
&lt;/p&gt;
&lt;p class="mb10"&gt;
Deferredにキャンセル機能がほしい、_Deferredにはあるのに、、、Promiseにrejectがほしい、Deferredにはあるのに。。。とか歯がゆい感じになったので早々に諦めました。
&lt;/p&gt;
&lt;p class="mb30"&gt;
もちろん、状態を外部からいじられないようにカプセル化するのは重要なことなんだと思います。。。
&lt;/p&gt;
&lt;p class="mb10"&gt;
--&lt;br /&gt;
Chrome Web Storeのアプリ内課金とかが気になる、、、
&lt;/p&gt;
&lt;!-- /article --&gt;

</content>
  </entry>
  <entry>
    <title>【３】Cubeで遊ぼう！ 経路探索編 - はじめてのthree.js</title>
    <link rel="alternate" href="http://blog.xlune.com/2011/04/threejs-cube-3.html"/>
    <id>http://blog.xlune.com/2011/04/threejs-cube-3.html</id>
    <published>2011-04-24T07:42:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;
&lt;h3&gt;はじめに&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;img src="http://blog.xlune.com/up_images/20110424_001.jpg" width="690" height="280" alt="" /&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;前回の記事&lt;/a&gt;では&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js&lt;/a&gt;のCubeを迷路内で歩かせるものを作りました。&lt;/p&gt;
&lt;p class="mb10"&gt;今回は別パターンの移動方法、経路探索を利用したマウスクリックベースの移動デモをやってみます。&lt;/p&gt;
&lt;p class="mb10"&gt;下記は、今回用に書いたJSコードです。その他汎用ライブラリと合わせて読み込んでください。&lt;/p&gt;
&lt;ul class="mb30"&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/js/FieldGenerator.js"&gt;FieldGenerator.js&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/js/FieldStage.js"&gt;FieldStage.js&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/js/MrCube.js"&gt;MrCube.js&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/js/RouteSearch.js"&gt;RouteSearch.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;フィールド生成&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square001.html"&gt;&lt;img src="http://blog.xlune.com/up_images/20110424_002.jpg" width="690" height="280" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;前回&lt;/a&gt;までは迷路が舞台でしたが、今回はマウスクリックベースの移動なので、戦略ゲームのようなフィールドを用意することにしました。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square001.html"&gt;Square_001 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=2PyXL1Cb"&gt;&lt;/script&gt;
&lt;p class="mb30"&gt;マウスドラッグでフィールドの回転、マウスホイールでズームが行えます。&lt;/p&gt;


&lt;h3&gt;マウスのヒット判定&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square002.html"&gt;&lt;img src="http://blog.xlune.com/up_images/20110424_003.jpg" width="690" height="280" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;まずやらなければいけないのは、フィールドのどこをクリックしているかを判定することです。&lt;/p&gt;
&lt;p class="mb10"&gt;とりあえず、それぞれのブロックの上にクリック対象となるPlaneオブジェクトを敷き詰めました。マウスがそれにヒットすると、表示/非表示処理が行われます。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square002.html"&gt;Square_002 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=3yQG8s9j"&gt;&lt;/script&gt;
&lt;p class="mb30"&gt;現状の&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js&lt;/a&gt;では、オブジェクトにイベントを登録する手法はなさそうです。カメラ位置/アングルと表示領域のマウス位置などから3D計算によってヒット判定を行います。また、r39からColliderによる衝突判定ライブラリも追加されているようなので、オブジェクト同士のヒット判定も含め、ある程度簡単になってるのかもしれません。&lt;/p&gt;



&lt;h3&gt;Cube君の投入&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square003.html"&gt;&lt;img src="http://blog.xlune.com/up_images/20110424_004.jpg" width="690" height="280" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;経路探索の前に、&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;前回&lt;/a&gt;と同じ矢印キーで動くCubeを投入します。段差要素がある以外は、前回とほぼ同じものです。&lt;/p&gt;
&lt;p class="mb10"&gt;ここでCube君の動きの微調整を行って、あとは経路探索実装を残すのみです。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square003.html"&gt;Square_003 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=Q4VXAmDZ"&gt;&lt;/script&gt;
&lt;p class="mb30"&gt;今回は、WebGL寄りのデモにして、Cube君を光らせてみました。canvasの方でもライト設定はできますが、重くてなかなかに使いづらいので、canvasの方はライト反射をオフってます。&lt;/p&gt;


&lt;h3&gt;経路探索の実装&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square004.html"&gt;&lt;img src="http://blog.xlune.com/up_images/20110424_005.jpg" width="690" height="280" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;経路探索のアルゴリズムは&lt;a href="http://ja.wikipedia.org/wiki/A*"&gt;A*(A-star)&lt;/a&gt;を利用しました。wikiにある&amp;quot;アルゴリズムの流れ&amp;quot;をそのまま&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/js/RouteSearch.js"&gt;JSコード&lt;/a&gt;に起こしただけになります。&lt;/p&gt;
&lt;p class="mb10"&gt;経路探索用のライブラリはいっぱい落ちてますが、それほど長いコードにならないので自分専用に作ったほうが融通が効いて便利な気がしますね。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/square-three-js/square004.html"&gt;Square_004 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=GaC6xKyK"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;Cube君(正確には足元のパネル)をクリックすると、移動可能領域パネルが表示されます。そこから移動したい場所をクリックすると移動を開始しますよー。&lt;br /&gt;戦略ゲームでよく見る移動方式になりましたね。&lt;/p&gt;
&lt;p class="mb30"&gt;移動ルールは、赤いブロックに侵入できない事と、段差は一段差までしか超えられない事となってます。そういうブロックはちゃんと迂回するか確認してみましょう。&lt;/p&gt;


&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p class="mb10"&gt;firefox4だとメチャメチャ重いんですけど、、、chromeが速過ぎるのだろうか。。。まぁ、スクリプトちゃんと書けば速くなるのかも。&lt;/p&gt;
&lt;p class="mb20"&gt;&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js本家デモ&lt;/a&gt;のクオリティに全然近づけない感じがしてる、やっぱり3Dの知識が必要なようですねぇ。&lt;/p&gt;
&lt;p class="mb30"&gt;まー、クオリティは気にせずに、次回は今回までにやったことを利用しつつ、facebookアプリ(ゲーム)を作っていきたいと思いますー。&lt;/p&gt;

&lt;ul class="mb30"&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube.html"&gt;Cubeで遊ぼう！ 迷路生成編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;Cubeで遊ぼう！ Tweenアニメーション編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_3.html"&gt;Cubeで遊ぼう！ 経路探索編&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;

&lt;p&gt;--&lt;br /&gt;
ソーシャルアプリでのnode.js実績が気になる、、、GAEでpythonにした方がいいかな。。。
&lt;/p&gt;
&lt;!-- /article --&gt;

</content>
  </entry>
  <entry>
    <title>【２】Cubeで遊ぼう！ Tweenアニメーション編 - はじめてのthree.js</title>
    <link rel="alternate" href="http://blog.xlune.com/2011/04/threejs-cube-2.html"/>
    <id>http://blog.xlune.com/2011/04/threejs-cube-2.html</id>
    <published>2011-04-18T12:33:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;
&lt;h3&gt;はじめに&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;img src="http://blog.xlune.com/up_images/20110418_001.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube.html"&gt;前回の記事&lt;/a&gt;では&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js&lt;/a&gt;のCubeを使って迷路データを3Dで書きだすまでをやりました。&lt;/p&gt;
&lt;p class="mb30"&gt;今回はその迷路の中を歩きまわるCube君を投入していきますよー。&lt;/p&gt;
&lt;p class="mb10"&gt;・・・その前に、JSコードがかさばるので前回分のコードは最適化して外部ファイルにしてます。事前に読み込んでください。&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/js/Maze.js"&gt;Maze.js&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/js/Stage.js"&gt;Stage.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="mb10"&gt;そして下記が、今回の開始時のスクリプトになります。&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=KAPZgApD"&gt;&lt;/script&gt;
&lt;p class="mb10"&gt;その他の外部ファイルは&lt;a href="http://blog.xlune.com/2011/04/threejs_cube.html"&gt;前回&lt;/a&gt;とほぼ同じですが "RequestAnimationFrame.js" だけ外してあります。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul class="mb30"&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube001.html"&gt;Cube_001 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube001.html#nowebgl"&gt;Cube_001 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;配置と移動&lt;/h3&gt;
&lt;p class="mb10"&gt;壁と同じ要領で、Cubeを作って開始位置に設置します。また、矢印キーで上下左右に移動する実装もここで行っています。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube002.html"&gt;Cube_002 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube002.html#nowebgl"&gt;Cube_002 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=vGPSAQmU"&gt;&lt;/script&gt;
&lt;p class="mb30"&gt;上下左右の移動可否は迷路データと照らし合わせて、キーが押されるたびに毎回判定しています。ソース内のCubeクラスがここでのメインコードになります。&lt;/p&gt;



&lt;h3&gt;Tweenアニメーションさせてみる&lt;/h3&gt;
&lt;p class="mb10"&gt;ものすごく淡白な動きを見せるCube君ですが、やっぱりしっかりと動いている表現が欲しいですよね。ということでTweenアニメーションを実装します。&lt;/p&gt;
&lt;p class="mb10"&gt;TweenアニメーションをさせるにはTweenライブラリを利用するのが手っ取り早いです。有名どころの汎用ライブラリを利用するのもいいんですが、three.jsのソースにはTween.jsが同封されてるようなのでこれを使っていきます。場所は "examples/js/Tween.js" です。配置して読み込みましょう。(&lt;a href="https://github.com/sole/tween.js"&gt;GitHubに使い方もあります&lt;/a&gt;)&lt;/p&gt;
&lt;p class="mb10"&gt;そして下記がTweenを実装したデモとソースになります。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube003.html"&gt;Cube_003 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube003.html#nowebgl"&gt;Cube_003 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=EeXnjqNq"&gt;&lt;/script&gt;
&lt;p class="mb10"&gt;"TWEEN.Tween"のインスタンスに対して各パラメータ設定をメソッドチェーンで繋げていくタイプのTweenライブラリのようです。上記ソースではCubeの動きに連動(onUpdateを利用)して回転も加えています。それ以外はシンプルなTween移動になります。&lt;/p&gt;
&lt;p class="mb30"&gt;また、既にフレーム毎実行の"update"関数があるので、TWEEN自身のエンジンを使わずに、毎フレーム"TWEEN.update()"を呼んで実行しています。&lt;/p&gt;


&lt;h3&gt;カメラを追従させる&lt;/h3&gt;
&lt;p class="mb10"&gt;今までのデモは、引きの画面で見づらいという印象だったと思います。今回はCube君が主役なので、Cube君をズームアップして追従するカメラを実装します。&lt;/p&gt;
&lt;p class="mb10"&gt;下記のデモでは矢印キーの移動に加えて、Shiftキーによるズームアウトコントロールも追加されています。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube004.html"&gt;Cube_004 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube004.html#nowebgl"&gt;Cube_004 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=38MesqZc"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;カメラの"target.position"にターゲットの位置を入れるとその方向を向くんですが、これだけだとLookAt処理なのでカメラのアングルが変わってしまいます。アングルもそのままにしたい場合は、LookAt処理と同時(処理的には前かな)にカメラの位置もターゲットの移動量に合わせて移動する必要があります。(これは&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/js/Stage.js"&gt;Stage.js&lt;/a&gt;の"update"関数の中に実装があります)&lt;/p&gt;
&lt;p class="mb30"&gt;こういう視点にするだけで、迷路ゲームっぽくなるので不思議ですね。&lt;/p&gt;


&lt;h3&gt;とりあえず完成&lt;/h3&gt;
&lt;p class="mb10"&gt;テクスチャをそれっぽいのに貼り替えて、ゴール処理(アラートが出るだけです)を追加して、とりあえずは「Cube君の冒険」完成です。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube005.html"&gt;Cube_005 (WebGLRenderer or CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/cube-three-js/cube005.html#nowebgl"&gt;Cube_005 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=v6e5EymV"&gt;&lt;/script&gt;

&lt;p class="mb30"&gt;Cube回転にテクスチャがついていかないように見えるんですが、まぁそのうち。。。&lt;/p&gt;


&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p class="mb20"&gt;今回のデモページはWebGLが有効ならWebGLRenderer、無効ならCanvasRendererでレンダリングするようにしたんですが、WebGLが有効だけどWebGLの調子が悪い場合、全く表示されなくなったりしました。。。ので、CanvasRendererのみ版のリンクも貼ってあります。&lt;BR /&gt;WebGLはマシン(というかグラボ？)によって機嫌が変わるので、まだちょっとめんどくさいかもしれません。&lt;/p&gt;
&lt;p class="mb20"&gt;とりあえずここまで時点の、three.jsの浅い知識でもPac-Manとかなら3D表現で作れちゃうなーというのが感想としてありますね。&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js&lt;/a&gt;、楽しいかも、、、&lt;/p&gt;
&lt;p class="mb30"&gt;次回はCube君を矢印キーではなく、マウスクリックで動かすデモをやりたいと思います。箱庭/戦略系ゲームでよく使う経路探索アルゴリズムを利用した移動方法ですよー。&lt;/p&gt;

&lt;ul class="mb30"&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube.html"&gt;Cubeで遊ぼう！ 迷路生成編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;Cubeで遊ぼう！ Tweenアニメーション編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_3.html"&gt;Cubeで遊ぼう！ 経路探索編&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;

&lt;p&gt;--&lt;br /&gt;
Unity3Dの方がニーズ高いのかも、、、
&lt;/p&gt;
&lt;!-- /article --&gt;

</content>
  </entry>
  <entry>
    <title>【１】Cubeで遊ぼう！ 迷路生成編 - はじめてのthree.js</title>
    <link rel="alternate" href="http://blog.xlune.com/2011/04/threejs-cube.html"/>
    <id>http://blog.xlune.com/2011/04/threejs-cube.html</id>
    <published>2011-04-16T09:40:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;
&lt;h3&gt;はじめに&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;img src="http://blog.xlune.com/up_images/20110416_001.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.js&lt;/a&gt;はレンダラを変えるだけで、Canvas(2D)にもWebGLにも書き出せるっていう、色々と技術遷移中の今の時代にピッタリなJavascript 3D Engineです。&lt;/p&gt;
&lt;p class="mb30"&gt;&lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt;も楽しいけど、表現系でも遊んでみたい！って時に手軽にさわれる逸品です。(3Dよくわかりませんが・・・)&lt;/p&gt;

&lt;h3&gt;とりあえずは準備&lt;/h3&gt;
&lt;p class="mb10"&gt;まず、&lt;a href="https://github.com/mrdoob/three.js/"&gt;GitHub&lt;/a&gt;からソース落としてきます。gitで落としてもいいし、zipファイル(右の方にダウンロードボタンがあるよ)でも落とせます。&lt;/p&gt;
&lt;p class="mb30"&gt;展開すると色々入ってますが、基本必要なのは "build/Three.js" です。サンプルでは他のも利用しますが、随時配置してください。&lt;/p&gt;
&lt;p class="mb10"&gt;あー、それと&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.jsのデモ&lt;/a&gt;を見た人は、3Dモデリングソフトで作ったモデルを読み込んでグリグリ・・・みたいなのを期待してるかもしれませんが、今回そーいうの無いですよ、自分、3Dソフト使えませんし。。。&lt;/p&gt;
&lt;p class="mb30"&gt;そっちに興味ある人は、ソースの "utils/exporters" の中にそれぞれの形式の書き出しプラグインやコンバータと、読み込み方が記載されてるんで試してみてください。ただ、一応やってみた限りでは、WebGLRenderer以外ではほぼ使えないです、重さ的な意味で。&lt;/p&gt;

&lt;h3&gt;HelloWorld的なのを表示してみる&lt;/h3&gt;
&lt;p class="mb10"&gt;&lt;a href="https://github.com/mrdoob/three.js/"&gt;three.jsページ&lt;/a&gt;の"README&amp;gt;Usage"の所に回転Cubeを表示するシンプルなコードが記載されてます。たぶんこれが、three.jsでのHelloWorldだと思うのでまずこれを表示してみます。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello001c.html"&gt;HelloWorld_001 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello001w.html"&gt;HelloWorld_001 (WebGLRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=t9dAwiS0"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;回転するワイヤーフレームCubeが表示されたかと思います。ページに合わせてサイズなどをいじってますが基本そのままです。&lt;/p&gt;
&lt;p class="mb10"&gt;このサンプルに必要な追加ソースは "examples/js/RequestAnimationFrame.js" です。別途読み込みましょう。(さらに上記デモでは "examples/js/Stats.js" と&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;も読み込んでいます)&lt;/p&gt;
&lt;p class="mb30"&gt;では、これをいじって遊んで行きましょう。&lt;/p&gt;


&lt;h3&gt;テクスチャを貼ってみる&lt;/h3&gt;
&lt;p class="mb10"&gt;ワイヤーフレームでは寂しいので、なんか貼ってみます。次の画像が用意したものです。&lt;/p&gt;
&lt;p class="mb10"&gt;&lt;img src="http://labs.xlune.com/demo/javascript/hello-three-js/images/texture001.png" width="40" height="40" alt="0" /&gt;&lt;/p&gt;
&lt;p class="mb10"&gt;テクスチャを貼るには、Cubeに対してマテリアルを指定してあげます。指定方法はソースの"THREE.Cube"をnewするあたりを参照してみてください。またコンストラクタ引数の簡易説明もコメントで入れてあるので参考にしてみてください。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello002c.html"&gt;HelloWorld_002 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello002w.html"&gt;HelloWorld_002 (WebGLRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=V6QHY945"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;Cubeは面のそれぞれに違うテクスチャを張れるんですが、今回は全部同じ物を貼ってます。用意するテクスチャの画像サイズについては詳しくないのでわからないんですが、とりあえずCubeの面に対して自動フィットしてくれるのでいいかなと。。。&lt;/p&gt;
&lt;p class="mb30"&gt;とりあえずソースを漁っていかないと、使い方が分からないですね、一応&lt;a href="https://github.com/mrdoob/three.js/wiki/API-Reference"&gt;APIドキュメント&lt;/a&gt;はあるようですが。。。&lt;/p&gt;


&lt;h3&gt;カメラを動かしてみる&lt;/h3&gt;
&lt;p class="mb10"&gt;カメラがターゲットの周りをグルグル回るようにしてみます。ターゲットがCube一つだとわかりにくいので複数置くことにしましたよ。&lt;/p&gt;
&lt;p class="mb10"&gt;カメラの移動はカメラのインスタンスプロパティ "position" を変更します。"position" は "THREE.Vector3" という型で "x, y, z" のプロパティを持ちます。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello003c.html"&gt;HelloWorld_003 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello003w.html"&gt;HelloWorld_003 (WebGLRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=Ncgyb1tp"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;矢印キーの、左と右で回転します。見た目じゃわかりませんが、オブジェクトではなくてカメラが動いてますよー。&lt;/p&gt;
&lt;p class="mb30"&gt;THREE.Cameraのインスタンスプロパティには自分自身の位置 "position" と注視点である "target.position" があります。Demoは注視点固定(0,0,0)でカメラ位置だけがグルグル回ります。&lt;/p&gt;


&lt;h3&gt;迷路を表示してみる&lt;/h3&gt;
&lt;p class="mb10"&gt;以前、&lt;a href="http://blog.xlune.com/2008/07/javascript_1.html"&gt;迷路生成のJSを書いてた&lt;/a&gt;ようなので、それを流用して迷路データを3Dで表示するDemoを作ってみました。&lt;/p&gt;
&lt;p&gt;[Demo]&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello004c.html"&gt;HelloWorld_004 (CanvasRenderer)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://labs.xlune.com/demo/javascript/hello-three-js/hello004w.html"&gt;HelloWorld_004 (WebGLRenderer)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[JSソース]&lt;/p&gt;
&lt;script src="http://pastebin.com/embed_js.php?i=0N8G6fSZ"&gt;&lt;/script&gt;

&lt;p class="mb10"&gt;基本は迷路データに合わせてCubeを配置していくだけなんですが、面数が多くなりがちなので注意が必要です。とりあえず隣り合っていて表示の必要がない面は生成しないようにしましょう。&lt;/p&gt;
&lt;p class="mb10"&gt;具体的には"THREE.Cube"コンストラクタ第9引数の"sides"で生成しない面を指定していきます。(詳しくはソースを参照してください)&lt;/p&gt;
&lt;p class="mb30"&gt;あと、テクスチャにラインが入ってるせいで、カメラが引きの状態だとモデル全体がビガビガしますね、、、テクスチャはちゃんと作りましょう。&lt;/p&gt;


&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p class="mb10"&gt;まだちょっとドキュメントが少ない印象があるんですが、ソース自体は多くないので、詰まったらソース追っかけた方が早そうです。&lt;/p&gt;
&lt;p class="mb30"&gt;マルチレンダラで便利かとも思ったんですが、やはりそれぞれ微調整は必要なようです。あとこれは仕方ないですが、仕様がコロコロ変わりますね。リビジョン上げるときは覚悟しましょう。&lt;/p&gt;
&lt;p class="mb30"&gt;今回はフィールド環境を作る部分をやったので、次回は迷路を歩きまわるCube君(仮)を作ってみたいと思います。&lt;/p&gt;

&lt;ul class="mb30"&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube.html"&gt;Cubeで遊ぼう！ 迷路生成編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_2.html"&gt;Cubeで遊ぼう！ Tweenアニメーション編&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://blog.xlune.com/2011/04/threejs_cube_3.html"&gt;Cubeで遊ぼう！ 経路探索編&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;

&lt;p&gt;--&lt;br /&gt;
いや、後半ウトウトしてグダグダになっちゃたな。。。
&lt;/p&gt;
&lt;!-- /article --&gt;


</content>
  </entry>
  <entry>
    <title>GoogleSuggestっぽいjQueryプラグイン書いたよ</title>
    <link rel="alternate" href="http://blog.xlune.com/2010/02/jquerygcomplete.html"/>
    <id>http://blog.xlune.com/2010/02/jquerygcomplete.html</id>
    <published>2010-02-21T07:20:00+09:00</published>
    <updated>2016-11-20T16:09:36+09:00</updated>
    <author>
      <name>Xlune</name>
    </author>
    <content type="html">&lt;!-- article --&gt;
&lt;h3&gt;テキストオートコンプリートjQueryプラグイン(jquery.gcomplete.js) by Google API&lt;/h3&gt;
&lt;p class="mb30"&gt;
いやー、Googleの検索って便利ですよね。特にローマ字で打ってんのに日本語候補出してくれるのがシビれます。
なので、あの恩恵を普通のテキストフィールドでも受けれるようにしたいなーって思って勢いで書きました。&lt;br /&gt;
&lt;br /&gt;
もちろん、GoogleSuggest系のjQueryプラグインが山ほどあるのは知ってるんですが、山ほどありすぎて逆にわけわからんのでもっと混沌とさせようかと。。。
&lt;/p&gt;

&lt;h3&gt;Demo&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="/2010/02/gcomplete/"&gt;Demo Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="mb30"&gt;利用方法はデモのソースを確認してください。&lt;/p&gt;

&lt;h3&gt;Download&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="https://github.com/xlune/jQuery-gComplete-Plugin"&gt;github&lt;/a&gt; &lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/xlune/jQuery-gComplete-Plugin/archive/master.zip"&gt;zip file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="mb30"&gt;利用には、&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;本体(必須)と&lt;a href="http://plugins.jquery.com/project/mousewheel"&gt;jquery.mousewheel&lt;/a&gt;プラグイン(オプション)が必要です。別途読み込んでください。&lt;/p&gt;

&lt;h3&gt;更新情報&lt;/h3&gt;
&lt;dl class="mb30"&gt;
	&lt;dt&gt;v0.1.2 (20100223)&lt;/dt&gt;
	&lt;dd&gt;バックエンドをカスタマイスしたデモを追加。&lt;/dd&gt;
	&lt;dd&gt;上記のカスタマイス関連とその他スクリプト修正。&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl class="mb30"&gt;
	&lt;dt&gt;v0.1.1 (20100221)&lt;/dt&gt;
	&lt;dd&gt;単語ごとにテキスト補完する、"oneword"オプション追加(タグ入力みたいに使えます)&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl class="mb30"&gt;
	&lt;dt&gt;v0.1.0 (20100221)&lt;/dt&gt;
	&lt;dd&gt;Betaバージョンリリース&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Todo&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strike&gt;Google APIを利用しない、カスタマイズ版のデモを用意&lt;/strike&gt;&lt;/li&gt;
	&lt;li&gt;グリモン書いて、どのページでも使えるようにしたい&lt;/li&gt;
	&lt;li&gt;必要があればIE6対応のCSSを用意&lt;/li&gt;
	&lt;li&gt;とりあえず、テストする&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="mb30"&gt;あとは&lt;a href="http://twitter.com/xlune"&gt;Twitter&lt;/a&gt;でゴニョゴニョします。&lt;/p&gt;

&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p class="mb30"&gt;
IE6とかでは表示崩れますが、CSSいじれば対応できると思います。もうIE6とか用にCSS書きたくないので全体的にレギュレーションから外して欲しいですね。&lt;br /&gt;
あと冷静に考えると、普通のテキストフィールドでグーグルのキーワードでるとウザイだけですねー。。。
&lt;/p&gt;
&lt;p class="mb10"&gt;
--&lt;br /&gt;
DevFest Quiz面白かったです。もっとやってください。
&lt;/p&gt;
&lt;!-- /article --&gt;

</content>
  </entry>
</feed>
