• このエントリーをはてなブックマークに追加

今なら、継続入会で月額会員費が1ヶ月分無料!

記事 8件
  • 1個50円未満の餃子がなぜこんなに美味い!? / shi3z

    2014-08-13 22:21  
    暑い。 なんだこの暑さは。暑過ぎる。 こんな暑い日には・・・・餃子だ!!! そんなことを考えながら僕の足は自然に新宿に向かっていた。 向かうは餃子の名店、福包(ふくほう)。 既に行列ができており、仕方なく並ぶことに。 この暑い真夏の夜になぜ並ぶのか。 それはそれだけの価値がこの餃子にはあるからだッ!!! 地球上に餃子は数あれど、これほどのコストパフォーマンスの餃子を僕は知らない。 一皿290円。一皿には6個の餃子。つまり一個48円ちょっと。 そして食べる・・・うお!!美味い!! 気がつくと瞬間的に餃子が蒸発していた。 何を言っているのか わからねーと思うが. おれも 何をしたのか わからなかった。 超スピードで餃子が俺の胃袋の中の物体へと相転移していたんだ。 まるで餃子による催眠術。 メニューは、焼き餃子と水餃子、ニラニンニク入りと無し、というシンプルな構成。 当然、水餃子も相転移済だ。 
  • ソースコードに隠された謎を説きながら冒険を進めろ! ゲームでプログラミングを学べるhackforplay / shi3z

    2014-08-13 08:28  
     ダンジョンに潜る・・・チッ、ドラゴンだ。 こいつのファイアーブレス(火焔の息吹)が邪魔で先に進めない。 魔法を使うしかないようだ。 ハッカーだけに許された魔法を・・・ ソースコードを開き、該当する部分を書き換える。 さあて、ドラゴンのブレスはどうやってとめるのかな・・・ ここか・・・・ まったく、凄いゲームが現れた。 hackforplayがそれだ。 どういういきさつで産まれたかはわからないが、enchant.jsを使っていることは確かだ。 このゲームでは、最初から意図的にバグやソースコード上の罠が仕込まれている。 ゲームを進めるためには、バグを少しずつ修正しながら前に進むしかない。 このバグが、またうまくできていて、丁寧にバグをとっていく過程でプログラミングの基礎的なことが自然に学べるようになっているのだ。 この教材を作ったのはDaiki Teramotoさん。 たぶん面識はないが、こ
  • [アラフォーUnity] アラフォーからのUnity入門『アラフォーはラインアートがお好き。リサージュ曲線を3D空間に描く』

    2014-08-13 07:00  
    100pt
    アラフォーUnityとは、いつのまにか四十近くなってしまった電脳空間カウボーイズリーダー、シン石丸が体力の限界を感じながらも最新の開発環境に挑む、真実の物語である……コンピュータで描くべき美しいラインアート
    昭和50年台、60年台にパソコンをいじっていたのパソコン少年にとって、黒画面にコンピュータの鮮やかな原色系カラーで描かれたラインアートは大好物の一つ。ワシもMSXやPC-88, 98でBASICが入力できる環境があると、すぐfor文とLINE文の組み合わせで線をたくさん書いて、なんとなく見栄えがするモノをよく入力していたもんじゃ……というわけで今回は、小学生の頃のパソコン少年時代からの刷り込みで、とにかくコンピュータで線を引くの大好き人間である僕は、Unityでどういう風に線がひけるか調べてラインアートをやってみることにした!描く曲線はリサージュ曲線!
    ラインを引いて、どういう曲線を描こうか!という問題があるわけですが、これは数式は簡単だがカッコイイことでお馴染みのリサージュ曲線で行くことに決定!リサージュ曲線とは、x = A cos(αt), y = B sin(bt + β)
    という数式で描かれる曲線なわけです。そんなに難しい数式では無いんで、とりあえず線の引き方がわかればなんとかなりそう。Unityで線を引くにはどうしたらいいんだべ?と検索してみたところ、LineRendererというクラスをGameObjectにコンポーネント登録することでできることがわかりました。スクリプトを試してみたら、わりとサクッと描ける。ほぉ、ならば、この数式を入れてみればいい感じに描けるんじゃね?とスクリプトを書いてみたところ、下のような画面が!うん、そうそう。リサージュ曲線かけてる。スクリプトは次のようなコード。using UnityEngine;using System.Collections;public class LissajousLineControl : MonoBehaviour {    LineRenderer line;    int lineDrawNum = 120;    public Color32 startColor;    public Color32 endColor;    // Use this for initialization    void Start () {        line = gameObject.AddComponent<LineRenderer> ();        line.useWorldSpace = false;        //line.material.color = Color.green;        line.material = new Material (Shader.Find ("Particles/Additive"));        line.SetWidth (0.05f, 0.05f);        line.SetVertexCount (lineDrawNum);        line.SetColors (startColor, endColor);    }    void drawLine()    {        float A = 9.0f;        float B = 9.0f;        float a = 1.0f;        float b = 2.0f;        //float a = 3.0f;        //float b = 4.0f;        float def = 0.02f;        float t = (Time.time)*Mathf.PI/180*80;        for (int i = 0; i < lineDrawNum; ++i) {            line.SetPosition (i, new Vector3 (A * Mathf.Cos (a * t), B * Mathf.Sin (b * t - Mathf.PI / 4), 0));            t += def;        }    }            // Update is called once per frame    void Update () {        drawLine ();    }}
    このGameObjectをLissajyousLineと名付けて、プレハブに追加。線を複数重ねる線一本だと寂しいので、もっと数を増やしてみよう。と、このリサージュ曲線を描くプレハブを複数つくって、微妙にズラすスクリプトを書いてみた!すると、こんな感じに。Y軸を中心にリサージュ曲線を5度ずつ回転させてズラして7本描画。で、これもプレハブとして登録。色々な色で複数描いてみる
    これで7本のリサージュ曲線を描画するプレハブが出来たので、このプレハブを更に複数作成。赤、青、緑で描き、更にX軸、Y軸回転を追加!すると次のような動きに!!LissajousCurve from S_Ishimaru on Vimeo.
    ニコニコチャンネルなのに動画はvimeoに上げるという(笑単にFinal Cut Proの出力先で一発で書き出せて楽だったからなんですが(笑こういう風に、プレハブでまとめてまとめて、情報量を倍々で増やしていく感じはUnity、コンピュータプログラムの長所って感じですよねー。Unity Web Playerではマテリアルに設定されてるシェーダーしか入らない対策
    例によって、ウェブで見れるようにUnity Web Player向けに出力したんんですが、なんだかうまく表示されない。なんで?と思い色々調べると、LineRenderのstartColor, endColorで指定したラインの色を反映させるのにシェーダーParticles/Additiveを使ってるのですが、これがUnity Web PlayerだとAssetsに入ってるマテルアルで使っているモノしか組み込まれないとのこと。http://docs.unity3d.com/ScriptReference/Shader.Find.htmlなんで、ダミーのマテリアルを作成し、そのマテリアルにシェーダーParticles/Additiveを指定。そのマテリアルが反映されたキューブをシーンに起き、Mesh Renderを非表示に。これで解決できました!まーたできちゃったよ!完成ー!
    Unity Web Playerで動作するモノはコチラ!http://shinishimaru.github.io/LissajousCurve/コードはコチラです!https://github.com/ShinIshimaru/LissajousCurveまた一つ、Unityを学んだのであったが、次はいったいどうする!?待たれよ!待たれよ!時は短し!!って煽り文、AKIRAの単行本の巻末にあったよなー。でも全然出ないんだよね、AKIRA。というアラフォーあるあるで、今回は締めさせていただきます!また次回!!参考
    http://d.hatena.ne.jp/nakamura001/20131114/1384451104http://keijiro.github.io/posts/unity_screen_recording/Unityのスクリーンショットをとって、ビデオVimeoに動画をあげる方法。nakamura001さんと、keijiroさんのブログを参考にしました。 
  • スーパームーン / shi3z

    2014-08-12 01:09  
     生放送に出れないくらい忙しくて、会社近辺に帰って来たら、ちょうど月が出ていた。 そういえば今日はスーパームーンの日、次のスーパームーンは20年後というから、矢も盾もたまらず、望遠鏡を担ぎだしてスーパームーンを撮影してみた。 何を隠そう、9leap 夏休みチャレンジの賞品だったUSBアイピース付き天体望遠鏡と同じものを僕も個人的に購入していたのだ。3万円を切る価格でデジタル天体撮影ができるとかニクい。ニク過ぎる!しかも赤道儀までついてるし。 都会で望遠鏡を出すのは大変だが、たまたま道の隙間から月を捉えることが出来た。 まああんまり車道にはみ出すと迷惑なので迷惑にならない範囲で、ね。 天体望遠鏡ってのはね、佇まいがいいんですよ。 機械としての佇まい。道具としての立ち姿というかなあ。 そこがやっぱ一本、筋が通ってる。 こちらがUSBデジタルアイピース これをつなげたMacで撮影すると・・・ イ
  • Time flies / shi3z

    2014-08-10 07:53  
     先日、38歳になった。  時間が進むのは、結構早い。 年を取るほどに時間の経過を早く感じるようになるのは、脳が時間を省略するからだろうか。 人間の感覚器は瞬間瞬間で膨大な情報を入力する。 情報は束ねられ、取捨選択され、ひとつの枝、または幹となって切り捨てられ、或いは繰り延べられて上位層に振り分けられる。 上位層ではまた複数の下位層からアグリゲートされた情報を束ね、取捨選択し、切り捨て、繰り延べ、さらなる上位層へ送出する。これが気の遠くなる程繰り返されることになる。 この感覚器から脳に達するまでの神経系の処理速度が速ければ速いほど、沢山の情報を脳に到達することができる。 人は年を取れば俊敏には動けず、速く走れなくなる。 従って、老化というのは、神経系の処理速度の低下ももたらすのかもしれない。要はサンプリング周波数だ。そして感覚器のサンプリング周波数が下がると、上位神経系の量子化ビット数も減
  • [アラフォーUnity]アラフォーからのUnity入門『アラフォーの作るべき物理ゲームはビリヤード』と相場が決まってる!!

    2014-08-07 07:00  
    100pt
    アラフォーUnityとは?体力の限界を感じながらも、最近流行のプログラミング環境Unityに挑戦するアラフォープログラマー、シン石丸の身を挺したドキュメンタリーである……アラフォーの作るべき物理ゲームはビリヤードと相場が決まっている!!
    Unityには物理(剛体)シミュレーション機能が入っていると聞く……。そこで、良い年したオッサンが習作に作るべきゲームとは!?皆さん、お分かりか!?決まっているのだ!!ビリヤードもどき……と!!それを作るのが、昭和50年代なのだ!!かつて、『次世代ゲーム機』と言われた、1999年〜2000年代初頭にDreamCast、PS2、XBOX、はたまたPanasonic、NEC製端末華やかなりしころのケータイ電話。新しいハードが登場すると、かならずローンチタイトルに紛れ込んでくるソフトがあった!!それが「球を転がすゲーム」だ!!必ずだ!!必ずと言って良いほど、「球を転がすゲーム」は登場していた!!これはおそらく、物理計算のプログラムさえすればとりあえず出せる。プログラマと少人数のスタッフで作成可能。プログラマも新しい環境をとりあえず学習できる。新ハード発売のご祝儀相場にとりあえず乗っかりたい。という複数のメリットから「とりあえずローンチは球を転がすゲームを出しときゃいいだろ!!」という作戦をいくつかの会社が採用したために生まれた現象である考えられる。なので、当アラフォーUnityでは、「とりあえず球を転がすゲーム」を先人の知恵にもとづいて作ってみることにしたのだった!!球を置くのと球の色を調べるのが地味で面倒
    とりあえず、ビリヤードの9ボール風に球を置こうと思ったんだが、この球を置く場所と色を調べるのが地味に面倒。アラフォーはすぐ面倒くさがるのだ!!良くない!!がわかりきってることは面倒なのだ!!とは言え、ごちゃごちゃ言ってもモノが出来ないので、とりあえずエイヤとスクリプトを書く!!とりあえずボールはプレハブで作っといて、前回プレハブを使うのはやったので。場所とカラーコードを調べて、配列に突っ込んで、ループで作成と。どりゃー!!!!    // Use this for initialization    void Start () {        float y = 5f;        Vector3[] posArray = {            new Vector3 (0f, y, -5f),            new Vector3 (0f, y, 0f),            new Vector3 (Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)),            new Vector3 (Mathf.Sin(Mathf.PI/180*30)*2, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (0, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30)*2, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)*3),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)*3),            new Vector3 (0, y, Mathf.Cos(Mathf.PI/180*30)*4)        };        Color32[] colorArray = {            new Color32(255, 255, 255, 255),            new Color32(225, 180, 1, 255),            new Color32(4, 55, 138, 255),            new Color32(251, 21, 21, 255),            new Color32(102, 80, 165, 255),            new Color32(253, 227, 70, 255),            new Color32(255, 95, 0, 255),            new Color32(54, 132, 110, 255),            new Color32(160, 13, 41, 255),            new Color32(31, 31, 31, 255)        };        // Make Balls        for (int i=0; i < posArray.Length; ++i) {            GameObject b = (GameObject)Instantiate (ball, posArray[i], Quaternion.identity);            if(i==0){                b.name = "MyBall";            }else{                b.name = "Ball"+i;            }            b.renderer.material.color = colorArray[i];        }    }
    このStart()関数の中の配列を作るのが地味に面倒だったわけですよ。ビリヤード台を作り、Phsic Materialってヤツを設定してみる
    ビリヤード台を、まずCubeを薄く伸ばして下の緑の板を作り、壁用に4つCubeを作り、茶色に設定。この壁にPhysic Materialを設定しました。これは物理的な特性を設定できるマテリアルとのこと。Bounciness(反射係数)を設定して、良い感じでボールが反射するようにしました。影があまりに一瞬で付けられて驚き!!
    3Dプログラミングって影をいかに書くかって結構難しかったわけですが。Unity Basicでも使用可能な、Directional Lightの設定の、ShadowTypeをHard Shadowsにしたところあっさり影が描画されて驚き!!影がつくと、絵的にはまぁまぁマシになってやる気が出ます(笑台を中心にカメラを廻してボールを打つ
    前々回、地球を廻すのに書いたコードを若干変更して、台を中心にカメラを廻すようなコードを書いてカメラに関連付け。この部分はArcBall.csに記述。ボールを打つ処理をこんな感じで作成。    // Update is called once per frame    void Update () {        if (Input.GetMouseButtonDown (0)) {            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);            RaycastHit hit;            if(Physics.Raycast(ray, out hit)){                if(hit.collider.gameObject.name=="MyBall"){                    Vector3 force = ray.direction;                    force.y = 0;                    force.Normalize();                    force *= 60f;                    print ("force:" + force);                    hit.rigidbody.AddForce(force, ForceMode.VelocityChange);                }            }        }    }
    カメラからレイを飛ばして、手球をクリックしてたら、XZ平面上のカメラからのベクトルに対して力を加えるような処理に。カメラを回転させる機能によって、ボールの打つ向きもコントロールできると。そんな感じでとりあえず完成〜
    とりあえずとりあえず、こんな感じで完成ー。動くアプリがコチラ。http://shinishimaru.github.io/BallHit/コードはgithubに。https://github.com/ShinIshimaru/BallHitなんとなく物理エンジンを使ってみたが、まだアラフォーUnity使いとしては道半ば!!いまだUnityをどの程度使えるかわからず!!待たれよ、次回!!参考
    Unity 4.2で無料版でもリアルタイムの影の描画が可能に - 強火で進めhttp://d.hatena.ne.jp/nakamura001/20130728/1374973505見てわかるUnity4 C#超入門http://www.amazon.co.jp/見てわかるUnity4-超入門-GAME-DEVELOPER-BOOKS/dp/4798040479 
  • 爆発は芸術だ! 憎しみと悲しみを感動に変える。これがエンターテインメントだ / shi3z

    2014-08-04 08:25  
     先週土曜日はなんでしょう? そう、僕の誕生日です。 そして、なんとプレイステーションの開発者、久夛良木健さんの誕生日でもあります。 しかし大半の人にとってはそんなことはどうでも良く、僕の地元、新潟県長岡市では日本最大級の花火大会が開催される日なのです。 普通の花火大会と違い、長岡花火は毎年8月2日、3日の二日間開催されると決まっていて、県外からも多数のお客さんが訪れ、人口25万人の町に100万人近い人々が集まるのです。簡単に言うと、コミケの動員数は三日間合計で59万人、一日最大20万人ですから、少なくとも2倍、しかし二日とも花火を見る人もいるため、実際には2.5倍から3倍の人が集まることになります。 そのため、コミケと同様、いや、田舎町なのでそれ以上に帰宅が大変です。 僕も、以前、ふと思いついてクルマで長岡花火を見に行ったところ、脱出に5時間かかり、高速道路に乗る頃には日付が変わっている
  • 20分ハッカソンのススメ 〜ブレインストーミングの進化形 / shi3z

    2014-08-01 11:16  
    100pt
    人間の集中力はだいたい20分しか持たないと言われている。 だからTEDの講演は長くても20分というルールが設けられているのだ。 20分ハッカソンは、20分でアイデアを検証し、アイデアを作り上げる個人競技である。 20分を限度としてひとつのテーマを決め、そのテーマに沿ったプログラムをその場で作り上げる。 チーム戦になると20分は難しい(コミュニケーションコストが増える)ので、グループの場合は2時間くらいが適切だろう。長くなればなるほど精神・体力ともに消耗するのでハッカソン慣れしているUEI/ARCの連中でも丸一日使うようなハッカソンは年に何度もできない。 20分ハッカソンを行う際に重要なのは、道具だ。 かつてUEIでは9分間でゲームをコーディングする9Minutes Coding Battleという競技をやっていたが、これは相当熟練したプログラマーでなければ参加することができなかった。 ところがenchantMOONとMOONBlockを使うことで、かなり素人に近い人間でも9分間で何らかの形になるものが作れることが解った。それどころか、全く専門知識を持たない人間でも、なんらかのインタラクティブコンテンツを作り上げることが出来る。ここにコンピュータが向上する大いなる可能性を僕は感じている。 ニコ生の中でも触れたけれども、先日開催された全国高等学校総合文化祭のなかで、MOONBlockを使ったチームが優勝した。しかし驚いたことに、彼はいわゆる「初心者」ではなかった。 C言語を三年間学び、普通のプログラミングが充分できる状態で、敢えてビジュアル言語のMOONBlockを使ったのだ。そのほうが限られた時間内で確実な成果が出せると彼は考え、そして優勝した。 これに多いに刺激をうけ、僕も昨日社内でenchantMOONを使ったハッカソンをやってみた。 これが面白いことに、プログラマーよりも、普段プログラムを書かない人の方が面白いプログラムを作れるのだ。 プログラマーはつい「あの機能があるはずだ」と無意識のうちに考えてしまい、自分のイメージするブロックを探したり、作り上げたりするのに時間がかかる。 何も知らない人は、とりあえずブロックを見てみて、そこから「なにができるか」と考える。 材料から選ぶプロの料理人と、冷蔵庫の中を見て献立を考える家庭の主婦のような感覚の違いだろうか。 とはいえプロのプログラマーも、慣れればすぐにビジュアル言語を使いこなすことができるので、多少のまどろっこしさを感じながらも、決まりきった処理の記述に時間をとられず、すぐに次の段階、つまりより創造的な発想を考えるのに使うことが出来る。 キーワードは、ビジュアル言語である。 当然ながら、ビジュアルプログラミング言語というのは、MOONBlockだけではない。 アラン・ケイ先生のSqueak、ミシェル・レズニック先生のScratch、NTTの原田先生のViscuit、文部科学省のプログラミン、などなど。細かいところでは、AppleのQuartz ComposerやAutomatorなどもある。 沢山のビジュアルプログラミング言語があるが、その分類として(1)教育を目的としたもの、(2)実用を目的としたものの二種類がある。 Quartz ComposerやAutomatorは実用を目的としたビジュアル言語と言える。SqueakやScratch、プログラミン、Viscuitなどは明らかに低年齢層にプログラミングを教えることに主眼が置かれている。 実用を目的としたビジュアル言語といえば、業務用アプリケーションの世界ではインフォテリアのAsteriaや、小野和俊のデータスパイダーなどもある。 また、変わったところでは、プログラマーが使うUMLもある。ただしUMLは、高度なビジュアル言語であり、専用のグラフィカルユーザインターフェースで記述されるが、これ自体がプログラムにはならない(途中までは作ってくれるツールもある)。あくまでプログラムを設計するためのツールである。 これだけ多くのビジュアル言語が産まれているのに、この分野はまだまだ過渡的な段階にある。 それは非ビジュアル言語の生産性があまりに高過ぎる(もっと言えば、キーボードの生産性があまりに高過ぎる)ことから、ビジュアル言語がキーボード使いの得意なプログラマー達に歓迎されてこなかったことに一つの原因があるだろう。 しかしいまは時代が変わりつつある。 ひとつの転機は、タッチパネルだ。 いまやタッチパネルでないコンピュータは、Macだけになってしまった。 Windows8以降は、Windowsは、デスクトップですらタッチパネルを搭載することが増えて来た。  タッチパネルでの操作に大半のユーザが習熟し始めている。 そのような時代にこそ、ビジュアルプログラミング言語は本領を発揮するはずだ。