AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

DeepDream のローカル実行環境を簡単に作れるリポジトリを利用して人工知能に想いを馳せてみた

Pocket

臼井です。
してみたシリーズしている時は現実逃避気味です。

先に言っておくと、今日の記事はいわゆるグロ注意です。
リンク先にも人によってはつらい感じの画像があるので、耐性が無い方は回れ右願います……

さて。

先日Googleが公開した、DeepDream ですが、
門外漢には環境構築がさっぱり。
webインターフェースを構築してくれた所もありますが、
Deep Dream web interface
処理の待ち行列でいったい何日かかるんだ状態です。
わしもこのビッグウェーブに乗りたいんや!
【人工知能の悪夢】DeepDreamがオープンソースに。さっそく生み出されるホラー画像 – Togetterまとめ
【SAN値直葬】海外の恐すぎるDeepDream画像まとめ #DeepDream – Togetterまとめ

と思っていたところ、以下のリポジトリをネットの海で発見。
Dhar/image-dreamer
これを使って、DeepDream のローカル実行環境をさくっと構築させてもらいました。

手順

README.md のInstallとUsageにだいたい書いてありますが、作業メモを以下に記します。
注意点としては、

  • 低スペックマシンではまともに動かない可能性有り。特にメモリは大量に必要。
    • 新しいMacBookとかは厳しいのでは。
  • VirtualBoxとVagrantはあらかじめインストールしておく。

以下、Vagrant+VirtualBoxを使用し、他にVagrantで仮想マシンを起動していなくてローカルのポート2222が未使用の想定でのメモです。

注意点としては、初期の仮想環境メモリ割り当てが2GBなので、あまり大きいサイズの画像を dreamify しようとすると、途中でプロセスが落ちたりして、完遂できません。
8GBほどメモリを割り当てても、フルHDくらいの画像で精一杯ではないでしょうか。
メモリ重要。webアプリケーションなんかとは性質が違うんです。

さて、個人的には色々ぶん回して、おおーとかぐえーとか言っているんですが、
あまりインターネット上の画像をどうこうしてここに公開するのもよろしくないので、
ハンズラボのサイトに含まれる画像のみに対してやってみます。
続きを読む DeepDream のローカル実行環境を簡単に作れるリポジトリを利用して人工知能に想いを馳せてみた

Pocket

PHPカンファレンス福岡 2015 参加レポート

Pocket

1週遅れになってしまいましたが、PHPカンファレンス福岡 2015に参加してきたので、レポートしたいと思います。

東京でのPHPカンファレンスは2000年より14回開催されていて、大阪でも5回開催されているのですが、今までは福岡での開催はありませんでした。
そんな中、ひとつのつぶやきを契機に盛り上がり、あれよあれよといううちに開催までこぎつけたのが今回の福岡初のPHPカンファレンスになります。

経緯とかは下記のtogetterにまとまっています。
PHPカンファレンス福岡が開催!? #fukuokaphp

そんなやりとりを見ていて、開催されたらぜひ参加したいなーと思っていたので、参加できて光栄でした。

会場は、祇園駅から徒歩1分とアクセスの良い、FFB HALL。

受付

01_junbi_03

01_junbi_02

赤いレスラーのようなマスコットが特徴的で、サイトもかっこ良かった!

今回は、聞きたいセッションがたくさんあったのですが、どうしても聞きたいセッションに絞って、それ以外は『Cakephpで学ぶ継続的インテグレーションハンズオン』をやっておりました。

続きを読む PHPカンファレンス福岡 2015 参加レポート

Pocket

Windows10 IoTをRaspberry Pi 2 上で起動させてみた

Pocket

OS X とWindows 8.1 on VMware 併用派の臼井です。

ハンズラボIoT部活動の番外編として、Windows 10 IoT Core をRaspberry Pi 2で起動させてみました。

公式による詳細なインストラクションは以下にあります。
https://ms-iot.github.io/content/GetStarted.htm
ほぼこのままで起動までいけます。簡単でしょう?

しかし、上記に記述の無いはまりどころがありました。

  • Windows10 IoT をインストールするには、Windows環境が必要。
    • flash.ffu をSDカードに書き込むツールがWindows上でないと動かない。
    • イメージ書き込みくらいdd でさくっと出来て欲しい。
  • Macで動作しているVMware上のWindowsからだと、最近のMacのSDカードスロットを認識するのは一筋縄ではいかないorできない?
    • 色々がんばる必要がある。

なので、他の人のWindows PC を借りて、SDカードへのイメージ書き込みを行いました。

そして、無事起動しました。

チュートリアル中のLチカのサンプルアプリ。10ms までインターバル短く出来て画面のLEDも点滅して危険w


デバイス情報画面。

