2014ちとから☆あんどろいど実験室AndroidアプリからHTML5/CSS3/JavaScript。その他技術的な事について書いてます。Extensionで出来るチャットアプリタイトルのままです(笑)匿名性の強いチャットアプリを近日リリースする予定です。して、スマホ版も開発しようと思ってます。今思いついちゃったけど、ウェブビュー使えば一瞬だなー。こっちはちょっと様子を見て。これからちょっと忙しくなりますし。僕もこの記者と同じで、読みながらもどんなもんよ?なんて思ってたんですが、これがなかなか良い。簡単に言うと、かけている人の視線の動き等をキャッチするセンサーを仕込んだというもの。カメラやディスプレイを外して、外でなく内である使用者から情報を取ろうという完全に逆転の発想。ついでに電池を食うハードウェアを外しているので連続利用時間まで伸びているという優れものです。いやー、体との距離が一定に保たれる眼鏡の特性を生かした素晴らしい発想ですよね。ここで紹介しているマウスや居眠り運転防止以外にも色々な応用が出来そうに思います。埋め込むセンサーで色々な事が出来そう。tech2014年7月24日木曜日ChromeとAndroidの連携すげーなー。アムロに「そこっ!」って言われた気分w今日気が付きました。同じアカウントでログインしてるPCのChromeと自分のAndroidが連携して、PCのChrome上で位置情報が把握されている。ロケーション履歴を取得しているからのようですが。GoogleはMapの渋滞情報もAndroidの位置情報使っているらしいし、ここまで考えてAndroidを作って世に出したのだとしたら、すごい壮大な計画ですよねー。思いついても巨人Googleにしか実行できん(笑)。PCで位置情報が正確に取れるようになるとなると、また面白いサービスが出来るかも知れませんね。etcさくらレンタルサーバーにnode.jsをインストールしてみたスタンダードさくらインターネットレンタルサーバーにnode.jsをインストールしました。こだわりゆえに死ぬほど大変でしたが、まとめておきます。結果から言うと、node.js上でチャットアプリケーションがインターネット上のサービスとしてきちんと動作するところまで確認できました。いった事は計画が大事なので、どういう方針でインストールするか書いておきます。(当然、事前に計画したものではなく、試行錯誤の結果である事は言うまでもない)nvmからのインストールにこだわる問題が発生しても、安易にソース修正して機能削減を行わず、きちんと足りないライブラリをインストールするようにする倫理的に問題になりそうな手段はとらない出来るだけ理解してやる(一部解らないところも出ましたが...)です。結果的に、やらなければいけない事は以下です。苦労話は省略して、上記の流れでどうすればいいのかを書いていきます。nvmのインストールこれはgitで落としてきました。~/.nvmこれでnvm実行に必要なすべてのファイルが~/.nvmにダウンロードされます。~/.nvm/nvm.shを実行すればnvmコマンドが使えるようになりますが、ここではまだ実行しません。libexecinfoのインストール恐らくここが一番の難関だと思います。結論から言うと、portsをインストールしてlibexecinfoをダウンロード・展開し、手動でhome/local/に作ったディレクトリにコピーするという手段をとりました。ソースからでも良いのですが、実施時点でFreeBSDの公開URLが解らなくなっておりまして...。できるならソースからの方が楽だと思います。portsのインストールはこちらを参考にさせて頂きました。さくらのレンタルサーバ(スタンダード)でNode.jsをインストールするまずはディレクトリを準備します。参考サイトのコマンドそのままです。~/work/ports/portsnap.conf最後のコマンドでportsnap.confのエディタが開きます。僕はemacsを使いますが、viでも問題ないです。内容はこちらも参考サイトと同じ内容です。パスの中のhome下のユーザー名部分の修正だけ注意してください。WORKDIRとPORTSDIRの2か所です。astroこのファイルをportsnapコマンドで読み込めば、portsの準備は完了です。updateportsからインストールしたものは、解りやすいように~/local/ports下にインストールするように設定します。以下のコマンドで、ディレクトリの作成と~/.cshrcの編集を開きます。~/.cshrc.cshrcの追加内容は参考サイトとほぼ同じですが、NODE_PATHとNODE_MODULESを削除し、代わりにCPATHを追加しています。cプログラムソース内のincludeがうまく行くようにするためです。念のため、PATHに${HOME}/local/libも追加していますが、これは機能していないかもしれません。SRCCONFの設定も重要ですので忘れずに入れてください。~/local/ports/etc/src.confファイルを保存したら、上記パスを通したディレクトリの作成と、libexecinfoの展開を手動で行います。installします。先に言っておくと、これはルート権限がないため失敗に終わりますが、その後手動でコピーするため問題ないです。deniedで失敗に終わりますが、~/local/ports/のincludeとlibには目的のファイルが生成されています。~/local/にユーザー領域内での参照用のディレクトリ、includeとlibを作成し、生成されたファイルをコピーします。~/local/lib/ここまで終わったのち、.cshrcを読み直します。~/.cshrcnode.jsのインストールここまでくればあと一歩ですが、実は大きな問題があります。落としてくるソースのmksnapshotのコンパイルでlibexecinfoを利用するのですが、ライブラリの参照先が固定で-L/usr/local/libになっているのです。execinfo.hのincludeはCPATHで対応できるのですが、v8エンジン系のコンパイルで使用しているgypのパラメータファイルに固定で記述された値が使用されており、ここを修正しないとコンパイルが成功しません。ここで通常はソースからコンパイルを選択すると思いますが、僕はあえてnvmでやりたかったのでnvm.shを書き換え、makeが走る前に自作のシェルが動作するように変更しました。...追加したシェルスクリプト~/.nvm/preinstall.add.shの内容は以下です。"$tmpdir/node-$VERSION"/out/node.target.mk恐らくFreeBSD部分だけ修正すればよいと思われますが、/usr/local/lib/を直接指定している部分はすべて変更してあります。※異なる(特にv0.10.29以降)のバージョンをインストールする場合には、一度ダウンロードして変更対象ファイルの内容を確認し、sedの行数指定などを見直す必要があります。全面的な見直しも必要かもしれません。このシェルスクリプトには作業当時の最新バージョンであるv0.10.29のgyp関連の設定ファイル名が変更されている事への対応が入っていますが、実際この作業をしている時点でv0.10.29のインストールは出来ませんでした。typeのエラーが出ていたためで、これはこちらで対処する範囲外と判断し、v0.10.28のインストールを実施しています。v0.10.28を実行すればnode.jsがインストールされるはずです。v0.10.28アプリケーションの準備、実行・確認ここまで来れば後はアプリケーションを動作させるだけ!と思っていたのですが、実はここまで自分が全く考慮していなかった問題があることが解りました。解放されているポートってあるのかな...?さくらインターネットスタンダードに関して調べてみたところ、ポートはこれ以外は閉めてまっせ、とのこと。これを見る前に闇雲にやってみて他にも空いてそうなポートが無きにしも非ずだったのですが、とりあえず開けてまっせ、とのたもうておられるWebDAVの9800で起動してみたところ、アプリケーションは問題なく動作していることが確認できました。本番稼働は別として、デモや研究などには利用できそうに思っています。HTTPで印刷からキャッシュドロアなどのデバイスのコントロールまで出来ちゃうらしいです。PCやタブレットなどのスマートデバイスに表示されたウェブアプリケーションでPOS周りのコントロールが出来ちゃうんです。JavaScriptでシリアル制御信号を送るプログラムも組み込めるので、POSだけに留まらない、店舗全体で統一されたIT環境を作ることだってできちゃうはず!しかし、自分が研究していた技術がこんなところで素敵に応用されているとは。回し者のように宣伝すると、EPSONのインテリジェンスレシートプリンタに搭載されている、ePOS-PrintとePOS-Device。要はePOSサーバーと言っていいですかね。これを搭載したプリンタをLAN内に置いておくと、そこにHTTPやWebSocketで命令を送信することで印刷やドロアオープンなどの命令を肩代わりしてくれるというもの。APIという形でJavaScriptで簡単に起動できるのでnodejs知ってる人なら見ただけで構築イメージが湧いちゃいます。JavaScriptが都合悪い場合でもSOAPの口を用意してくれているので、ブラウザアプリ以外からでも同じ経路で命令を出すこともできます。デバイスの登録もスクリプトのセットもプリンタ側のウェブUIで簡単に出来るので、設置の方も問題なし。したデータサーバーもWebSocketで用意されているので、あるデバイスで発生したイベントをチャットのように他のデバイスで拾い、しかもさらに別のデバイスの状態に応じて動きを変えるなんてこともできそう。店内の誰かのハッピーバースデーで動画を流したり、入店待ちの客の人数に応じて、長居してるお客さんにメッセージを流したりできそうかなー。websocket2014年6月29日日曜日Googleが空間認識するタブレットを作成するそうです6月27日のニュースにこんなのがありました。空間認識タブレット発売へ=米グーグル、来年初旬にも今僕が研究しているAR(拡張現実)の中にも奥行などの空間を認識する技術があるのですが、おそらくこれをもっとハードウェアレベルで精緻にして端末に初期搭載し、開発者向けにゲームその他アプリ開発のプラットフォームを提供しようというもの。この技術自体は面白いのです。カメラのフレームに入った空間を認識することで、より自然なキャラクターなどの配置が行えますので、現実をベースにしたリアリティのあるコンテンツが提供できるのです。これ研究してて本当に難しいのが、「どんなコンテンツを乗せると面白いのか」と言うところ。何乗せてもある程度面白いものが出来るのですが、なかなか面白いアイディアが浮かばないんですよね。今回のGoogleの取り組みで、より多くの技術者が参画して面白いアイディアが出ると良いなと思います。Kitが良さげWeb作成するうえで必ず書かなければならないコードってありますよね?最近ではモバイル端末も意識しなければならないので、非常に多くのコードとレイアウトへの意識が必要になりました。Kitさっそくダウンロードしてみました。結論からいって、なかなか良さげです。めんどくさーいレスポンシブも含めてある程度のデザインがclass指定だけで出来ちゃう。アイコンとかもセットになってる。guideで確認できます。量子コンピュータがあぁぁぁ!ついに商用化されましたね!第一号のユーザーはロッキードマーチンだとか。何に使うんだろう?これの何がすごいって、うん。俺説明できるほど知識ありません、残念ながら(笑)。普通のコンピュータは入力データをアルゴリズムを通して出力データに変えます。何某かの現象の答えをコンピュータに出させるには、その現象を間違わずに表現した「アルゴリズム」が必要になるのです。それに対して量子コンピュータはそんなもの必要としません。数あるパターンの中から最適なものを抽出してくれるのが量子コンピュータだからです。今はまだここまでですねー。これから「何に使うのか?」を考えていって、それが世の中を劇的に変えていったら、「量子コンピュータは凄い!」という事になるんじゃないでしょうか?まぁでも間違いなく近々そんな日が来ると思いますけど。「通信の秘密」を守る法律がない韓国では問題にならないため、あっさり認めたというもの。これに対してLINEの森川社長は「きちんと通信を暗号化してるのでありえません」といった趣旨の反論をブログで行った。この社長、実は過去にやらかしたことがある。LINE上の通話において、電話番号の詐称が実際可能であるにもかかわらず、問題ないから安心して使ってくださいといった発言をした。それもあって、この反論を聞いても手放しで安心できないという人が多いという事なんだろう。僕が思うに、これ実際やってると思います。通信を暗号化しているからとか言っていますが、全区間暗号化しているとは思えませんし、実際やろうと思えば何だってできちゃいます。サーバーハックして秘密鍵抜くなんて方法から、ハードディスクを繋いでるコードをネットワークだ!って言いきってしまう力技だって存在します。傍受したデータを欧州のサーバーにおいて解析しているという話からして真実味があります。LINE使わない方が良いのか?と聞かれたらケースバイケース...と答えるかな?僕自身、こんな可能性はLINEが出たころからずーっと考えていたことで、最初っから使わないようにしていましたが、今では周りのみんなが使うので使っています。友達との日常会話や連絡には便利ですからね。なんで使うのかというと、恐らく実害はないだろうという希望的観測があるからです。実はテキストデータの解析って非常に難しい分野で、テキストマイニングという統計技術を実際に導入しても効果の得られる変数を設定しない限りあまり意味のないものになってしまいます。統計データですらこんなですから、その天文学的数量になる個人の1データなんて解析する余裕はほとんどないはず。無名の1個人であれば彼らにとって追跡するメリットがない上、ものすごいコストがかかってしまうため、やる意味はないかなと。政治家や影響力のある著名な方は別ですが、個人が韓国の国益に関しない情報を発信する分には、それほど大きな問題にはならないかと思います。いえ統計で「日本の動き」を解析されている訳ですから、少なからず国益を損ねていることは確か。愛国の士のみなさんは無視できない問題でしょう。絶対安心な「完全に日本にローカライズされたLINE」を作ってみてはどうでしょうか?と思ったりしました。政治2014年6月18日水曜日もひとつブログ作りましたーなんかやっぱりどうしても更新が少ないなーと思っていました。考えたんですけど、僕が今興味を持っている事って、実はIT技術以外だったりするからなのではないかと...。生業ですし、これからも続けていきますし、このブログも更新したいと思ってます。なんかあのAndroidが出たころの興奮と情熱がないんですよね。OSの開発端末買ったらまた違うのかもしれませんけど(笑)。※ってか買う予定あと、今iPhoneアプリもやってますので、何某かの記録を残したいと思います。みんなが躓きそうなコアな情報を出せたらいいな。はい、本題に戻ります。時事ネタを取り扱う予定のブログを開設しました。EngineもDockerをサポート、オープンソースのコンテナ管理ツールを提供これを見て、Dockerが来るような気がした。各クラウドサービス間の移行まで出来るようになったら無敵じゃない?色々なところで、色々な環境で開発をしてきましたが、サーバー増強やデプロイで失敗している人たちのどれほど多い事か...。これは多くの場合、「開発側と管理者側のコミュニケーション不足」が原因となっていると思うんだけど、開発側でDockerにしておけば必要なコミュニケーション量が大幅に減るので問題が激減するような気がする。リリース以降のしょーもないミスが減ればみんなハッピーなんじゃないかと。俺まだこれ使った事ないんです。ホントにこれで解決出来るのかわからないのだな(笑)!いつか試したい。日付入力を行うjQueryプラグインを作ってみたDatePickerを良く使っていたのだけれど、サジェスト機能とか欲しいなと感じておりました。5って入力したら今月の5日とか簡単に入力出来たらいいなと。DatePickerにアドオンすることも考えたのですが、まぁせっかくなので一から作ったのがこれ。[Dater]http://nolib.jp/dater.html見た目シンプルにーとか思ったんだけど、白すぎ?フォーム部品なので、送信のテストはちゃんとやったつもりです(笑)動きも一連の動きでは問題ないはずスマホだとカレンダーの選択がムズイかなー。