以下感想です。

  • Windowsと言っているが、思っていたよりプレーンな感じ。
  • Windows10 + Visual Stuidio 2015 でのリモート開発じゃないと出来ないらしいので、Raspbian とかならさくっと出来るLチカすらちょっとだけ準備の敷居が高い。
    • Lチカくらいワンライナーでecho 使って出来て欲しいなーみたいなのはある。
    • あるいはこれ自身にシェルとエディタくらい乗っていて欲しい。

なので、めっちゃ新しめのVisual Stuidio 使いこなしてる、リモートデバッグとかもガンガンやってる、みたいな人だと、そんなに敷居が高くないと思いますが、
逆に非Windowsな人には、これでしかできないことをやろうとしてなければ、
今のところ使わなくてよさそう、という気がします。
逆に言うと、Windows ネイティブ開発バリバリ現役の人が今からIoTに手を出す場合、選択肢としてはよいかも知れません。
あと、HoloLens 開発を見越して、今のうちにWindows IoT に慣れ親しみたい方にはオススメというか、むしろ今すぐ環境を作った方がいいのでは、というか。

しばらくは何ができるかなーと色々模索してみます。

Pocket

Elastic BeanstalkでカスタムAMIを使う

Pocket

BeanstalkでカスタムAMIを使う方法をきちんと把握してなかったので試してみました。

やってみたところ、下記に書いてある手順をやるだけだったのですが、さらっと読んだだけだと分かりづらいので図にしてみました。

カスタム AMI の使用 – Elastic Beanstalk

手順としては下記のような感じです。

1)ベースとするBeanstalk のAMIを元にInstanceを立てる(Platform毎にいろいろあるので選択)
2)Instanceをカスタマイズ
3)Instanceを元にAMIを作成
4)Beanstalk の使うAMI を3)に設定

EB-CustomAMI

カスタム済みのAMIをいきなり指定するのではなく、一旦 BeanstalkのAMIからEC2を立ててそこをカスタマイズするという形になるんですね。

感想としては、.ebextensions でカスタマイズしたほうがメンテナンス性が高そう、とうか上記手順を頻繁にやるのはめんどくさいので、よほど特殊なカスタマイズでなければ .ebextensionsでカスタマイズするのが良さそうです。

Pocket

社内勉強会で型について話しました

Pocket

ハンズラボでは、 全部JavaScript でいくでーの長谷川の大号令が有り、
キャッチアップに危機感を持ったり単純に楽しみたいなど色々な人が居る中、
毎週1回有志でわいわいJavaScript に関する勉強やちょっと作ってみた会をやっています。
最近の私には、以下の問題意識があります。
エンジニアとして東急ハンズ及びハンズラボに入社してきた訳ではないが今エンジニアをしているというメンバーには、ドメインエキスパートとしての強みがありますが、さすがに軽減しておいた方が良い弱みがあると考えています。
それが、型という概念です。

ユニケージにおいては、プログラミング言語(一旦マークアップ言語は省きます)としてはほとんど以下のような状態であり、ドメインエキスパートなメンバーはほぼこれらのみしか触ったことがないという現状です。

  • シェルスクリプト
    • bash 以外での動作は想定してない。必ずしもPOSIX準拠ではない。
  • awk
    • 書式指定
    • フィルタ
    • 簡単な算術演算
  • JavaScript
    • 一部の人はjQueryゴリゴリ書く。
    • 生のJavaScriptに関してはみんなぼちぼち。
      • コピペも結構横行している。

シェルスクリプトは文字も数字もだいたいよしなにしているし、
awk は文字列と数字の暗黙の型変換や変数初期化がPHPの真偽値どころでない適当さだし、
JavaScript はダック・タイピングでこれもまたなんか色々とだいたい動く感じにしてくれてるし、
いずれも強い静的型付け育ちの人間から見ると、さすがにちょっとフリーダム過ぎて逆に初級者にははまるとつらいだろ、と思っています。

なので、型ってなんや、みたいなメンバーに、こういう仕組みがある、
というのを、ちょっとだけ説明するスライドを作って、先週の社内勉強会で話しました。

概ね好評ではあったのですが、書けば書くほど自分の型に関する理解が浅いことを思い知らされ、
かつその浅い理解では思い切った初心者向けの説明をするのも危険であるな、と思いつつ、
基礎を復習しながらなんとか書き上げた感じです。

ハンズラボではAWSべったりバッチコイWebアプリケーションエンジニアを募集しておりますが、
全体の基礎力底上げのため、上記の様な人でかつさらにコンピュータ科学にも明るい人も個人的には来て欲しいです。
ご応募お待ちしております。
AWSでエンタープライズシステムを構築するエンジニア、Wanted!!

Pocket