株匏䌚瀟LIFULLのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟LIFULL

株匏䌚瀟LIFULL の技術ブログ

å…š668ä»¶

  こんにちは。 HOME'Sアプリのデザむナヌのこばやしです。   Androidアプリを育おおいくず、ひず぀の課題に行き圓たりたす。 アプリリ゜ヌスサむズです。   機胜远加、ダむナミックな画像衚珟などで、気づいたら「ゲヌムアプリ」ず思うほどリ゜ヌスサむズが増えおいるかも 。 そんな時、ひょっずしたら劇的にスリム化できるかもしれない方法をご玹介したす。 HOME'S Androidアプリでも実際にやった内容です。 ==== Google deveroparsの蚘事「 Google Play におけるアプリのダりンロヌド サむズの削枛 」に蚘茉もある WebP が今回玹介する内容です。 googledevjp.blogspot.jp   蚘事の䞀文に、 3. APK の構成芁玠のサむズを枛らすこずによる最適化: たずえば、JPEG ではなく WebP を䜿甚するなど効率的なファむル圢匏を䜿ったり、未䜿甚コヌドを削陀するために Proguard を䜿甚したりしたす。 ずありたす。   蚘事にもあるように、むンストヌルする際にアプリサむズが倧きいず通信量を気にしおしたい、それが芁因で優れたアプリでもむンストヌルされない、なんおこずもあるかもしれたせん。 そこで今回、画像リ゜ヌスをWebPに倉換するこずでどのぐらいアプリリ゜ヌスを削枛できるのか。 そしおHOME'S Androidアプリにおいお、実際どのぐらいリ゜ヌスを削枛するこずができたのかをお話したす。 webPWeppyりェッピヌずは Googleが開発した圧瞮圢匏で、埓来の圢匏よりもファむルサむズを小さくするこずを目的ずしおいたす。 Googleが持぀VP8コヌデックを甚いたWebMずいう動画フォヌマットをベヌスずしおおり、WebMの1フレヌムだけを切り出したものがWebPで、それをRIFFずいう軜量なコンテナに栌玍した圢匏になっおいたす。 https://developers.google.com/speed/webp/   特長 可逆 / 非可逆圧瞮が可胜 透過 (アルファチャネル) が可胜 写真の圧瞮にも向いおいる アニメヌションが可胜 写真画像においおも効果的に圧瞮できるのが非垞に匷い特長だず思いたす。 ※非可逆のWebPはAndroid OS 4.0以降でサポヌト、ロスレス圧瞮のWebPは4.2.1以降でサポヌト   サポヌト Chrome Opera (12.0~) Android Browser (4.2~) Chrome for Android JPEGやPNGずいったメゞャヌな画像保存圢匏のようにはただ普及しおおらず、珟段階だずかなり限定的に効果を発揮する圢匏だずいえたす。 http://caniuse.com/#feat=webp   ツヌル WebP Library Pixelmator Leptonica Photoshop Plugin WEBPコンバヌタヌ 公匏のラむブラリ、オヌサリングツヌルなどで生成できたす。 比范 アプリ内で実際に䜿甚しおいるPNG画像、それをWebP化した画像で比范しおみたす。 ※WebPは衚瀺させるためにブラりザで衚瀺したものを撮圱しおいたす。容量はWebPのものを蚘茉 WebP 2.88KB png 6.73KB このポヌズのホヌムズくん、可愛い。 小さめのむラストですが、およそ半分に削枛できおいたす。 芋栄えも倉わりありたせん。 次は写真、耇雑なビットマップ画像で詊しおみたす。 WebP 27.4KB PNG 560KB 先皋のむラストより高い圧瞮率ずなりたした。 肉県ではほずんど区別぀かないですが、およそ1/20のサむズに これはスゎい。 実際にアプリで芋おみたす。 before after 意図したずおりに衚瀺されおたす。 倧䞈倫そうです。   アプリで䜿っおいる画像をどんどん眮き換えおみる   Android studioのAnalyze APKを䜿い、容量が倧きい画像をWebPに倉曎しおみたした。 するず  13.2MBから6.3MBずおよresの 容量が半分に。 半分です。 ※2016幎8月時点 画像リ゜ヌスはアプリ党䜓の半数以䞊を占めおいたしたが、WebPを甚いるこずで簡単に削枛するこず成功ができたした。 画像の品質は䞋げたくない、けれど容量を䜿いすぎるのも ずいう課題に察しおも効果的です。 アプリの衚瀺速床や䜎スペック端末ぞの配慮ずしおも、䞀圹買っおくれそうです。 たずめ 可愛い名前なのにスゎいや぀ iOS察応やブラりザの察応拡倧が埅ち遠しい。 実は以前にもWebPを詊したこずがありたした。 しかし圓時は挙動が安定しおいなく䜿甚を断念したした。 最近は4.x系でもSVGをフルサポヌトするなど、Androidアプリ開発環境がグングン良くなっおいたす。 そんな䞭で改めお詊しおみたWebPはAndroidアプリでリ゜ヌスを削枛する手段ずしおずおもおすすめです。 「 Android Appにおいお、か぀サポヌトしおいるOSバヌゞョンが4.1.x以䞊の堎合はおすすめ 」ずいえるのではないかず思いたす。 ですが、これから普及しおいくであろう新しい芏栌のため、考慮すべき点もありたす。 「WebPずは」のずころで蚘茉しおある、サポヌト範囲ず特長のAndroid OSバヌゞョンによる制玄を改めお確認し、䞊手に利甚しおみおください。
   はじめたしお新卒入瀟幎目のミヌコです。 初めおデザむナヌズブログを曞きたすよろしくお願いいたしたす。 今回は「ネクストのデザむナヌっおどんな人がいお、どんなこずしおるんだろう」や「新卒のデザむナヌっおなにするの」ずいうような就掻セミナヌや面接では聞けないであろう情報も含め、新卒幎目から芋たネクストデザむナヌの日をモリモリ玹介いたしたす   たずは私の自己玹介から。 月に倧孊を卒業し、月に株匏䌚瀟ネクストに入瀟したした。瀟䌚人幎目のひよっこデザむナヌです。 ネクストに入瀟を決めたのは〜・・・長くなるのでやめおおきたすが人に喜んでもらえるようなデザむナヌになりたいず垞に思いながら日々、業務をしおおりたす。   ざっくりず日を玹介するず です本圓にざっくりですね。でもこんな感じです。 それではこれから现かく玹介しおいきたすねっ   出瀟 始業開始は10時です。 10時に䌚瀟にいれば早く来おもゆっくりきおも倧䞈倫です。 出瀟埌は日のタスク・メヌルを確認し、お仕事スタヌト    仕事午前 入瀟ヶ月目ですが、今たでやっおきた仕事は 広告やバナヌの制䜜 民泊事業に関するむンフォグラフィックスの制䜜 ホヌムズくんを䜿甚したむラスト制䜜 ▌䟋  竹うちわのデザむン ラッピングバスのデザむン ▌䟋 ビヌチサンダルのデザむン などなどです。これはほんの䞀郚なのでさらに曞き出せばもっずもっず色んなこずしおたすペ。   自分がデザむンしたものが䞖に出おいるず思うず嬉しいですよねっ ネクストデザむナヌは幎目からこんな嬉しい経隓ができたすよ〜☆   デザむンをする䞊で ・ラフ案は最䜎぀以䞊出す ・䜕のために、誰のために䜜るのかを考える を倧事にしお制䜜しおいたす。   ラッピングバスをデザむンする時は、 い぀・どこで・なぜバスを走らすのか、それによっおどうなるべきなのかを考えたり、バスを乗る人の気持ちになっおデザむンしたした。 わからないこずがあればい぀でもグルヌプの先茩や、呚りの方に助けおもらっおいたす。 䞁寧に指導しおくださるネクストの瀟員の皆さんは本圓に優しいですよ〜☆   お昌䌑み デザむナヌや゚ンゞニアのものづくりメンバヌは基本瀟内にこもっおいるのでお昌䌑みが唯䞀デスクから離れお倖に出るチャンスです コンビニで買っお食べるこずもありたすが、倖に食べに行くこずが倚いです 同期・先茩や、お䞖話になった採甚人事の方、なんず秘曞の方ずもランチに行けたす 品川のランチを制芇するこずが今期の目暙です。  定食や お肉料理など 肉・魚・米・うどん・そば・ラヌメン・パスタなど食べたいものは品川には揃っおいるので毎日矎味しいものを食べられたす。幞せです。 昌䌑みはちゃんず時間取れたすよ〜☆   仕事午埌 お腹いっぱい〜になったずころで午埌の仕事スタヌトです。 午前䞭にやっおいたこずの続きだったり、ミヌティングが入っおいたりなど19時たで業務をこなしおいたす。 あっ、15時になったら䌚瀟にくる郵䟿を瀟内の人に配達しおいたす。これも新卒の重芁な任務です 瀟内の人の顔ず名前を芚える芚えお頂くチャンス今ではすっかり配るスピヌドも速くなりたした   退瀟 新卒は残業しちゃダメず蚀われおいるので19:00になったら垰っおも倧䞈倫です。 入瀟前の勝手なむメヌシでは遅くたで仕事しおるんだろうな〜ず思っおいたしたが、そんなこずはないはずです。 これはあくたで新卒デザむナヌ個人の意芋なので、わかりたせんが・・・・ 私は19時過ぎたらきりの良いずころで䜜業はやめお、日報を曞き20時には退瀟できるようにしおいたす。 垰宅しおコヌディングの勉匷通称地獄のcodingトレヌニングに励んでいたす。   こんな日です。いかがでしたか   䌝えたいこずは぀   新卒1幎目からゞャンルにずらわれないものづくりができる ネクストは優しい人が倚い お昌においしいご飯がたべられる  以䞊です。   最埌たでご芧頂きありがずうございたしたっ 次回の曎新ではちょっず特別な1日を玹介しちゃいたすお楜しみ では  
はじめたしお、技術基盀郚の盞原( kaihar4 )です 今回は、アプリケヌションのクラりドサヌビスぞの移行の䞀環で、 Amazon S3から取埗した画像URLを含むファむルを元に、そのURLの倖郚画像を取埗しお返す機胜 を mruby で曞き盎しおAWSに移行した話をしおいきたいず思いたす。 この機胜は元々モノリシックなアプリケヌションの䞀機胜ずしお動いおいたもので、これを切り出しおAWSに移行するずいうのが今回私に䞎えられたミッションでした。 このアプリケヌションは歎史が長く、その間ほずんどメンテナンスされおいたせんでした。 ディストリビュヌションは叀くPHPのバヌゞョンも4系、したがっおそのたた持っおいくずいう遞択肢はなく、AWS䞊に新芏にむンスタンスを構築するこずになりたす。 匊瀟にはAPI郚分をPHPからRubyに移行する方針があるずいうこずもあり、Amazon Linux䞊にRubyで曞き盎したこの機胜を移行するずいうのが劥圓な線でした。 しかしアプリケヌションの性質䞊Unicornはプロセスモデル的に適さないですし、そもそもこれだけの機胜のためにアプリケヌションサヌバを甚意するずいうこずにも違和感がありたした。 そこであがっおきたのが、 mruby でこの機胜を実装し ngx_mruby で動かすずいう遞択肢です。 mruby であればRubyず(ほが)同じシンタックスで実装するこずができ、それを ngx_mruby で動かすこずでりェブサヌバがそのたたアプリケヌションサヌバずしお振舞うこずができたす。 開発者を倚く確保できる mruby ず匊瀟での運甚実瞟があるnginx、これらを䜿う旚を運甚チヌムぞ盞談の末、このプランで行くこずに決たりたした。 このように眮き換わるむメヌゞです。 元々キャッシュをするように䜜られおいなかったので、この機䌚にRedisによるキャッシュも入れたした。 ロゎ: Amazon S3 , redis ここからは mruby ず ngx_mruby に぀いおず、いかにこれらでこの機胜を実装したかに぀いお曞いおいきたす。 本゚ントリを通しおmruby + ngx_mrubyでアプリケヌションを実装するずいう遞択肢の珟実味を感じおいただければず思いたす。 mrubyずは ngx_mrubyずは mruby + ngx_mrubyでアプリケヌションを実装するには YAMLから情報を取埗する ク゚リストリングを元にAmazon S3からファむルを取埗する 取埗したURLをRedisにキャッシュする 取埗したURLにリク゚ストしお画像を取埗しお返す たずめ mrubyずは mruby ずは ISO を元に実装されたRuby1.9互換のシンタックスを持぀組み蟌み向けの軜量蚀語です。 様々な分野に掻甚事䟋があり、りェブの領域でも mod_mruby や ngx_mruby などで利甚されおいたす。 最近では h2o に採甚されたこずも蚘憶に新しいですね。 この蚀語の最倧の特城は軜量蚀語ゆえの省メモリな蚭蚈です。 mruby 本䜓には必芁最䜎限の機胜しか実装されおおらず、䟋えばファむルの読み曞きやHTTPのリク゚ストなどはサポヌトされおいたせん。 これが組み蟌み向けずされる所以で、これのお陰で非垞に少ないメモリで動䜜するこずが可胜です。 そしお、この必芁最䜎限の機胜を支える仕組みがmrbgemsです。 mrbgemsずはRubyで蚀うずころのRubyGemsにあたるもので、有志が mruby にない機胜を実装しmrbgemsずしお倚数公開しおいたす。 このC蚀語たたは mruby 自身で曞かれたmrbgemsを mruby ず共にコンパむルするこずで、それらが起動時に読み蟌たれ、その機胜を利甚できるずいう仕組みです。 mgem-list に登録されたmrbgemsであれば、 mruby 偎が自動で䟝存関係を解決しおくれるずいう匷力な仕組みも備わっおいたす。 これらを利甚するこずにより、 mruby には䞀般的なプログラミング蚀語ず遜色ない機胜が実珟されおいるのです。 ngx_mrubyずは 次は、先ほど mruby の掻甚事䟋ずしおも玹介した ngx_mruby です。 ngx_mruby は、nginx䞊で mruby を実行できるようにするnginxの拡匵です。 同じく先ほど掻甚事䟋ずしお玹介した mod_mruby はこれをhttpdで実珟したものずなりたす。 ngx_mrubyを䜿うこずで、以䞋のようにnginx内で mruby を実行するこずができたす。 location / hello { mruby_content_handler_code ' proc = Proc . new do | env | [ 200, { "Content-Type" => "text/plain;charset=utf-8" }, ["Hello World" ] ] end run proc '; } これらを䜿っお mruby でりェブサヌバの蚭定ファむルを蚘述するこずで、他の mruby を実行できるりェブサヌバず蚭定を共有するこずができたす。 秘䌝のrewriteルヌルなども mruby で蚘述するこずによっおりェブサヌバ間で䜿い回すこずができ、さらにはテストコヌドを曞く事で保守しやすいものぞずリファクタリング可胜です。 このりェブサヌバ䞊で mruby を実行できる仕組みを䜿っおアプリケヌションを実装するずいうのが今回の䞻題です。 mruby + ngx_mrubyでアプリケヌションを実装するには さお、ようやく本題です。 今回実装する機胜の芁件は以䞋の通りです。 アプリケヌションを実装する際によくある芁件だず思いたす。 YAMLから埌述のRedisに接続するための情報を取埗する 䞎えられたク゚リストリングを元にAmazon S3からファむルを取埗する Amazon S3から取埗したファむルからURLをパヌスする そのURLをRedisにキャッシュする そのURLにリク゚ストしお画像を取埗しお返す これらをmrubyでどうのように実珟するのか順に远っおいきたしょう。 YAMLから情報を取埗する アプリケヌションを開発する際には、倧抵蚭定ファむルを読み蟌んでRDBMSなどぞの接続情報を埗るずいったこずが必芁になるず思いたす。 これを mruby で実装するずどのようになるか芋おいきたしょう。 これは以䞋のような凊理で実珟するこずができたす。 YAML .load( File .open( ' /path/to/yml ' ).read) 䜿甚しおいるのは以䞋のmrbgemsです。 mruby-yaml mruby-io mruby-yaml では YAML.load_file は実装されおいないため、 mruby-io で File.open ず IO#read を䜿っおいたすが、Rubyでも動く完党Ruby互換のコヌドずなっおいたす。 ただ、これをRedisに繋ぐたびに実行するのはio的にコストなので、初回だけの実行にしたいずころです。 しかし、 ngx_mruby ではリク゚ストごずに mruby のオブゞェクトが初期化されおしたいたす。 そこで䜿うのが mruby-userdata ずいう、mrb_state構造䜓を介しおオブゞェクトを mruby プログラム間で共有するためのmrbgemsです。 初回に mruby-userdata を䜿甚しお接続情報をmrb_stateに入れおおき、以降はそこから取り出すこずで無駄な凊理をなくすこずができたす。 ngx_mruby には mruby_init ずいう起動時にのみ実行されるディレクティブがあるので、以䞋の凊理を蚘述したファむルを指定するこずでこれを実珟するこずができたす。 mruby_init /path/to/init.rb; server { } # init.rb config = Userdata .new( ' config ' ) config_file = YAML .load( File .open( ' /path/to/yml ' ).read) environment_config = config_file[ ENV [ ' ENV ' ]] config.redis = environment_config[ ' redis ' ].map {| k , v | [k.to_sym, v] }.to_h mruby-env を䜿えば、 ENV 定数によっお環境倉数を取り扱うこずができるので、環境倉数によっお読み蟌む蚭定を切り替えるずいったこずも可胜です。 環境倉数は単玔に /etc/sysconfig/nginx から枡すこずができたす。 # /etc/sysconfig/nginx export ENV=production ク゚リストリングを元にAmazon S3からファむルを取埗する 次はAmazon S3ぞリク゚ストを投げる郚分です。 ngx_mruby では rack-based-api を採甚しおいるので、以䞋のようなファむルを mruby_content_handler ディレクティブに指定するこずで mruby を実行するこずができたす。 末尟の cache を぀けるず mruby のコヌドをnginxがキャッシュするようになりたす。 location /hello { mruby_content_handler /path/to/client.rb cache; } # client.rb class Client def call (env) end end run Client .new Kernel.#run に枡すオブゞェクトは #call メ゜ッドを実装しおいる必芁があるのでProcオブゞェクトでも可胜です。 そしお、その #call メ゜ッドの匕数ずしお埗られる env オブゞェクトにク゚リストリングをはじめずした情報が栌玍されおいたす。 env['QUERY_STRING'] に䞞ごず入っおいるので以䞋のようにパヌスするず扱いやすいです。 # client.rb class Client def call (env) params = env[ ' QUERY_STRING ' ].split( ' & ' ).map {| kv | kv.split( ' = ' ) }.to_h end end run Client .new 次にAmazon S3に繋ぐ凊理ですが、今回はAmazon Linuxを䜿甚しおいるため、IAM RoleからAccess Tokenを取埗しおきおそれを䜿いたいずころです。 http://169.254.169.254 からHTTPで取埗するため、 mruby-simplehttp を䜿いたす。 たたこれも同様に毎回取埗する必芁はないので、先ほどの mruby-userdata を䜿っお init.rb で初回時にのみ実行するようにしたしょう。 IAM Roleの名前は可倉なので mruby-env を䜿っお ENV 定数により環境倉数から䞎えるこずにしおいたす。 # init.rb . . . metadata = Userdata .new( ' metadata ' ) metadata.iam_role = ENV [ ' IAM_ROLE ' ] json_credentials = SimpleHttp .new( ' http ' , ' 169.254.169.254 ' , 80 ).get( " /latest/meta-data/iam/security-credentials/ #{ metadata.iam_role }" ).body metadata.credentials = JSON .parse(json_credentials) # /etc/sysconfig/nginx . . . export IAM_ROLE=remote_image mruby にはもちろん暙準でjsonモゞュヌルはありたせんので、レスポンスのjsonのパヌスにはmrbgemsを䜿いたす。 類䌌のmrbgemsが倚数存圚したすが、ここでは mruby-iijson を䜿っおいたす。 あずはここで取埗したクレデンシャルを甚いおAmazon S3にリク゚ストするのみずなりたす。 init.rb で起動時に mruby-userdata に入れおあるので取り出しおリク゚スト時に䜿甚したす。 Amazon S3ぞのリク゚ストにはちょうどいいmrbgems、 mruby-aws-s3 があるのでこれを䜿いたしょう。 #3 におIAM Roleから埗られるSecurity Tokenに察応したので今回のようなパタヌンでも利甚するこずができたす。 䟿宜䞊、先ほどパヌスしたク゚リストリング内にAmazon S3から取埗する 画像URLを含むファむル ぞのパスが含たれおいるものずしたす。 # client.rb class Client def call (env) params = env[ ' QUERY_STRING ' ].split( ' & ' ).map {| kv | kv.split( ' = ' ) }.to_h metadata = Userdata .new( ' metadata ' ) credentials = metadata.credentials s3 = AWS :: S3 .new(credentials[ ' AccessKeyId ' ], credentials[ ' SecretAccessKey ' ], credentials[ ' Token ' ]) response = s3.download(params[ ' path ' ]) end end run Client .new これでAmazon S3から 画像URLを含むファむル を取埗するこずができたした。 ここでの泚意点ずしお、初回時にのみクレデンシャルを取埗するようにしおいるず、これらのクレデンシャルが期限切れになった堎合に察応するこずができたせん。 Access Key IdもしくはSecret Access Keyが異なっおいる堎合は 400 が、Tokenが異なっおいる堎合は 403 が repsponse.code ずしお埗られるのでクレデンシャルの再取埗の凊理が必芁です。 取埗したURLをRedisにキャッシュする Amazon S3から取埗した 画像URLを含むファむル はjsonなので、ファむルから倖郚画像のURLをパヌスする凊理は、先ほどず同じ手順で response.body をパヌスするだけなので割愛したす。 ここではAmazon S3ぞのリク゚スト数を枛らすためにRedisでキャッシュを行いたす。 これもよくあるパタヌンですが、もちろん mruby でも実珟可胜です。 これには mruby-redis を䜿いたす。 接続情報は先ほど init.rb にお取埗しおあるのでそれを䜿いたす。 # client.rb class Client def call (env) . . . config = Userdata .new( ' config ' ) redis = Redis .new(config.redis[ :host ], config.redis[ :port ]) redis.set(key, target_url) end end run Client .new 実際にはRedisのキャッシュの有無を確認しおAmazon S3ぞリク゚ストを送るかどうかを刀定する必芁がありたすが、ここでは割愛したす。 今回はRedisにAmazon ElastiCacheを利甚しおいおバック゚ンドのRedisが耇数台いるため、負荷分散のために郜床コネクションを匵っおいたすが、特にそういった事情がない堎合は、Redisのコネクション自䜓を mruby-userdata で共有しお䜿いたわすこずでコネクション開始時のオヌバヌヘッドを無くすこずができたす。 取埗したURLにリク゚ストしお画像を取埗しお返す 最埌の凊理です。 HTTPのリク゚ストを送るために、先ほどクレデンシャルを取埗するのに䜿甚した mruby-simplehttp を䜿いたす。 たたこの䟋では、 mruby-http を䜿甚しおク゚リを組み立おおいたす。 ngx_mruby が採甚しおいる rack-based-api では、 Kernel.#run メ゜ッドの匕数に䞎えるオブゞェクトが #call メ゜ッドを実装しおいる必芁があるこずに加え、レスポンスずしお返す #call メ゜ッドの返り倀が以䞋の䟋にあるような status code 、 header 、 body を含んだ配列でなければならないずいう制玄がありたす。 # client.rb class Client def call (env) . . . uri = HTTP :: Parser .new.parse_url(target_url) request_query = uri.query ? "#{ uri.path } ? #{ uri.query }" : uri.path response = SimpleHttp .new(uri.schema, uri.host, uri.port).get(request_query) unless response.code.to_i == 200 return [ 404 , { ' Content-Type ' => ' text/plain;charset=utf-8 ' }, [ ' not found ' ]] end [ 200 , { ' Content-Type ' => ' image/jpeg ' , ' Content-Disposition ' => ' inline ' }, [response.body]] end end run Client .new このように配列をメ゜ッド内で返すこずで、぀いに取埗した画像をレスポンスずしお返すこずができたした。 長くなりたしたが、以䞊でこのアプリケヌションのおおたかな凊理は完成です。 たずめ このように、軜量蚀語の mruby でも匷力なmrbgemsを駆䜿するこずで䞀般的なプログラミング蚀語ず遜色ない凊理を実行させるこずができたした。 蚀語自䜓の単玔な実行速床はRubyず比べるず䞀長䞀短 *1 で単玔にどちらが早いずは蚀い切れたせんが、より少ないメモリで動䜜し、別途アプリケヌションサヌバを必芁ずしない mruby の採甚は䞀考の䟡倀がありそうです。 匊瀟ではすでにこのアプリケヌションが本番環境で動いおおり、200侇req/dayを受けながら安定皌働しおいたす。 mruby でこういったアプリケヌションを曞くこずの是非は今埌の運甚を通しお刀断しおいきたいです。 *1 : RubyではC蚀語で実装されおいたメ゜ッドがmrubyだずmruby自身で実装されおいるケヌスがあり、その堎合はmrubyの方が実行速床が遅い
こんにちは新卒入瀟2幎目デザむナヌのカンバラずタカラベです。 2人ずも、HOME'Sのサむト改修やノベルティの制䜜などをしおおりたす。デザむンテクニックず合わせお、䞍動産業界の動向も日々勉匷の毎日です そんな䞭、DIYに詳しい先茩デザむナヌにお誘いいただいお、人気に火が぀いおいるず噂の『カスタマむズ賃貞』で最先端をいく賃貞マンション「 ロむダルアネックス 」にご蚪問させおいただきたした。 カスタマむズ賃貞ロむダルアネックス 「 ロむダルアネックス 」ずは、東京郜・豊島区にある13階建おの賃貞マンションです。 単玔に広さや蚭備の郚分を芋るず䞀般的なマンションずほが同じです。が実際は満宀状態が続いおおり、郚屋によっお入居埅ちが出おいるほど 「な、なぜ賃貞マンションに入居埅ちが」 人気の秘密のひず぀には、『カスタマむズ賃貞』のマンションだずいうこずでした カスタマむズ賃貞ずは、泚文䜏宅や新築だけでなく、賃貞でも居䜏者が郚屋の壁玙や床材などを自由にカスタマむズできるお郚屋のこずです。 そんなロむダルアネックスでカスタマむズ賃貞を仕掛けたのは、株匏䌚瀟メゟン青暹の青朚玔さん。 実は、以前匊瀟で䞭叀マンションの敏腕事業責任者ずしお名を銳せおいた方で、退職埌にご実家の賃貞マンションを匕き継がれたそうです。 賃貞マンションでも、もっず暮らしを楜しめる人を増やしたい。 そのために、壁玙を遞べるようにしよう。 青朚さんの想いが、今のロむダルアネックスの原点だったそうです。  これが賃貞カスタマむズ賃貞の玹介 青朚さんをはじめ、ロむダルアネックスの方々にたくさんの玠敵なお郚屋を芋孊させおいただきたした 今回は、私たちが特に興奮したカスタマむズ賃貞を2郚屋ピックアップしたす。 かっ可愛すぎるこれなら私もできるかもサラさんのお郚屋 1郚屋目は株匏䌚瀟メゟン青暹の新入瀟員である、サラさんのお郚屋をご玹介したす  サラさんのお郚屋は、ビビッドな黄色ず青の原色に圩られた壁ず、「額瞁柄」の壁が絶劙な調和をみせおおりたす。 ベッド正面に貌られたいろんな圢の「額瞁柄」の壁玙には、ずころどころスケッチや小物類が食られ、本物の「額」のような圹割を䞎えられおいたす。 冷蔵庫の扉や本棚の偎面に黒板塗料を吹きかけおおり、チョヌクで字や絵が描けるようになっおいるのも玠敵でした。 驚くべきこずに、壁玙や床材はサラさんご自身が貌ったそうですどこで材料を仕入れたのかも優しく教えおくださり、「なんだか私にもできそう」ず思わせおくれたお郚屋でした。 ちなみに、ご入瀟されたきっかけは䜕だったのでしょう同じ新卒入瀟の身ずしお気になり、こっそり䌺っおみたした。 倧孊時代にたちや地域に興味を持ち、 掻動しおいる䞭で青朚さんず出䌚いたした。 リノベヌションスクヌルぞの参加を通しお、青朚さんの取り組みに関わりを持ちはじめ、その埌、入瀟を誘っおもらいたした。 「ほしい暮らしを぀くるこず・人やたちず぀ながりのある暮らし方」がここでならできるのではず思っお、入瀟を決めたんです なんお玠敵なのでしょう... そんなサラさんは、䌚瀟ず自分の郚屋が同じ建物にあるため、通勀ぱレベヌタヌで30秒。Instagram「 30秒通勀女子の日垞 」で日々の暮らしを発信されおいたす。是非ご芧ください 党おオヌダヌメむドルヌム名は「KOJAK」 ロむダルアネックスには壁玙だけでなく、間取りも自由に倉えおしたう「オヌダヌメむド賃貞」のお郚屋もありたす なんず、隣り合ったワンルヌムが2郚屋空いたのがきっかけで、仕切っおいた壁を壊しお、1郚屋に繋げおみたそうです そのため、こちらのお郚屋は玄関が2぀あり、お邪魔する前から驚きでした写真が残っおいなくおごめんなさい  内装も入居者の方のセンスが光る玠敵さ。鮮やかなタむルの敷き詰められたキッチンや、ステンドグラスの぀いた抌入れ収玍が、倧人のオシャレな空間を䜜り出しおいたした。  カスタマむズ賃貞の魅力 皆さん、ロむダルアネックスのカスタマむズ賃貞はいかがでしたでしょうか 芋孊した私たちは、1぀1぀の郚屋がアトラクションのように芋えお、それはもう、わくわくしっぱなしでした なんずいっおも、 どこにでもあるごく普通の小さくお真っ癜な郚屋が、 少し手を入れるだけでその人オリゞナルの空間になるこず 。 賃貞マンションに持っおいた固定抂念が、厩れおいくような衝撃でした。 意倖ずカスタマむズは簡単にできる カスタマむズ賃貞に興味を持った人の最初のハヌドルは、「やっおみたいけど、手間がかかる」ではないでしょうか。 賃貞マンションを自分奜みのお郚屋にするには、お金も時間も、手間もかかるず思いがちです。 しかし、今回の蚪問でお話を䌺ったずころ、貌ったり剥がしたりできる壁玙や、床に乗せお組み合わせるだけでできる無垢の朚を䜿った床材なども増えおきたそうです こういった手軜な材料も増えおきたこずにより、カスタマむズぞのハヌドルが 䞀気に 䞋がっおいるそうですよ HOME'Sができるこず 今回、私たちはロむダルアネックスに蚪問しお、カスタマむズ賃貞の魅力、そこに䜏む人々の幞せそうな暮らしかた、倧家さんの熱い想いを肌で感じるこずができたした。 HOME'Sは䜏たい探しのポヌタルサむトであり、均䞀で粟床の高い物件情報を倚くのナヌザヌに届けるこずを目指しおいたす。 しかし、それだけではなく、ロむダルアネックスのような魅力的で新しい暮らし方も提案しおいきたいそう思わせおくれる堎所でした。  そのためには、たずカスタマむズ賃貞ずいうもの自䜓を倚くの人に知っおもらう必芁がありたす。少しず぀ではありたすが、䞋蚘のようなキャンペヌンを通しお、カスタマむズ賃貞ぞの取り組みを始めおおりたす。 www.homes.co.jp ※2016幎7月12日珟圚、キャンペヌンは行っおおりたせん。  HOME'Sは、今埌も䜏たいに぀いお様々な取り組みを行っおいきたすぜひご期埅ください  ロむダルアネックスの䞭にある飲食店「 郜電テヌブル 」にもお邪魔し、矎味しいご飯をお腹いっぱいいただきたした 最埌には青朚さん、サラさん、芋孊者で集合写真を撮りたした
こんにちは、リッテルラボラトリヌの枅田です。 来たる9月7日氎〜9日金に 富山倧孊 で開催される 第15回情報科孊技術フォヌラムFIT 2016 のむベント䌁画にお、リッテルラボラトリヌの石田・枅田が登壇するこずになりたした。 あわせお、ネクストずしおブヌス出展も行いたす。 倚くの方々のお越しをお埅ちしおおりたす むベント䌁画「ここから始める情報凊理 画像、音声、テキスト、怜玢、孊習、䞀気にたずめおチュヌトリアル」 9/7 13:00-15:00 このセッションでは、音声認識ツヌルキット Kaldi 、自然蚀語凊理の基本的ツヌル矀、 怜玢性胜評䟡ツヌルキット NTCIREVAL 、 Support Vector Machine など、さたざたな研究分野のツヌルのチュヌトリアルがたずめお行われたす。 ネクストからは、昚幎に倚方面で話題になった ディヌプラヌニングでおそ束さんの六぀子は芋分けられるのか を題材ずしお、 Chainer による画像識別のチュヌトリアルを石田が行いたす。 bohemia.hatenablog.com むベント䌁画「Real Estate Tech䞍動産×IT ITが拓く䞍動産の未来」 9/8 9:30-12:00 最近、金融分野の Fintech ず同様に、䞍動産分野でも Real Estate TechReTech ずいうキヌワヌドが䜿われるようになっおきたした。今回のFITでは、䞍動産分野で情報掻甚を進めおいる䌁業や、䞍動産にかかわる研究を進めおいる研究者が䞀堂に䌚したパネルセッションが䌁画されおいたす。 ネクストからは、昚幎11月より研究者向けに提䟛を開始した HOME'Sデヌタセット の掻甚状況や、䞍動産分野特有の研究課題に぀いお枅田がお話ししたす。 nextdeveloper.hatenablog.com たた、珟圚リッテルラボラトリヌずコラボレヌションを進めおいる 100ninmap project の䞭心メンバヌのお䞀人である和歌山倧孊の 宮郚真衣先生 からも、䜏たい遞び支揎を目的ずした街の雰囲気の可芖化の取り組みに぀いおお話しいただく予定です。 www.100ninmap.com
こんにちは。技術基盀郚の磯野です。 先日に匕き続きZipkinです。 今回は PHP + Symfony で動いおいる Webアプリケヌションぞのトレヌサヌの導入です。 前回の蚘事 → Zipkinを導入しおみたサヌバヌ線 構成 凊理の流れ 凊理の流れを远跡するためのリク゚ストヘッダ fluentdの蚭定 PHP(Symfony)偎の実装 クラむアントラむブラリ Hoopak Apache Thrift ゜ヌスコヌド DI甚蚭定ファむル(抜粋) むベントリスナクラス サヌビスコンテナクラスむベントリスナにDIする甚 足りない機胜を補充するためのラッパヌクラス WebAPI呌び出しのロギング远加 出力 構成 PHPは非同期に凊理ができないので盎接Zipkinサヌバヌにに投げるのではなくロヌカルのfluentdを利甚しおできるだけ短時間で凊理が終わるようにしおいたす。 画像のアプリケヌション・フレヌムワヌク → Zipkin Symfony2 Fluentd Sinatra 凊理の流れ トレヌスデヌタの初期化(trace_id, span_idにナニヌクな倀を蚭定する) Symfonyのむベントリスナのkernel.requestずkernel.responseをSubscribe kernel.requestむベントの通知時にリク゚ストの受付時刻(microtime)やURLなどを保存 WebAPI呌び出し時に凊理の流れを远跡するための情報をリク゚ストヘッダに付䞎 WebAPI呌び出し凊理の盎前に送信時刻(microtime)やリク゚スト先を保存 WebAPI呌び出し終了時に受信時刻(microtime)を保存し、API呌び出し開始時に保存した内容ず䞀緒にロヌカルのfluentdにscribeで送信 kernel.responseむベントの通知時にレスポンス送信時刻(microtime)を保存し、kernel.requestで保存した内容ず䞀緒にロヌカルのfluentdにscribeで送信 fluentdは順次Zipkinサヌバヌに転送 WebAPIが管理倖のサヌビスの堎合にはトレヌスデヌタの远跡情報をリク゚ストヘッダに付䞎せずに凊理を行いたす。 なお、アプリケヌションずWebAPIの呌び出しのトレヌスデヌタを別々にfluentdに流すようになっおいたすが、埌述のラむブラリの仕様です。 トレヌスするシステムが倚い堎合はたずめお送信するように改修した方がよさそうです。 凊理の流れを远跡するためのリク゚ストヘッダ WebAPIの呌び出しのトレヌスデヌタは取埗できたすが、WebAPIからさらに別のWebAPIを呌ぶ堎合には、䞀連の流れを認識するデヌタを持ちたわる必芁がありたす。 そこで、HTTPヘッダにその流れを認識するために必芁なデヌタを付䞎しおいたす。 以䞋はそのHTTPヘッダずその説明です。 HTTP Header Type 説明 X-B3-TraceId 64 encoded bits *1 リク゚ストごずに共通のID、これで远跡情報を玐付ける X-B3-SpanId 64 encoded bits *1 蚈枬ごずに䞀意に決たるID X-B3-ParentSpanId 64 encoded bits *1 盎前のSpanId X-B3-Sampled Boolean (either “1” or “0”) *2 サンプリング察象かどうか X-B3-Flags a Long - *1 内郚デヌタは数倀ですが、ヘッダに付䞎する際は16進数衚珟した文字列に倉換したす。 *2 rubygemsにあるzipkin-tracerが「X-B3-Sampled」を受け取る際に'true'(文字列)を芁求するので文字列に倉換したす。 詳しくは以䞋URLの「HTTP Tracing」を参照しおください。 http://zipkin.io/pages/instrumenting.html fluentdの蚭定 scribeで受け取りzipkinのscribe甚のポヌトに転送するためのfluentdの蚭定はこんな感じです。 ※ 事前に fluent-plugin-scribe を導入しおいたす。 <source> type scribe port 1463 </source> <match zipkin .**> type scribe host zipkinserver port 9410 field_ref message </match> PHP(Symfony)偎の実装 続いおPHP(Symfony)偎の実装です。 クラむアントラむブラリ たずはZipkinにトレヌスデヌタを送信するためのラむブラリの導入をしたす。 Hoopak PHP甚のラむブラリは 公匏 には存圚しなかったので。GitHubで探したした。 1぀しか芋぀からなかったのでこちらを利甚しおいたす。 https://github.com/Jimdo/hoopak This implementation might be incomplete and very naive ずのこずでちょっずドキドキですが、期埅通りに動かなければ盎せばいいだけなのでそのたた䜿いたす。 Apache Thrift HoopakはApache Thriftに䟝存しおいたす。 https://thrift.apache.org/ 䞊蚘URLのペヌゞからダりンロヌドしおきたファむルを展開するず各蚀語甚のラむブラリが入っおいるのでPHP甚を利甚したす。 ゜ヌスコヌド Symfonyをあたり理解せずに䜜っおいるので、䜿い方ずか甚語ずか説明ずか違ったらご指摘ください。 たた、以䞋の3ファむルのrequireが必芁なようなので事前にどこかでrequireしおおいた方がいいです。 hoopak/gen-php/Scribe/Types.php hoopak/gen-php/Scribe/scribe.php hoopak/gen-php/Zipkin/Types.php DI甚蚭定ファむル(抜粋) ExampleApp/Resources/config/services.yml parameters : zipkintracer.samplerate : 0.1 zipkintracer.service_name : webserver services : zipkin_tracer : scope : request class : ExampleApp\TracerService arguments : - @request - %zipkintracer.service_name% - %zipkintracer.samplerate% zipkin_event_listener : scope : request class : ExampleApp\TraceEventListener tags : - { name : kernel.event_subscriber } arguments : - @zipkin_tracer - @kernel - @request むベントリスナクラス <?php namespace ExampleApp; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; /** * Zipkinでのトレヌス甚のむベントリスナ * リク゚スト開始〜レスポンス盎前の時間の蚈枬を登録する。 **/ class TraceEventListener implements EventSubscriberInterface { /** * コンストラクタ * * @param ExampleApp\TraceService $trace * @param AppKernel $kernel * @param Request $request */ public function __construct ( $ tracer , $ kernel , $ request ) { $ this -> tracer = $ tracer ; $ this -> kernel = $ kernel ; $ this -> request = $ request ; } public static function getSubscribedEvents () { return array ( ' kernel.request ' => ' onKernelRequest ', ' kernel.response ' => ' onKernelResponse ', ) ; } public function onKernelRequest ( GetResponseEvent $ event ) { $ trace = $ this -> tracer -> getTrace () ; $ trace -> record ( \Hoopak\Annotation :: serverReceive ()) ; $ trace -> record ( \Hoopak\Annotation :: string ( ' server.env ', $ this -> kernel -> getEnvironment ())) ; $ trace -> record ( \Hoopak\Annotation :: string ( ' http.uri ', $ this -> request -> server -> get ( ' SCRIPT_URL ' ))) ; $ trace -> record ( \Hoopak\Annotation :: string ( ' http.query ', json_encode ( $ this -> request -> query -> all ()))) ; } public function onKernelResponse ( FilterResponseEvent $ event ) { $ trace = $ this -> tracer -> getTrace () ; $ trace -> record ( \Hoopak\Annotation :: serverSend ()) ; } } サヌビスコンテナクラスむベントリスナにDIする甚 <?php namespace ExampleApp; require_once ' hoopak/gen-php/Scribe/Types.php '; require_once ' hoopak/gen-php/Scribe/scribe.php '; require_once ' hoopak/gen-php/Zipkin/Types.php '; /** * Zipkinによるトレヌス甚クラスの初期化凊理保持する * **/ class TracerService { private $ _tracer ; /** * コンストラクタ * * @param Request $request * @param float $samplerate Zipkinによるトレヌスをサンプリングするレヌトの指定 */ public function __construct ( $ request , $ service_name , $ samplerate = 1.0 ) { $ method = strtolower ( $ request -> server -> get ( ' REQUEST_METHOD ', ' GET ' )) ; $ tracer = new \Hoopak\ZipkinTracer ( new \Hoopak\ScribeClient ( ' localhost ', 1463 )) ; $ this -> _trace = new TraceWrapper ( $ method , null , null , null , $ samplerate , array ( $ tracer )) ; $ ipaddress = $ request -> server -> get ( ' SERVER_ADDR ' ) ; $ port = $ request -> server -> get ( ' SERVER_PORT ' ) ; $ this -> _trace -> setEndpoint ( new \Hoopak\Endpoint ( $ ipaddress , $ port , $ service_name )) ; } public function getTrace () { return $ this -> _trace; } } 足りない機胜を補充するためのラッパヌクラス あずで敎理しおhoopak偎に取り蟌んでプルリク出したいず思いたす。 <?php namespace ExampleApp; /** * Hoopak\TraceのWrapクラス * **/ class TraceWrapper { /** * @var Hoopak\Trace **/ private $ _trace ; /** * @var boolean * Hoopak\Trace゚ラヌ時に次回以降凊理を転送しないためのフラグ * **/ private $ _error = false ; /** * @var array * \Hoopak\ScribeClientなどのむンスタンスを持぀配列 **/ private $ _tracer = array () ; /** * @var \Hoopak\Endpoint **/ private $ _endpoint = null ; /** * トレヌスデヌタを取埗するかどうか **/ public $ sampled = true ; /** * @var array APIサヌバヌに送信するZipkinヘッダの察応衚 **/ private $ _headers = array ( ' traceId ' => ' X-B3-TraceId ', ' parentSpanId ' => ' X-B3-ParentSpanId ', ' spanId ' => ' X-B3-SpanId ', ' sampled ' => ' X-B3-Sampled ', #'flags' => 'X-B3-Flags' ) ; /** * コンストラクタ * * @param Hoopak\Trace */ public function __construct ( $ method , $ traceId = null , $ spanId = null , $ parentSpanId = null , $ samplerate = 1.0 , $ tracers = array ()) { if ( !$ traceId ) { $ traceId = $ this -> _id () ; } if ( !$ spanId ) { $ spanId = $ this -> _id () ; } $ this -> _tracers = $ tracers ; $ this -> _trace = new \Hoopak\Trace ( $ method , $ traceId , $ spanId , $ parentSpanId , $ tracers ) ; if ( $ samplerate < 1.0 ) { $ this -> sampled = ( $ samplerate == 0 ) ? false : ( $ samplerate > ( mt_rand () / mt_getrandmax ())) ; } } /** * @see \Hoopak\Trace::record() * sampled=falseの時は䜕もしない **/ public function record ( $ annotation ) { if ( !$ this -> sampled ) { return ; } $ this -> __call ( ' record ', array ( $ annotation )) ; } /** * @see \Hoopak\Trace::child() * \Hoopak\Trace::_id()が同䞀IDを返华する確率が高すぎるので、䜿わないように凊理を䞊曞き **/ public function child ( $ name ) { $ samplerate = $ this -> sampled ? 1.0 : 0.0 ; $ trace = new self ( $ name , $ this -> traceId, $ this -> _id () , $ this -> spanId, $ samplerate , $ this -> _tracers ) ; $ trace -> setEndpoint ( $ this -> _endpoint ) ; return $ trace ; } /** * @see \Hoopak\Trace::setEndpoint() * このクラスでもendpointを倉数ずしお保持する **/ public function setEndpoint ( $ endpoint ) { $ this -> _endpoint = $ endpoint ; $ this -> __call ( ' setEndpoint ', array ( $ endpoint )) ; } /** * Hoopak\Traceに凊理を移譲するためのメ゜ッド * 移譲先で゚ラヌが発生した堎合は、握り぀ぶす * * 個別のメ゜ッドに関しおは移譲先を参照 * @see hoopak/src/Hoopak/Trace.php * **/ public function __call ( $ name , $ arguments ) { if ( $ this -> _error ) { return ; } try { return call_user_func_array ( array ( $ this -> _trace, $ name ) , $ arguments ) ; } catch ( \ Exception $ e ) { $ message = " exception ' " . get_class ( $ e ) . " ' with message ' " . $ e -> getMessage () . " ' in " . $ e -> getFile () . " : " . $ e -> getLine () ; error_log ( $ message ) ; $ this -> _error = true ; } } /** * \Hoopak\Traceのパブリックなむンスタンス倉数を取埗するためのメ゜ッド * * 個別の倉数に関しおは以䞊先を参照 * @see hoopak/src/Hoopak/Trace.php **/ public function __get ( $ name ) { return $ this -> _trace ->$ name ; } /** * Zend\Http\Clientでのリク゚ストデヌタ、レスポンスデヌタを元にZipkinぞのトレヌス登録ずを行う。 * たた、リク゚ストヘッダにZipkinのトレヌス情報転送甚のヘッダを付䞎する。 * * @param string $name リク゚スト送信先のサヌビス名称 * @param Zend\Http\Client $client * @param callable $block ( * @param ExampleApp\TracerWrapper * @return Zend\Http\Response * ) * @return Zend\Http\Response * **/ public function traceWithHTTPClient ( $ name , $ client , $ block ) { $ tracer = $ this -> _createChildHTTPTracer ( $ name , $ client ) ; $ tracer -> _prepareHTTPClient ( $ client ) ; $ tracer -> record ( \Hoopak\Annotation :: clientSend ()) ; $ httpResponse = $ block ( $ tracer ) ; $ tracer -> record ( \Hoopak\Annotation :: string ( ' http.status ', $ httpResponse -> getStatusCode ())) ; $ tracer -> record ( \Hoopak\Annotation :: clientReceive ()) ; return $ httpResponse ; } /** * Zend\Http\Clientのデヌタを元に子トレヌスむンスタンスを䜜成し返华する。 * * @param string $name リク゚スト先サヌビス名 * @param @param Zend\Http\Client $client * @return ExampleApp\TracerWrapper * **/ private function _createChildHTTPTracer ( $ name , $ client ) { $ uri = $ client -> getUri () ; $ query = $ client -> getRequest () -> getQuery () ; $ method = $ client -> getRequest () -> getMethod () ; $ trace = $ this -> child ( strtolower ( $ method )) ; $ serverAddress = \Hoopak\Annotation :: string ( ' sa ', ' 1 ' ) ; $ serverAddress -> endpoint = new \Hoopak\Endpoint ( $ uri -> getHost () , $ uri -> getPort () , $ name ) ; $ trace -> record ( $ serverAddress ) ; $ trace -> record ( \Hoopak\Annotation :: string ( ' http.uri ', $ uri -> getPath ())) ; $ trace -> record ( \Hoopak\Annotation :: string ( ' http.query ', json_encode ( $ query ))) ; return $ trace ; } /** * Zend\Http\Clientにトレヌスデヌタ転送に必芁なリク゚ストヘッダを付䞎する * @param Zend\Http\Client $client * **/ private function _prepareHTTPClient ( \Zend\Http\Client $ client ) { foreach ( $ this -> _headers as $ key => $ value ) { $ headers [ $ value ] = $ this -> _getStringData ( $ key ) ; } $ client -> setHeaders ( $ headers ) ; } /** * * @param $key string key of data * @return string- **/ private function _getStringData ( $ key ) { $ value = $ this ->$ key ; switch ( gettype ( $ value )) { case ' integer ' : $ ret = sprintf ( " %016s ", dechex ( $ value )) ; break ; case ' boolean ' : $ ret = $ value ? ' true ' : ' false '; break ; default: $ ret = ( string ) $ value ; break ; } return $ ret ; } private function _id () { return ( int ) round ( microtime ( true ) * 1000 * 1000 ) ; } } WebAPI呌び出しのロギング远加 このようにWebAPIを呌び出しおいる郚分(Zend\Http\Client)があったら $response = $client- > send(); こんな感じに曞き換える事でWebAPIぞのリク゚ストのトレヌスが有効になりたす。 $tracer = $this- > container- > get('zipkin_tracer')- > getTracer(); $response = $tracer- > traceWithHTTPClient("webapi", $client, function($childTracer) use ($client) { return $client- > send(); }); 出力 以䞋の赀で囲った郚分が今回の䜜業により蚘録されるようになりたす。 次回は、WebAPIサヌバヌぞの導入(Rubyç·š)の予定です。
こんにちは、リッテルラボラトリヌの枅田です。 このたび、 電気通信倧孊 に新蚭される 人工知胜先端研究センタヌ AIXに、 サポヌタヌ䌁業ずしおネクストが参画 するこずになりたした。 リッテルラボラトリヌでは、電気通信倧の 栗原研究宀 ず、゜ヌシャルメディアを通じお䜏たい探しナヌザヌを理解するこずを目指した共同研究を掚進しおきたした。その成果は、 人工知胜孊䌚党囜倧䌚 (JSAI 2015) や、2015幎12月にシンガポヌルで開催された囜際ワヌクショップ DOCMAS/WEIN 2015 などで発衚しおおりたす。 nextdeveloper.hatenablog.com JSAI2015 ツむヌトタむムラむンぞの階局的クラりド゜ヌシングの適甚による䜏たい探しナヌザの背景ニヌズ理解 from Yoji Kiyota www.slideshare.net Mining User Experience through Crowdsourcing: A Property Search Behavior Corpus Derived from Microblogging Timelines from Yoji Kiyota www.slideshare.net 今埌、共同研究を通じお䞀人ひずりの生掻に密着した䜏たいなどの領域でのナヌザヌ理解をさらに深めおいくずずもに、 HOME'Sデヌタセット の提䟛を通じお掻甚され぀぀ある䞍動産物件画像ぞのdeep learning適甚で埗られた知芋なども掻かし、人工知胜技術を身近にしおいくためにAIXの掻動に積極的に協力しおいきたす。 今埌の進展にご期埅ください
こんにちは。技術基盀郚の磯野です。 匊瀟ではここ数幎、HOME'Sのクラりド化やマむクロサヌビス化を掚進しおいたす。 アプリケヌションのクラりドサヌビスぞの移行に関しおはそろそろ終わりが芋えおきおいるのですが、 マむクロサヌビスに関しおはただただ道半ばずいうこずもあり、掚進しおいくにあたっお、 各サヌビス間の䟝存関係やトレヌス情報を可芖化する手段ずしおzipkinをAWS䞊に詊隓的に導入しおみたした。 今回はZipkinサヌバヌの導入たでの手順に぀いおたずめたいず思いたす。 Zipkin ずは デヌタストレヌゞの遞択 InMemory MySQL いいずころ 残念なずころ Cassandra いいずころ 残念なずころ Elasticsearch いいずころ 残念なずころ 基本構成 サヌビスのむンストヌル MySQLの蚭定 zipkinのむンストヌルず確認甚の起動 supervisordのむンストヌル おたけ zipkinのすぐに䜿いそうな環境倉数 Zipkin ずは 分散環境における各サヌビスの呌び出し状況を収集・可芖化できるシステムです。 文字だけだずよくわかりたせんが、サヌビス間の呌び出しをこんな感じで可芖化できるサヌビスです。 ※個人環境のデヌタです。 デヌタストレヌゞの遞択 Zipkinは暙準で぀のデヌタストレヌゞに察応しおいたす。(InMemory, MySQL, Cassandra, Elasticsearch) 今回は詊隓的な導入ずいうこずもあり、運甚面や金銭面も加味しお、ずりあえずMySQL(RDS-Aurora)で進めおいたす。 以䞋に各項目に぀いお軜くたずめたした。最終的にはElasticsearchもしくはCassandraに切り替えたいず考えおいたす。 InMemory 氞続化されないので確認的な利甚以倖では利甚しにくい MySQL いいずころ わかりやすい RDSを利甚すればほずんど管理コストがかからない 残念なずころ パフォヌマンスに問題がある 曞き蟌みは問題なかったが、読み蟌みは顕著に圱響が出た サンプリングレヌトをかなり䞋げおいるにもかかわらず、1日〜2日皋床数癟䞇レコヌド経過しただけで目に芋えお怜玢が遅くなる * r3.largeを利甚しおいるこずも急激な速床䜎䞋の原因の䞀぀だず思われる Cassandra いいずころ Expireを蚭定できるので明瀺的なデヌタ削陀が必芁ない 倧量のデヌタでも高速に凊理できる 残念なずころ マネヌゞドサヌビスがあるわけではないので自分でむンスタンスの管理をする必芁がある 瀟内でのCassandraの評刀が悪すぎる。誰も運甚したくないみたい Elasticsearch いいずころ 倧量のデヌタでも高速に凊理できる 残念なずころ Amazon Elasticsearch Serviceで利甚できない Amazon Elasticsearch Serviceはノヌド䞀芧をマスクした状態で返华するので、デフォルトのアダプタでは利甚できない様子 マネヌゞドサヌビスが利甚できないので自分でむンスタンスの管理をする必芁がある 基本構成 たずは基本構成ずしお、以䞋のようにする予定です。 今回は右偎の管理甚VPC内の構成を䜜る䜜業を行いたす。 サヌビスのむンストヌル MySQLの蚭定 MySQL5.6で利甚できるので、今回はMySQL5.6互換なAuroraを利甚したす。 ※Auroraの起動方法やセキュリティグルヌプの蚭定などに぀いおは割愛したす。 たず、新芏にパラメヌタグルヌプを䜜り、innodb_file_formatをBarracudaに蚭定を行いたす。 䜜成したパラメヌタグルヌプを指定しおAuroraむンスタンスを起動したす。 デヌタベヌス名は暙準でzipkinにしおおくずZipkinサヌバヌ起動時に指定しなくお枈みたす。 たたzipkinに必芁なテヌブルを䜜りたす。github䞊にsqlファむルがあるので、そちらを取埗しおsqlを流したす。 {}で囲っおある郚分は環境䟝存なので、必芁に応じお倉曎しおください。 $ sudo curl ' https://raw.githubusercontent.com/openzipkin/zipkin/master/zipkin-storage/mysql/src/main/resources/mysql.sql ' -o /tmp/mysql.sql $ mysql -h{ zipkin_aurora_host } -u{ zipkin_aurora_user } -p -Dzipkin < /tmp/mysql.sql 以䞋のファむルに泚意事項が曞いおあるので詳しくはこちらを参照しおください。 https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/README.md zipkinのむンストヌルず確認甚の起動 EC2むンスタンスを起動したす。 セキュリティグルヌプを蚭定する堎合にはむンバりンドで9410(scribe),9411(http)の2぀のポヌトを解攟しおおく必芁がありたす。 mysqlの蚭定時ず同様{}で囲っおある郚分は環境䟝存なので、必芁に応じお倉曎しおください。 $ sudo yum install mysql java-1.8.0-openjdk java-1.8.0-openjdk-devel $ sudo alternatives --set java /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java $ sudo mkdir /opt/zipkin $ sudo curl -L ' https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec ' -o /opt/zipkin/zipkin.jar $ sudo STORAGE_TYPE = " mysql " MYSQL_HOST = " {zipkin_aurora_host} " MYSQL_USER = " {zipkin_aurora_user} " MYSQL_PASS = " {********} " java -jar /opt/zipkin/zipkin.jar ブラりザから http://zipkinserver:9411/ を開くこずでトップペヌゞにアクセスできたす。 たた、 http://zipkinserver:9411/mappings にはURLのマッピング蚭定がありたす。 その䞭でも http://zipkinserver:9411/env は蚭定環境倉数、デフォルト倀などを返华しおくれるので重宝したす。 ただし、環境倉数ずしお枡したパスワヌドをマスクせずに返华するようなのでパスワヌドを利甚する堎合はアクセス制限した方がよさそうです。 supervisordのむンストヌル daemon化するためにsupervisordを入れおupstartの蚭定を远加したした。 ※ pipをupgradeするずなぜか/usr/bin/pip → /usr/local/bin/pipになっおしたうのでちょっず困っおたす。 $ sudo pip install pip --upgrade $ sudo /usr/ local /bin/pip install supervisor $ cat <<EOF | sudo tee /etc/init/supervisord.conf description "supervisord" start on runlevel [2345] stop on runlevel [!2345] respawn exec /usr/local/bin/supervisord -n EOF $ mkdir /var/log/supervisor $ mkdir /etc/supervisor.d $ /usr/ local /bin/echo_supervisord_conf | sudo tee /etc/supervisord.conf $ cat <<EOF | sudo tee -a /etc/supervisord.conf [include] files = /etc/supervisor.d/*.ini EOF $ cat <<EOF | sudo tee /etc/supervisor.d/zipkin.ini [program:zipkin] command=java -jar zipkin.jar directory=/opt/zipkin autostart=true autorestart=true stopasgroup=true logfile=/var/log/supervisor/zipkin.log environment=STORAGE_TYPE="mysql",MYSQL_HOST="{zipkin_aurora_host}",MYSQL_USER="{zipkin_aurora_user}",MYSQL_PASS="{********}",SELF_TRACING_ENABLED="false" EOF $ sudo initctl start supervisord これで䞇が䞀萜ちおも、supervisordが起動しおくれたす。 以䞊で基本的な蚭定は終了です。 おたけ zipkinのすぐに䜿いそうな環境倉数 環境倉数 デフォルト倀 説明 SELF_TRACING_ENABLED true falseにするこずでzipkin自身のトレヌスを停止できる COLLECTOR_SAMPLE_RATE 1.0 サンプリングレヌト 0.0〜1.0の範囲を指定。0にすればロギングを停止できる COLLECTOR_PORT 9410 scribe甚ポヌト STORAGE_TYPE mem mem,cassandra,elasticsearch,mysqlから遞択可胜 MYSQL_HOST localhost 接続先MySQLホスト名 MYSQL_TCP_PORT 3306 接続先MySQLポヌト MYSQL_USER - 接続先MySQLナヌザヌ名 MYSQL_PASS - 接続先MySQLパスワヌド MYSQL_DB zipkin 接続先MySQLデヌタベヌス QUERY_PORT 9411 Webサヌバヌポヌト すべおの環境倉数はこちらを参照しおください。 https://github.com/openzipkin/zipkin/blob/master/zipkin-server/src/main/resources/zipkin-server.yml 次回は、アプリケヌションサヌバヌぞの導入(PHPç·š)の予定です。
Apple原理䞻矩者の倧坪です。人は思いがけない出来事に盎面するず、その理由を探さずにはいられない。お財垃を萜ずしおしたったなぜだろうきっず今朝黒猫印を぀けた車が私の前を暪切ったのがいけなかったのだ、ずかなんずか。 いきなり䜕を曞いおいるかずいえばあれですよ。幎に䞀床行われるAppleの開発者向け䌚議WWDCのチケットが圓たったんですよ。いや、倧䞈倫。ちゃんず理解しおたす。これは奇跡でもなんでもなくarc4random_uniform関数 *1 がたたたた「参加」の倀を返しただけ、ず。しかしこれは私の垞軌を逞したAppleぞの愛がなせる技ではなかろうか、ず頭の片隅で考えおいるのも事実。 などず のんきなこずを蚀っおいる堎合ではありたせん。わヌいわヌいず喜んでいいのは30秒ほど。早く正気に垰りあれこれの手配をしなくおはなりたせん。 たずはホテルず航空刞の手配。毎幎驚かされるのはSan Fransisco゚リアでの宿泊代の高隰ぶり。おたけに少しでも宿泊堎所確保に出遅れるずあっずいうたに満宀の嵐になる。 「予算内の堎所はないか」ず血県になっおあちこちのサむトを探し「あったヌ」ず思ったら予玄ボタンを抌す前に こちらの情報 などを確認したしょう。安くおしかも空宀があるホテルがこうした゚リアに存圚しおいる確率は悲しくなるほど高い。 そうした壁を乗り越え、宿ず足を確保するず、今床は情報収集を始める。去幎は珟地で前倜に、今幎は日本で䞀週間前に参加者同士の飲み䌚が行われたした。䞻催者の方には感謝の他ありたせん。そこで必ず話題になるのが   「初日のキヌノヌト䜕時から䞊ぶ」   2013幎に参加した時は、迂闊にも寝過ごしおしたい䞊び始めたのは時過ぎ。それでも特に䞍満のない堎所に座れた。話のネタ的に真倜䞭から䞊ぶずいう遞択肢もありたすが、そんなに無理しなくおいいのではないか。そもそも列のものすごく前に䞊べたずころでどうせ䌚堎内最前列の゚リアは党お「予玄枈み」だから座れないし。あたり遅く行くず"Overflow Room"なるビデオ䞭継でしかキヌノヌトを芋られない郚屋に回されるらしいけど、それさえ回避できれば。   しかし   そこに立ちはだかるのが時差ボケ。長旅で疲れよれよれずベッドにはいったはずなのに、真倜䞭にパッチリ目が芚める。ただ数時間は眠れるず毛垃をかぶっおも目は冎える䞀方。諊めおMacBookなど叩いおいるず 「䞊ばなくおいいのか」 ずいう匷迫芳念が迫っおくる。San Fransiscoくんだりたで来お、2chなんか芋おいる堎合か。いや、ただ倜明けたでは時間がある。ずはいっお眠くはないし、やるこずもない。そうしおいるうち「ええい、行っおしたえ」ずホテルを飛び出す。そしお氷のような寒さ *2 の䞭長い長い行列に立ち尜くし、己の刀断の愚かさに呪いの蚀葉を吐く。 これは去幎の写真。ちなみに時間は午前時半     ずいうのが去幎私に起こったこず。今幎はもうそんなこずはしないもんね、ず固く決意するわけでした。これにはもう䞀぀理由があり、今幎は初日の堎所が䟋幎ずは倉わっおいたす。去幎たではむベント党日Moscone Westで行われたのですが、今幎は初日のみBill Graham Civic Auditorium。いいニュヌスはおそらく収容人数がMoscone Westより倚いこず。悪いニュヌスは蟺りの治安があたりよろしくないこず。以前別の出匵で来た時、明るい時間垯なのにいろいろな人が呚りにたむろしおいたこずを思い出す。あそこに暗いうちから数時間立っおいるのが良い遞択肢だろうかいや違う。ずいうわけでWWDC及び呚蟺むベントに参加する人たちの間でも「明るくなっおから移動が良いよね」ずいうこずで意芋が䞀臎する。 そのようにちゃんずあれこれ考えおいたので 「あヌよく寝た」ずパッチリ目が芚め、ふず芋た枕元の時蚈がこんな衚瀺をしおいおも驚かない。ここでやるべきこずは静かに目を閉じ垃団をかぶっお心から雑念を远い払うこず。 今日のKeynoteではどんな発衚があるかずか考えおはいけない。 どんなサプラむズがあるだろうかずか考えおはいけない。 あたり可胜性はないずはいえ、MacBookが発衚されないだろうかずか考えおはいけない。 䜿っおいるMacBookAirもう六幎目。そろそろ買い換えないず、ずか考えおはいけない。 .... 目芚たしの音で飛び起きれば午前時。なんずすばらしい。時差がけに打ち勝ち眠れたではないか、 ず勝利の喜びにひたりながらFacebookを芋る。するずもう䞊んでいる人がいるのに気が぀く。そうか。䞊んでいる堎所はセキュリティがちゃんずしおいるのか、、、ずか考えながらふず気が぀けば猛然ず出かける支床をしおいる。ちょっずたお。俺は昚日ホテルを時に出るず決めたのだ、ず自分に蚀い聞かせおいるうち準備䞇端になっおしたう。いいや、もう出ちゃおう。 WWDC参加者にはRegistration時ゞャケットが配られたす。ここ数幎ゞャケットのデザむンにはパタヌンがあり、黒䞀色で背䞭にその幎の䞋二桁が曞かれおいる。朝の街を䌚堎に向かっお歩いお行くず、背䞭に「」ず曞かれたゞャケットを着た人をちらほら芋かける。䌚堎が近づくに぀れ、目に入る「」の数が増えおいく。 こんだけ参加者がいれば、きっず怪しい人に絡たれる危険性は少ないだろう、ず根拠のないこずを考えながら歩き続ける。そのうち䌚堎が芋えおきたした。 列に䞊ぶ時点でSecurityの人にバッゞを芋せたす。列の近くにはあたヌいマフィンの類ずコヌヒヌも甚意されおいる。ぱくぱく食べたいずころですが、調子にのっお飲みすぎトむレに行きたくなっおも困る。ぐっずこらえお少しだけずりたす。 それから䌚堎に入るこずができた午前時たで延々この光景を目にするこずになる。しかしそうした時間にも芋るべきもの、考えるべきこずは存圚しおいる。私にずっおは寒いずしか思えない状況。しかしなぜ前に立っおいるお兄さんはTシャツ短パンでぞらぞら笑っおいるのだ。呚りからは様々な蚀葉が聞こえたす。日本語、英語、䞭囜語、フランス語、ドむツ語、スペむン語、そしお私が知らない蚀葉。皆これから始たるキヌノヌト、そしおWWDCを心から楜しみにしおいる。 そんなこずを考えんながらがんやり建物を芋る。そしおあるこずに気が぀く。䞊の写真をみお「」ず思いたせんかその理由がわかったのはキヌノヌトを聞き、そしおこの日の倕方にある光景を目にしおから。     7月日に匊瀟でWWDC2016共有䌚を開催いたしたす。 connpass.com ゲストスピヌカヌの岞川さんも含めラむトニングトヌクでどんなお話が聞けるのか。懇芪䌚で皆さんずどんなお話ができるのか今からワクワクしおおりたす。私も登壇させおいただきたすので、皆さんの貎重な時間を無駄にしないよう、今から頭を悩たせおおりたす。 もしご興味をお持ちでしたら、ぜひご登録ください。 *1 : iOSで乱数を返しおくれる関数です。 *2 : ”私が経隓したもっずも寒い冬はサンフランシスコの倏だった。” ずいはマヌク・トゥ゚むンの蚀葉
こんにちは。おうちハッカヌ@リッテルラボラトリヌの石田です。 2016幎6月6日~9日に開催された第30回人工知胜孊䌚党囜倧䌚に行っおきたした。私は画像系及び深局孊習に興味があるので、特に画像系ず深局孊習系セッションを芋お回りたした。 そこで䞻に自分が芋たセッションを元に、今幎の人工知胜孊䌚の画像に関わる深局孊習の発衚をたずめおみたした。 私が芋た・読んだ範囲で、「 各分野にCNNを適甚した研究 」「 画像系深局孊習の理論的な研究 」「 画像ではないが気になった深局孊習の研究 」に分けお玹介したす。 自分で実際に芋た発衚に぀いおは、おすすめ床を぀けおいたす。個人の䞻芳によるものですので、匊瀟の芋解ずは関係がありたせん。 ではどうぞ。 各分野にCNNを適甚した研究 ここでは、画像系で倧きな成果を䞊げおいるCNN(畳み蟌みニュヌラルネットワヌク)を、各分野の画像解析に適甚しおみた研究を玹介したす。 画像特城量を利甚したナヌザプロファむルの拡匵ずロヌカルショップ掚薊ぞの応甚 https://kaigi.org/jsai/webprogram/2016/pdf/156.pdf おすすめ床★☆☆ 基本はSIFT特城量をBoVWに倉換しお、ナヌザヌの蚪問堎所の画像から、特城量の近しいレストラン等を掚薊する研究。論文䞭では述べられおたせんが、発衚ではCNNを甚いお、ランチ、ディナヌ、ナむトラむフなどを分類しお利甚しおいたした。 深局孊習を甚いたファッションコヌディネヌト因子の抜出 https://kaigi.org/jsai/webprogram/2016/pdf/101.pdf おすすめ床★★☆ 服の皮類を刀定、ナヌザヌぞの掚薊を目的ずする研究。 埓来はトップス、スカヌトなどのの䞊䜍カテゎリず、カヌディガン、ニットなどのサブカテゎリを同時にCNNで掚定しおいたしたが、提案手法のLayered CNNではトップカテゎリの刀定噚→サブカテゎリの刀定噚の順に局構造の刀定噚で構成されおおり、埓来より粟床が向䞊したずのこずです。 その他の知芋ずしおは、暡様などのスペクトラムは、別の特城量を䜿った方法が有効なこず、画像の前凊理が重芁なこずが述べられおいたした。 Deep Learning技術をベヌスずした異垞画像怜出 https://kaigi.org/jsai/webprogram/2016/pdf/664.pdf おすすめ床★★★ SUUMOの戞建の物件画像に぀いお、皮類の異垞怜知を行った研究。人が写り蟌んでいるような画像を省くため、物䜓怜知ず分類を同時に行う手法であるFaster R-CNNで人を怜出しおいたした。もう䞀぀は、CNNの䞭間局の特城量をX-meansでクラスタリングしお、建築䞭や土地のみの異垞画像のクラスタの生成に成功しおいたす。 同業の䞍動産情報サむト関連研究ずしお、興味深く聞かせおもらいたした。 地球芳枬衛星画像䞊の地物自動認識 https://kaigi.org/jsai/webprogram/2016/pdf/1019.pdf おすすめ床★★☆ LANDSAT衛星写真からCNNで゜ヌラヌパネル蚭眮領域を刀別する研究。教垫デヌタが少ないが、RGBに加え赀倖線などのバンドを入力に入れるこずで、粟床向䞊に倧いに寄䞎しおいるこずを瀺しおいたした。パラメヌタ調敎にはガりス過皋を甚いたベむズ最適化を甚いおいるそうです。 ディヌプラヌニングを適甚した衛星画像からの土地被芆分類手法の評䟡 https://kaigi.org/jsai/webprogram/2016/pdf/881.pdf おすすめ床★★☆ 前の研究ず同じく衛星画像を甚いお、郜垂、森、氎源などに分類する研究。 ベむス掚定を利甚した自動パラメヌタ調敎を利甚。粟床は7割皋床。既にある分類基準を元に、CNNのモデルのラベルをどう定矩するかが粟床に倧きく圱響するようでした。 深局孊習を甚いた SNS プロフィヌル画像から䛟投皿者属性掚定 https://kaigi.org/jsai/webprogram/2016/pdf/778.pdf おすすめ床芋おたせん CNNでFacebookのプロフィヌル画像から、性別、幎霢、性栌を掚定する研究。顔画像をHaar-like怜出噚+adaBoostによる顔領域怜出で切り抜いた画像の粟床が向䞊しおいるようです。 実環境におけるロボットの物䜓認識 https://kaigi.org/jsai/webprogram/2016/pdf/363.pdf おすすめ床★☆☆ Pepperなどのロボットのためのリアルタむム呚蟺環境認識のために、BINGで物䜓候補領域を怜出、CNNのCaffeのリファレンスモデルで物䜓皮別を分類する研究。Intel RealSenseのデプスカメラを利甚しお、怜出したものの距離を蚈枬できるようにしおいたした。 珟状ではGPUにTitan X䜿甚で、凊理に䞀枚あたり1秒かかるそうです。 畳み蟌みニュヌラルネットワヌクを甚いた埮小県球運動の怜出 https://kaigi.org/jsai/webprogram/2016/pdf/988.pdf おすすめ床★★☆ 人の泚意状態を衚す県球のマむクロサッカヌド(MSC)をロバストに怜出するために、県球の䜍眮を入力ずしおFaster R-CNNを参考した手法を䜿った研究。特城抜出郚ず識別郚の2段構成で、特城抜出郚は局畳み蟌みで特城波圢を抜出、識別郚はConvMLPを結合したモデルを利甚しおMSCの確率を掚定しおいたす。 Convolutional Neural Networkによる写真ず手描きスケッチの認識 https://kaigi.org/jsai/webprogram/2016/pdf/1056.pdf おすすめ床★★☆ 手曞きスケッチを描いお類䌌画像を怜玢するためにCNN孊習させたいが、倧量のデヌタセットの䜜成が困難なため、画像やむラストを加工した画像を甚い孊習を行わせる研究。画像ずスケッチが混ざったテストデヌタでも高粟床に20皮類の動物を分類できおいたす。 畳み蟌みニュヌラルネットワヌクを甚いた衚情衚珟の獲埗 https://kaigi.org/jsai/webprogram/2016/pdf/873.pdf おすすめ床★☆☆ 顔の衚情デヌタセットをCNNで分類する研究。衚情の専門知識を甚いお特城量を蚭蚈しお䜜られた既存研究に近い粟床が出おいたす。 画像系深局孊習の理論的な研究 畳蟌みニュヌラルネットワヌクのための新しい半教垫あり孊習法 https://kaigi.org/jsai/webprogram/2016/pdf/893.pdf おすすめ床★★★ CNNには倧量の正解ラベル付きの正解デヌタが必芁だが、最初にラベルなしの画像デヌタで教垫なし孊習をし、その埌教垫あり孊習に切り替えるずいう半教垫あり孊習を行うず、孊習速床が向䞊するずいう研究。 教垫なし孊習時は、教垫ありの10倍ほどの画像を甚意し、正解を最もスコアの高かったナニットのラベルずし、正解を確床の䜎いものずしお扱っお孊習させおいたす。 逆畳み蟌みニュヌラルネットワヌクを甚いた茪郭怜出 https://kaigi.org/jsai/webprogram/2016/pdf/763.pdf おすすめ床★★☆ 茪郭抜出を行うHEDずいう手法に぀いお、䞀郚に逆畳み蟌みネットワヌクを䜿うこずでよりきれいな茪郭抜出を詊みる研究。 HEDはCNNの党結合局が存圚しないFully Convolutional Network(FCN)を甚い、プヌリングで小さくした特城量を画像サむズたで拡倧するずきに線圢補完を䜿っおいたが、代わりに逆畳み蟌みを導入しおみたずころ、埓来手法より若干きれいな茪郭の抜出ができおいたした。 深局孊習における敵察的ネットワヌクず泚芖を甚いた画像生成の詊み https://kaigi.org/jsai/webprogram/2016/pdf/811.pdf おすすめ床★★☆ 深局孊習による画像生成の珟状の問題点ずしお、倧きな画像が生成できず、现郚が曖昧になっおしたう点がありたす。 そこで泚芖メカニズムを䜿い、郚分画像を耇数回に枡っお孊習・生成し、たた敵察的ネットワヌクを導入し画玠単䜍での誀差の修正を詊みる研究。 MNISTずいう手曞き文字デヌタセットで実隓を行っおいたす。 【補足】敵察性ネットワヌクに぀いおは、昚幎末話題になった、敵察性ネットワヌクによる画像生成の蚘事を芋るず、敵察性ネットワヌクの抂念に぀いお理解できるず思いたす。 Chainerで顔イラストの自動生成 - Qiita 深局孊習における敵察的ネットワヌクによるラベル掚定ず半教垫あり孊習 https://kaigi.org/jsai/webprogram/2016/pdf/829.pdf おすすめ床★★★★ 半教垫あり孊習で高粟床な分類機を䜜るため、敵察的自己笊号化噚を甚いた研究。笊号化噚が獲埗する朜圚倉数ずしお、埓来のzに加え、yを導入し、䞀方にコンテンツ識別に必芁な情報、もう䞀方にその他のスタむル情報を敵察性ネットを甚いお孊習させるこずで、コンテンツずスタむルを分離するこずができ、粟床向䞊を図っおいたす。 スタむルずコンテンツが分離できたこずで、それぞれを別に指定しお画像生成が可胜になりたした。䟋えば、ポップ颚の「3」の画像ずいった指定で生成できそうです。 ぀たりこの研究では、半教垫あり孊習の粟床向䞊ず、画像生成技術における生成画像のコントロヌルの2぀をもたらしおいるず蚀えたす。 画像以倖の深局孊習の研究 マルチ゚ヌゞェントによるDeep Learningの提案 https://kaigi.org/jsai/webprogram/2016/pdf/953.pdf おすすめ床★★★ 珟状の深局孊習では、䜕局にするか、各局のナニットの数をいく぀にするか決めお実隓しおうたくいったものを䜿っおいたすが、将来的に膚倧な䜜業になりそうです。 そこで各ナニットを゚ヌゞェントにしおしたい、各ナニットが局所的な情報のみを持っお独立しお行動するこずで、ネットワヌクを孊習䞭に自動で倉わっおいく手法を提案しおいる研究。SDAずいうデヌタの䞀郚を隠しお再構成させる手法がありたすが、この手法ずほが同等の性胜を持぀マルチ゚ヌゞェントによる深局孊習を実珟しおいたす。 Deep Neural Network を甚いた株匏売買戊略の構築 https://kaigi.org/jsai/webprogram/2016/pdf/975.pdf おすすめ床★★★ 既存研究では、株䟡の予枬がされおいたすが、どのタむミングでどの量を売買するかたで議論されおいたせん。そこで深局孊習を甚いお売買タむミング、取匕量たで提案するシステムを構築する研究。 テクニカル指暙であるトレンド系ずオシレヌタ系のモデルをそれぞれ䜜成、過去の株䟡デヌタをもずに孊習させたずころ、䞡モデルの耇合型が高い成果を残しおいたす。 たた、その時のトレンドによっお、トレンド系ずオシレヌタ系のどちらが有効か異なるため、盎近の粟床により信頌床を蚭定、信頌床によっお取匕量を決めるこずで、さらに成果が向䞊しおいたす。 深局行動認識モデルのナヌザ特化圧瞮 https://kaigi.org/jsai/webprogram/2016/pdf/593.pdf おすすめ床★★★ IoTにおけるセンサベヌス行動認識においお、孊習枈みモデルをナヌザヌに特化させるこずでモデルの圧瞮を詊みる研究。 センサ情報を生で送るのはプラむバシヌ的に怖いので、解析枈みのデヌタのみを送りたいずころです。しかし倧量に蚭眮するセンサ偎やスマホのメモリ容量は限られ、孊習枈みモデルをそのたた眮き蟛いです。 そこで蒞留ずいう方法でそのナヌザヌにずっお䞍芁なナニットを削陀するこずで、モデルの圧瞮を行っおいたす。教垫モデルず生埒モデルを䜿った提案手法により、30%たで圧瞮しおも粟床が萜ちないこずが瀺されおいたす。 感想的なもの 人工知胜孊䌚ぞの参加は2回目でしたが、去幎に比べおディヌプラヌニング関連の研究が激増しおいたした。 特に各分野にCNNを適甚した䟋が非垞に倚く、広い分野で良い成果を残しおいたした。CNNを適甚する際のテクニックも倚く孊べたした。 たた画像生成技術が昚幎末に話題になったり、 画颚倉換アルゎリズム などが泚目され、個人的に画像の生成に興味を持っおいたした。絵を党くかけない自分にずっお、アルゎリズムで絵を䜜れるずいうのは、衚珟手段が増えおずおも楜しいのもです。 私自身も、 DCGANで間取りを生成 させたり、 画颚倉換アルゎリズムでいろんな「だが断る」を䜜っ たりしお遊んでいたすが、画像が荒かったり、特城抜出がうたくできなかったりしお、ただただな郚分がありたす。 今回の人工知胜孊䌚でも、高粟床な画像生成や特城抜出の改善などの研究があり、どんどん改善されおいくのが楜しみになりたした。 理論的な研究も非垞に興味深く、教垫デヌタ収集の手間を枛らす、モデルを圧瞮する、モデルの組み合わせの詊行を無くすなど、珟状の深局孊習における問題点を本質的に解決する研究は凄いず思いたした。 本圓に深局孊習呚りの技術の進歩は速すぎお、驚くべき成果が倚いので、これからも積極的に情報を収集しおいこうず思いたす。
こんにちはiOSチヌムの塙です 来週に迫った WWDC2016 ですが、どんなサプラむズが埅っおいるんでしょうかね 私もAltConfなどの呚蟺むベントに参加しに行きたす(珟地でお䌚いできたらご飯行きたしょう) Swift3.0 の話は確実にメむンで出おくるでしょうねしっかりず勉匷しおおきたいです。 特に ++ -- オペレヌタの廃止はCに慣れ芪しんだ方々には衝撃だったはずです。詳しくは こちら 他には噂レベルですが、サヌドパヌティのアプリで䜿甚出来るSiriAPIの登堎やiOS10、WatchOS3、新AppleMusic、iPhone7、新MacBookなどなど  こんなに熱い情報を自分のPCの䞭に留めおおくのはもったいない では共有しようではないかず始たったWWDC共有䌚ですが、 今幎も匊瀟、ネクストで行いたす 珟地に参加される方も、自宅でたったりKeynoteをストリヌミングで芋る方も、䜕もしない方も 熱い情報は熱いうちに共有したしょう以䞋抂芁です 抂芁 日時 2016/07/01(金) 19:00 – 22:00頃 堎所 株匏䌚瀟ネクスト 東京郜枯区枯南2-3-13 品川フロントビル3F ゚レベヌタヌにお3Fたで登っおいただきたすず、巊手に受付スペヌスがございたす。 参加費 無料 です 内容 匊瀟゚ンゞニアからの珟地報告 LT枠で申し蟌み頂いた方のLT 懇芪䌚(軜食をご甚意いたしたす) 定員 LT枠(先着) 7名 (10分前埌のLTの準備をお願いいたしたす) オヌディ゚ンス枠(抜遞) 100名 泚意事項 Apple Developerアカりントを持っおいる方に限定させおいただきたす。 Appleずの契玄䞊守秘矩務の課せられおいる情報等に぀いおは、個人の責任においお管理をお願いしたす。 なお䞊蚘に䌎いたしお、入宀時に誓玄曞ぞの蚘茉をお願いいたしたす。 Wifi、電源は準備しおおりたすが限りがあり、回線品質の保蚌は出来たせんのでよろしくお願いしたす。 詳现&参加申し蟌み connpass.com 皆様のご参加を心からお埅ちしおおりたす
こんにちは、リッテルラボラトリヌの枅田です。 2016幎6月6日(月)〜6月9日(朚)に犏岡県北九州垂で開かれる 2016幎床人工知胜孊䌚党囜倧䌚 (JSAI 2016) に、株匏䌚瀟ネクストずしお協賛・ブヌス出展したす。 今幎は、人工知胜 (Artificial Intelligence) ずいう分野ができるきっかけずなった ダヌトマス䌚議 から60幎、日本に人工知胜孊䌚が蚭立されおから30幎の節目の幎ずのこずで、数々の目玉䌁画が予定されおいたす。昚幎に匕き続き開催される 人工知胜孊䌚 倫理委員䌚の公開蚎論 や、Deep learningの原型ずもいわれる ネオコグニトロン の考案者である 犏島邊圊先生 による 特別講挔 なども行われたす。 ネクストのブヌスでは、昚幎11月から提䟛開始した HOME'Sデヌタセット や、倧孊ずの共同研究の取り組み、プロダクトの玹介などを行いたす。リッテルラボラトリヌでは、デヌタセットをきっかけずした共同研究など、産孊連携の取り組みを積極的に行っおおりたす。デヌタセットに関する質問や芁望、研究テヌマのディスカッションなどをお受けいたしたすので、ご関心をお持ちの方はぜひお越しください プロダクトずしおは、レゎブロックでお郚屋づくりが䜓隓できる「 GRID VRICK 」や、あなた奜みのお郚屋を孊習しお提案しおくれるアプリ「 HOME'Sヘダサク 」のデモを行いたす。 倚くの方のお越しをお埅ちしおおりたす
こんにちは。HOME’SのiOSアプリ開発チヌムの高橋です。 WWDC2014でSwiftが発衚されおから2幎が経ずうずしおおりたす。 Swiftは昚幎末にオヌプン゜ヌス化され、ネむティブアプリだけでなく、サヌバサむド甚のフレヌムワヌクも登堎するなど、動きがたすたす掻発になっおきおいたす。 昚幎床、私たちのチヌムではメンバヌのSwift力を向䞊させるために、半幎に枡っおチヌム内勉匷䌚を行いたした。今回はその内容をご玹介したいず思いたす。 Swiftに察するHOME'Sアプリチヌムの課題 私たちの課題は、メンバヌごずにSwiftの開発経隓に差があるこずでした。 Swiftに觊れる機䌚がないメンバヌもいれば、個人でバリバリSwiftアプリを開発したメンバヌもいたす。 このような状況ではあるものの、メンテナンス性や今埌のトレンドも考慮するず、やはり今埌はなるべくSwiftを䜿っおいきたい。どうやったら効率良く、チヌムのSwift力を向䞊できるかを考えた結果、 座孊ではなく実際に手を動かしお孊ぶ。 実アプリぞの導入むメヌゞが぀かめるようにする。 ずいった点から、「䜏たい探しアプリ開発勉匷䌚」を開催しおみるこずにしたした。 アプリ開発勉匷䌚の内容 やったこず たずチヌムをグルヌプ分けし、Swift経隓がある人をリヌダヌにしたした。そしおグルヌプごずに自由な「䜏たい探しアプリ」を考えおもらいたしたどこかで芋たようなUIだったり、斬新な怜玢方法だったり。 仕様が決たったら、そのグルヌプで実装を行いたす。期間は半幎間で週1回、1〜2時間皋床行いたした。 たたこの機䌚に、実際に䜿いそうなラむブラリも詊しおみたかったので、APIぞのアクセスにはAlamofireかAPIKitのどちらかを䜿っおもらいたした。 䜿甚感に぀いおは埌の発衚䌚で共有したした。 リヌダヌずしお考えたこず 私もグルヌプのリヌダヌを担圓したしたが、工倫ずしおメンバヌにSwiftに関連するちょっずした課題を出しおみたした。 䟋えば、「家賃の合蚈倀をreduceを䜿っお蚈算しおください。」ずか「HOME'SのAPI甚にAlamofireをProtocol Extensionで拡匵しおください。」ず蚀った具合です。 コヌドを曞くだけなら埓来のObjective-C的に曞けおしたうので、課題を蚭定するこずでSwiftを意識しおもらいたした。 レビュヌ 蚭蚈・実装をみんなでレビュヌしたした。 実装時には気づかなかった意芋が挙がり、有意矩なレビュヌ䌚ができたした。特にプロトコルやゞェネリクスの䜿い所などは、他人のコヌドを読たないずむメヌゞが湧かないずころもあるため、ずおも勉匷になりたした。たた、SwiftはObjective-Cよりも短くコヌドが曞けるこずが倚いため、「こうしたらもっず短くできる」「ここも短くできる」ずいった議論になっお楜しかったです。 結果ず反省 埌日メンバヌの感想を聞いたずころ、 Swiftらしい曞き方がわかっおよかった。 業務で質問しにくいこずを聞けおよかった。 Swift導入に察する心理的な障害が枛った。 ずいった良い感想を埗るこずができたした。チヌムずしおSwiftに察する知識はかなり向䞊できたず思っおいたす。 䞀方で、 メンバヌ党員が均等にコヌドに觊れられるよう、調敎するのが難しかった。 アプリの開発には仕様決めや蚭蚈など倚くの䜜業が必芁で、䜜りながらSwiftを孊ぶのは難しかった。 ずいった意芋も出たした。アプリ自䜓の開発に時間が取られすぎないよう、仕様や倧枠の蚭蚈はあらかじめ決めおしたうずいいかもしれたせんね。 CocoapodsやGitなど、プログラミング以前に぀たづくこずも倚かったです。勉匷䌚前には必ず開発準備を敎えおから望むようにしたいずころです。 終わりに 今回、匊瀟で行ったチヌムのSwift力向䞊のための取り組みに぀いおご玹介したした。 もし詳しい内容が知りたい方は、匊瀟では毎月もくもく䌚を行っおおりたすので、ぜひご参加くださいお埅ちしおおりたす mokumoku-ios-at-next.connpass.com
こんにちは、新卒2幎目゚ンゞニアの池田です。 今回は、先日開催されたネクストの瀟内むベント「第2回創民祭」のレポヌトをしたいず思いたす。 ディヌプラヌニング・VR・tvOS など最新技術を甚いたプロダクトや、 リリヌスに向けお鋭意開発䞭 のプロダクトなど芋おいお楜しい出展ばかりでした。 創民祭(そうみんさい)ずは 聞き慣れない蚀葉かず思いたすが、「創民祭」は 業務内倖で䜜ったプロダクトをみんなで発衚し合うネクストのお祭り です。 創民(そうみん)は「モノ創りをする民」を衚しおいたす。 ちなみに「゜ヌミン」で䟋の小麊粉を原料ずした食べ物を思い浮かべられた方は、 実際に䟋の物が振る舞われた第1回創民祭 の蚘事をご芧ください。 創民祭の様子 では早速レポヌトしおいきたしょう。 賑わっおたす 4月に入瀟したばかりの新卒瀟員も含め、来堎者は倚数。 䌚堎には、ビヌル・からあげ・ピザなどパヌティヌの定番が揃っおいたす。 DJブヌス なんず今回は DJブヌス も ネクストでは最近DJの文化が盛り䞊がっおおりたす。 展瀺プロダクト玹介 さあ ではプロダクトを玹介しおいきたしょう。 VRアクションゲヌム こちらはOculus+Kinectを䜿ったアクションゲヌムです。 自圚に操れる剣ず魔法で、巚倧なモンスタヌず戊う䜓隓ができたす。 党身の動きがリンクするこずで埗られる高い没入感ず、 巚倧なモンスタヌが錻先たで迫る迫力 は䞀芋の䟡倀がありたす。 匊瀟圹員の山田 も没入しおおりたす。 このプロダクトは ニコニコ超䌚議 にも出展したした。 Goromi for Youtube on tvOS こちらはAppleTVのアプリです。 「Goromi for Youtube(元GoromiTube)はYoutubeのビデオをひたすら流し続けるアプリです。 䞖界䞭の聞いたこずもないビデオに出䌚ったずきは幞せを感じるこずができるでしょう。」 ずのこずで、䌑日ゎロ芋しお幞せに浞っおいる姿が目に浮かびたすね。 iTunes Storeからダりンロヌドもできる ので、是非チェックしおみおください。 Goromi for Youtube GoroOtsubo 写真ビデオ 無料 Jocker Container Service こちらは創民の名に盞応しい技術に特化したプロダクトです。 「Jocker Container Serviceはコンテナ型仮想化技術を甚いた瀟内向け開発環境提䟛サヌビスです。 利甚者はたった3秒で自分だけの開発環境を手に入れるこずができたす 。」 ずのこずです。䞋蚘がサヌビスの詳现を衚した図です。 興味を持たれた方は、発衚者の匊瀟の゚ンゞニアkaihar4に是非連絡を取っおみおください。 ↓kaihar4のHPです kaihar4.com おそ束さんの6぀子刀別噚 瀟内屈指のはおなブロガヌでもある匊瀟の゚ンゞニア id:bohemian916 の出展で、 「ディヌプラヌニングでおそ束さんの六぀子を芋分ける刀別噚」です。 4月に入瀟したばかりの新卒瀟員も興味接々ですね 自分も目の前で刀別噚が動䜜する様子を芋たのですが、 人間でもわからないような特城を芋事に捉えお刀別できおいたした 。 そしお、人力にもかかわらず刀別噚を䞊回る正確さで、六぀子の刀別を行っおいる id:bohemian916 も圧巻でした。 刀別噚の詳しい内容はこちらをご芧ください。 TwilioAPIを甚いた電話でのシステム異垞通知システム こちらぱンゞニアna0AaooQ( http://qiita.com/na0AaooQ )によるサヌビスで、「Twilio」ずいうクラりドAPIサヌビスを甚いお、システム障害等の際に指定した電話番号に察しお簡単に電話をかけたりSNS通知をするずいうものです。 これで「知らないうちにシステム障害が 」ずいうトラブルが激枛するこずでしょう 詳しくは䞋蚘の蚘事をご芧ください。 他にも盛りだくさん 瀟倖秘ですが、某ナンチャラカンチャラヌ・某ホニャラララランラの出展など盛りだくさんでした。 受賞プロダクト Tech賞 Tech賞は技術的に最も玠晎らしいず認められたチヌムに莈られる賞です。 今回のTech賞は  (デデン) 【Jocker Container Service】 でした。 ベテランの先茩たちを差し眮いお新卒2幎目でのTech賞。末恐ろしいですね。 山田賞(圹員賞) 匊瀟圹員の山田の心が震えたプロダクトに莈られる賞です。 今回の山田賞は  (デデデン) 【䜏宅・土地統蚈調査デヌタを掻甚したスマホ向けサヌビス※ 詳现は瀟倖秘】 でした。 残念ながらこちらでは内容をお䌝えするこずができたせんが、リリヌスに向けお絶賛準備䞭です。 プレスリリヌスによる今埌の発衚を楜しみにしおいおください。 最優秀賞 そしおいよいよ最優秀賞です。 今回の最優秀賞は  (デデデデン) 【家族ず䞀緒に䜏たい探しができるサヌビス※ 詳现は瀟倖秘】 でした。 残念ながらこちらも内容をお䌝えするこずができたせん。 プレスリリヌスによる今埌の発衚を楜しみにしおいおください。 出展プロダクトに関するレポヌトは以䞊です。 少しでも興味をもっおいただければ幞いです。 最埌に 先皋たでVRアクションゲヌムに没入しおいた圹員の山田 が最埌に締めお、創民祭は倧盛況のうちに閉䌚したした。 人が䜜ったものに芋たり觊れたりするずその人の熱が䌝わっおきたすね。 その熱に觊れお 「自分も䜕か䜜りたい」 ず匷く感じたした。 今回は2回目の開催でしたが、1回目に比べお確実にパワヌアップしおいるず感じたした。 創民祭は、これからも定期的に開催する予定なので、この堎を借りおみなさんに情報をお䌝えしおいきたいず思いたす。 ではでは。
こんにちは。HOME'SのiOSアプリ開発チヌムの塙です。HOME'Sアプリの最新版(Ver.3.10)で远加された Flyover は、ある新卒※のアむデアから実珟したものでした。この話を曞くこずで匊瀟のアプリチヌムがどんな雰囲気なのか感じ取っおもらえればず思いたす。 ※ 2016幎4月1日を以っお新卒2幎目になりたした Flyoverずは iOS6から暙準マップアプリで提䟛されおいた建物などを3Dで衚瀺する機胜です。iOS7くらいから日本の䞻芁郜垂にも察応を始め、今では囜内の13郜道府県に察応しおいたす。iOS9からはMKMapKitに远加され、サヌドパヌティ補アプリでもFlyoverを実装するこずができるようになりたした。 アむデアが採甚される アプリチヌム(iOSずAndroid)には 「アむデアボヌド」 ずいうJIRAで管理されたかんばんボヌドがあり、そこではメンバヌの誰もがアプリに远加しおみたい機胜や改善したい箇所などを投皿できたす。今たで远加された機胜も、このアむデアボヌドから実珟したものがいく぀もありたす。 アむデアがこんなにたくさんチヌムのみんなが日々投皿しおたす 新卒の私は技術力もなく仕事もうたくこなせないので、玠人なりの新鮮なアむデア力で勝負しようず思い、定期的にこのアむデアボヌドに投皿を行っおいたした。アプリを觊っおいお「こうだったらいいのにな」ず思った時や、iOSのアップデヌトで新しい機胜が実装できるようになった時は仕事の合間に簡単なモックを䜜成しお䞀緒に茉せたりもしたした。 そしおある日リヌダヌの方から 「アむデアボヌドにあったFlyoverの件だけど、採甚になったから今すぐやっおみない」 ずいう声をかけおもらいたした。 iOSアプリのリヌダヌ、プ◯ゞェクトXみたいでカッコむむ  䌁画立案からアサむン 私はもずもず倧孊でナヌザヌむンタフェヌスの勉匷をしおいたので、䌁画からモノづくりをしたい気持ちがあり、䞊叞にも䌝えおいたした。そのこずもあり、Flyoverのプロゞェクトは仕様曞の䜜成から担圓させおもらえるこずになりたした。 もちろん仕様曞の䜜成などやったこずもないので䜕をしたら良いのかわからなかったのですが、䌁画ずデザむナヌの先茩方に沢山フォロヌしおもらい、なんずか完成させるこずができたした。アプリチヌムはプロダクト的にも 䌁画、デザむナヌ、開発のチヌムの距離感が近く 、い぀もコミュニケヌションを密にずっおいるからこそ可胜なのかなず思いたした。 この写真はやらせですが笑 い぀もこんな感じで話し合っおたす (写っおいるのは各職皮の先茩方です) 仕様を考える䞊で普段目にしないナヌザヌの行動や数倀を扱い、自分たちの開発したものがこんなにも倚くのナヌザヌに圱響を䞎えおいるのかず痛感したした。たた、画面の構成も瀟内の人にABテストをしおもらっお決めたした。この時もたったボタンひず぀の配眮が、開発する偎ず䜿う偎で考えるこずに倧きな違いがあるこずに気付かされたした。 もちろん実装も自分で 自分の力䞍足のせいではありたすが、実装に入るたでにかなりの時間を費やしおしたいたした。正盎な気持ち「やっずコヌドが曞ける 」ず思っおしたいたしたが、埗るものは倧きかったず思いたす。 実装に関しおはそこたで倧きな劎力のかからないものでしたが、䌁画から自分でやっおきた分、実装の時の責任感はい぀にも増しお倧きく感じたした。 ちなみにご自身のマップをFlyoverに察応させたい堎合はこの1行を远加すればすぐにできたす。 察応地域 も増えおきお、芋おいるだけでも楜しいこの機胜を是非远加しおみおください。 mapView.mapType = .SatelliteFlyover // or .HybridFlyover HOME'SアプリのFlyover画面。「3D」をポチっずしおみおください いろいろやっおみお Flyoverは䜏たい探しをする䞊で 「呚蟺環境を知りたい」ずいう声 が倚いこずからアむデアを出したものでした。そのナヌザヌの為に考えたアむデアを䞀から自分で䜜り、実際にリリヌスされる機䌚は本圓に貎重なものです。たた、それを可胜にしおくれたアプリチヌムの環境にはずおも感謝しおいたす。 今回のプロゞェクトで普段゚ンゞニアずしお目にするこずが少ない数倀や、疎かになりがちなナヌザヌ目線に觊れるこずがきたので、今埌の開発に掻かしおいきたいです。そしおこれからもチヌム䞀䞞ずなっお、ナヌザヌに圹立぀、楜しいアむデアに溢れたHOME'Sアプリを創っおいきたす アプリチヌムの爆発的な掻躍に乞うご期埅
<!-- p { style="line-height: 2; margin: 0.5em 0px; padding: 0px; color: #3d3f44; font-family: 'Helvetica Neue', Helvetica, Arial, 'ヒラギノ角ゎ Pro W3', 'Hiragino Kaku Gothic Pro', メむリオ, Meiryo, ' ゎシック', 'MS PGothic', sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; } -->   こんにちは、HOME'Sアプリのデザむンを担圓しおいるこばやしです。 今回は「 マテリアルガむドラむンの䞊手な䜿い方 」をお話したいず思いたす。   今回のテヌマは、 マテリアルガむドラむンからは、手段よりも本質を読み取ろう 分解するず、 マテリアルガむドラむンに茉っおいる手段を真䌌るでは䞍十分 本質を自分なりに解釈しおみる その解釈から、手段を怜蚎しお、アプリに適応しおいく 以䞊をデザむナヌは留意したいね、ずいう内容になりたす。 どうしおこれらが倧事なのか、それに぀いお 「むンタラクション」 をテヌマにお話したす。 ※ここでの解釈はHOME'Sアプリにおけるものなので、すべお正解ではないです     むンタラクション なぜむンタラクションなのか 前線 でもお䌝えしたしたが、マテリアルガむドラむンの3぀のデザむンの原則の぀である「意味のあるアニメヌション」ずしお、むンタラクションは非垞に重芁で、優れたナヌザヌ䜓隓を぀くる デザむンの芁玠なので、今回テヌマずしおお話したす。   リップル効果 匕甚元: Material Design Guidlines マテリアルデザむンのアニメヌションずいえば、タップしたずきに波王のように広がるアニメヌションです。これはタップした堎所から゚フェクトを付けるこずで、画面のどこをタップしおいるのかがわかりやすくなりたす。 入力があった際に、画面内でアクションに応じた返答を返しおあげるこずで、ナヌザヌぞの泚意喚起や、UIの理解を助ける働きをしおくれたす。   連続性 匕甚元: Cards Swipe Animation – MaterialUp ビュヌ・画面の切替りの話がでたしたが、そこでもむンタラクションが重芁になりたす。これたでのWebでは垞識であったペヌゞ遷移は 急にペヌゞが切り替わる・閉じおしたうなど動きでしたが、これは明らかにバヌチャルな䞖界でメタファヌずは異なりたす。 このむンタラクションを工倫するこずで、珟実的な動きに眮き換えるこずができたす。急に画面が切り替わるのではなく、タップした次のペヌゞには芁玠を維持したたた遷移させるこずで、ナヌザヌは䜕が起こっおいるのかを明確に把握しやすくなりたす。     次に、HOME'Sアプリではどのように取り入れおいるのかお話したす。     むンタラクションを考える時、HOME'Sアプリが泚意したこず OSバヌゞョンのデフォルトを考える マテリアル察応を進めおいくにあたり無芖できないのが、OSバヌゞョン毎の扱いです。ここたで説明しおきたマテリアルデザむンですが、端末デフォルトで搭茉しおいるのはバヌゞョンOS5.0以䞊になりたす。 珟圚のOSシェアはただただ4.x系が倚く、そういったナヌザヌはあたり普段からこのマテリアルデザむンのむンタラクションに慣れおいたせん。぀たり、新しいナヌザヌ䜓隓になりたす。    ナヌザヌに䜙蚈な孊習をさせない HOME'Sアプリでは OS5系以䞊では、リップル効果のむンタラクションを採甚 OS4系以䞋では、デフォルトのむンタラクションを採甚 ずしおいたす。 様々なアプリを䜿う䞭で、HOME'Sアプリだけむンタラクションが他のアプリより明らかに異なるず「ナヌザヌの理解を助けるためのアニメヌション」が、かえっお驚かれおしたったり、䜙蚈なこずを考えるこずに繋がるのではないか、ずいう考えのもず䞊蚘のような察応をしおいたす。   Google玔正アプリを芋おみる ご存知の通りGmail、Youtubeなどそれぞれ開発チヌムが異なるので、マテリアルガむドラむンの解釈の仕方もそれぞれ埮劙に異なっおいお参考になりたす。 OS5系以䞊では、リップル効果のむンタラクションを採甚 OS4系以䞋では、デフォルトのむンタラクションを採甚 玔正アプリでも未察応です。 ずいうより、おそらくあえおやっおないのかなず思いたす。繰り返しになりたすが、マテリアルガむドラむンの本質は党アプリのUI統䞀をするこずではなく、ナヌザヌがアプリを䜿うずきにスムヌズに䜿えるよう基準を蚭けるこずだず思うので、Android4.x以䞋の端末の堎合は埓来のむンタラクションのたたがこの堎合「筋が通っおいる」ずいうこずなのかもしれたせん。   たずめ マテリアルガむドラむンからは、手段よりも本質を読み取ろう 倧切なのははじめにお䌝えしたこれです。   マテリアルガむドラむンには、マテリアル察応するための手段や方法・事䟋が具䜓的に蚘されおいたすが、マテリアルデザむンの本領を発揮させるためには、手段だけではなく、本質を各自が解釈しお各々のサヌビスにどのように適応しおいくのが最良かを考えるこずが倧切だず思いたす。   そういった意味では、デザむナヌがやらなければならないこずに䜕も倉わりはないですね。䞊手に適応させおより䜿いやすいアプリを目指したしょう。   そんなマテリアルデザむンですが、察応を進めおいくずHOME'Sではある問題を抱えたした。次線ではその内容ず解決手段に぀いおお話ししたす。
こんにちは。おうちハッカヌ@リッテルラボラトリヌの石田です。 2016/3/133/16たで、アメリカ・テキサス州オヌスティンで開催された SXSW 2016 Trade Show サりス・バむ・サりスりェスト トレヌドショヌに、匊瀟から補品化が発衚されたばかりの GRID VRICK を出展しおきたした。 SXSWずは SXSWずは、テキサス州オヌスティンで毎幎3月に開催される、音楜、むンタラクティブ、映画を組み合わせた䞖界最倧玚のむベントで、今幎で30呚幎を迎えたした。特にむンタラクティブ郚門におけるアワヌドは、スタヌトアップ䌁業の登竜門ずも呌ばれおいお、過去にはTwitterやFoursquare、SiriやSpotify等が䞖間に広がるきっかけを䜜ったずも蚀われおいたす。 30呚幎を迎えた今幎は、 オバマ倧統領 倫劻が 基調講挔 を行いたした。 画像は CBSNEWSより SXSW䞭の街の様子 SXSWの期間䞭は、オヌスティンの街䞭がお祭り状態です。 こんな芳芧車が街䞭に出珟したり 楜しい恰奜をしお歩いおいたり 期間䞭は、メむンの通りは歩行者倩囜ずなり 倜はあちこちのバヌでラむブが行われ、掻気にあふれおいたす。 Trade Showの様子 今回私たちが出展したのは、 Trade Show ず呌ばれる展瀺䌚で、䞖界各囜から勢いのある様々な䌚瀟・団䜓が出展しおいたす。日本からの出展も近幎増加しおおり、今幎は゜ニヌや富士通、博報堂、東京倧孊などの団䜓が50匱のブヌスを展瀺しおいたした。 Trade Showは、オヌスティン垂街にある、オヌスティンコンベンションセンタヌで行われたした。 入口はこんな感じです。 䌚堎内は人がごった返し、掻気にあふれおいたす。 こちらはNASAのブヌス。宇宙飛行士ず話しお握手できるみたいです。 こちらはみんな倧奜きスタヌりォヌズのホログラム展瀺。 こんな恰奜の人や ずころどころでブヌス内でラむブ挔奏が行われおいたした。 他にも、マッサヌゞしおくれるブヌスがあったり 卓球台が眮いおあるだけのブヌスがあったりで、本圓になんでもありです。 ITサヌビス系の出展が倚く、盎接芋せるハヌドりェアがないせいか、お客さんず密なコミュニケヌションをずり、自サヌビスを知っおもらうために様々な趣向を取り入れおいたした。本圓にむンタラクティブな展瀺が倚いです。 䞀方で 日本呚蟺のブヌス は、圧倒的に ハヌドりェア のある展瀺が倚かったです。 むダホンがたくさん぀いたりィッグや 倩気を知らせおくれるIoTデバむスだったり iPadずOculus Liftを装着しお、アニメキャラになりきる人がいたり 䞀方の日本ブヌスは控えめに蚀っお、ぶっ飛んでる展瀺が倚かったです。展瀺を芋に来おいる人たちも 「 どうしおこっち3列はこんなにクレむゞヌなものばかりなの 」  ※端っこ3列は日本を含むアゞアブヌスでした。 ず話しおいたした。 こちらの蚘事で、もう少し日本ブヌスに぀いおたずめおくださっおいたす。 blog.innovationcenter.jp 匊瀟のブヌスの様子 ここからは、匊瀟のブヌスの様子をお䌝えしたす。 私たちは、ブロックで家の間取りを䜜るだけで、すぐに3Dの家䜜っおシミュレヌションできる「GRID VRICK」を展瀺したした。 www.gridvrick.homes.co.jp 展瀺が始たる盎前のメンバヌ各員。やる気満々 私たちはこんな垜子を被っお展瀺を行っおいたした。これは BRICK BRICK ずいう垜子で、ブロックを䜿っお自分で垜子をデザむンできるずいうものです。これがなかなか奜評で、街や䌚堎で被っおいるだけで、その垜子いいねっお蚀っおくれる人がたくさんいらっしゃいたした。 ずおもたくさんの方にGRID VRICKを䜓隓しおいただきたした。 䜜った郚屋をOculus Liftでりォヌクスルヌしお喜んでくださったかた 反応もずおもよく、 Awesome! Amazing! Crazy! Genius! Good Job! Pretty cool! Most excited! ずいう最高の耒め蚀葉をたくさん聞くこずができお、こちらもテンション高く説明ができたした。 アメリカでも子䟛に倧人気 もう行くよっおお父さんに手を匕っ匵られおるのに、ただ遊び足りない兄匟 慣れない英語での説明でしたが、新しい刺激がずおも倚く、4日間ずおも楜しく展瀺をするこずができたした。 アメリカやその他の囜の人たちからもずおも奜評でしたので、たた海倖での展瀺䌚に持っおいきたいずころです。
はろヌはろヌチバです。 今回は、「 ネクスト倧孊 」制床を甚いお開講された「はじめおの倖泚れミ」の内容をお送りしたす。 å…š4回の題目 第1回 - 目的にあった倖泚パヌトナヌの探し方 第2回 - PMBOKの基瀎ず倖泚制䜜の䜓隓談 第3回 - TiDDチケット駆動開発の手法、思想ずプランニングポヌカヌ 第4回 - ツヌルの遞定県を鍛えよう れミの䞭で䜿った、2015幎6月〜9月期間の党4回に枡るスラむドも公開したので、是非ご芧ください╭( ・ㅂ・)و ̑̑  ネクスト倧孊ずは  埓業員䞀人ひずりの胜力開発を目的に、「必須プログラム」「遞択プログラム」「遞抜プログラム」からなるネクスト倧孊瀟内倧孊を開校しおいたす。 「遞択プログラム」では、瀟長が䞻催する経営塟、プロゞェクトマネゞメント、レコメンデヌション技術、ロゞカルシンキング、英䌚話等、瀟員は自身が受講したいれミを遞択しお受講できたす。ほずんどのれミで瀟員が講垫を務め、職皮や郚門を越えおお互いに教え合う文化の醞成に繋がっおいたす。 「遞抜プログラム」は、次䞖代リヌダヌ育成プログラムです。トップセヌルス、クリ゚むティブアワヌド、ベストマネゞャヌ、圹員掚薊等、次䞖代経営者候補を遞抜した海倖研修等を実斜しおいたす。 はじめおの倖泚れミずは  はじめおの倖泚でプロゞェクトに取り組む人が䜕を準備し、どんなものを䜿い、どのように倖郚リ゜ヌスを掻甚しおいくかを䌚埗するれミ。 ネクストの案件に取り組んだ瀟倖の人にも「いい案件だった」ず思っおもらえるような良質なプロゞェクトを運甚し、顧客・ナヌザヌの満足ぞずプロダクトで応えるこずを圓れミの目的ずしたす 昚幎の4月、今期れミの募集をしおいたずきにこのれミをやりたいず思い、趣旚の提案ず共にれミ長に立候補したした。 圓時はネクストに転職しお半幎、垞に隣に制䜜者や開発者のいる環境に慣れおしたっおいる組織を目の圓たりにし、党郚が党郚ではないですよ ^O^組織芏暡の拡倧に合わせお案件進行がずさんになっおいく未来が予枬できたした。 「 100瀟の子䌚瀟、100人の瀟長を 」のスロヌガンを掲げる以䞊、リ゜ヌスが流動的になるこずを目先に芋据えおいなければならないず思ったのです。 そう考えたずき、私たちはもっずいろんな人たちず働くこずを芖野に入れなければならず、チヌム構成はアりト゜ヌシングでずいう手段もあるでよっおこずを瀟内に広めたいず考えお取り組みたした。 このれミで幞せにしたい人 その1、ネクスト瀟員の皆さんです倖泚ぞの抵抗感を無くし、リ゜ヌス増匷の際に圹に立 ぀知識を身に぀けおもらうこずが狙いです。 その2、倖郚パヌトナヌの皆さんです䞀緒に぀くり䞊げるパヌトナヌずしおゞョむン しおもらい、「ネクストさんずいい仕事ができた」 を䜓隓しおもらうこずが狙いです。 以䞊、2぀をステヌクホルダヌずしお芋据え、このれミをスタヌトさせたした 第1回 - 目的にあった倖泚パヌトナヌの探し方 倖泚先の遞定はどうするべきか、オフショア開発で気を぀けるこずは䜕か、芋積もりっおどうやっお詰めおいけばいいのか、プロゞェクトチャヌタヌに曞くこずは等々をお話したした。 はじめおの倖泚れミ01 - 目的にあった倖泚パヌトナヌの探し方 from NEXT Co.,Ltd. 第2回 - PMBOKの基瀎ず倖泚制䜜の䜓隓談 第1回でもらった質問を元に、「こういう時はこうしたら奜たしかったよね」を受講者ず意芋亀わしながらたずめたした。 そこから、蚀った蚀わないの氎掛け論を防止するために掎んでおくこずずしお、 プロゞェクトマネゞメント知識䜓系ガむドPMBOK の玹介をしたした。 プロゞェクトマネヌゞャヌずいう職皮にかぎらず、ものづくりに関わる党おの人が理解すべきガむドだず思っおいたす( ˘ω˘) はじめおの倖泚れミ02 - PMBOKの基瀎ず倖泚制䜜の䜓隓談 from NEXT Co.,Ltd. 第3回 - TiDDチケット駆動開発の手法、思想ずプランニングポヌカヌ Ticket Driven Developmentの手法ず思想を話し、タスクをどのように扱うこずが良いのかを話したした。 チャットで話題ずされたり、MTGで発生するような情報を䞊手く振り分けるこずで、 管理が容易い ずいうものです。 情報が流しっぱなしになる「フロヌ情報」 タスク発行ずしお分別保持する「ストック情報」 以䞊に振り分けるルヌルが定着するだけで、コミュニケヌションコストはぐっず枛りたす。 たた、発生タスクの 芏暡を芋積もる こずで、チヌム無いでの皌働率が䞀気に可芖化され、リ゜ヌスの振分けがうたくいきたす。 そこで玹介した手法が プランニングポヌカヌ  圓日は皆で和気あいあい楜しく、芋積もりワヌクショップをしたした✌(>ω・)✌ はじめおの倖泚れミ03 - TiDDチケット駆動開発の手法、思想ずプランニングポヌカヌ from NEXT Co.,Ltd. 第4回 - ツヌルの遞定県を鍛えよう 最終回は、私の信念なんですが 「道具に任せられるこずは道具に任せお、人間は人間の仕事に集䞭しよう」 ずいう趣旚のお話をしたした。 私たちの業務の䞭には、思った以䞊の庶務䜜業やオペレヌション的な䜜業の時間が存圚しおいたす。 それらを 今以䞊に効率よく片付けお、チヌムずのコミュニケヌション時間を増やしたり、ナヌザヌ研究の時間を増やしたり、1ケヌスでも倚くのテストをクリアするだけでプロダクトはグッずよくなる ず思いたせんか (๑•̀ㅂ•́)و✧ はじめおの倖泚れミ04 - ツヌルの遞定県を鍛えよう from NEXT Co.,Ltd. 圓れミをやっおみお  受講者や呚りの皆さんの反応から、「やっおよかった」の䞀蚀に尜きる、良いれミでした。 たさにプロゞェクトが走りだそうずしおいる、ずいう人も䜕人かおり、時期的にもずおも良いタむミングに出逢えたず思っおいたす。 たた、他の方の「過去にこんなプロゞェクトがあり 」などの話も聞けたり、過去に、瀟内でプロゞェクトマネゞメントの知識を広めようずした人の存圚を知れたり、自分の知らない過去のナレッゞも知るこずができおこちらも孊ばせおもらえたした。 組織にいる以䞊、時代背景ずか出来事の䌝承がされるっおいいこずだず思うんすよ 枩故知新っおあるよね  自分が「これやっおたす」を倧きな声で蚀うこずは、やはり倧事なこずなんですね。 このれミがあったこずが受け継がれお、どんどんアップデヌトしたい再挔しようっお人が出おきたりずかもしお、「ネクストさん䞀緒に働きたしょう」っお蚀っおくれる人が増えたらいいなず思っおいたす。 そしお、「あヌこのプロゞェクトやっおよかったわヌさいこヌビヌルが旚い」っお蚀う人も増えたらいいなず思っおいたす。増やしたしょう 最埌に  2016幎4月で、ようやくディレクタヌ6幎目になるんですが、受蚗䌚瀟事業䌚瀟䞡方で培うこずのできた経隓はたくさんあり、それが党お詰たっおいるような気がしたす。 最近は、所属郚眲柄ディレクションプランニングアナリストリサヌチャヌを反埩暪跳びしおる感じの業務内容ですが、ディレクタヌであった経隓を振りかざさずに、その郜床匷みを掻かしお、プロゞェクトに芋合った振る舞いをしおいきたいです。 䜿う人、䜜る人がどっちも幞せになるものづくりのあり方を掚進しお、今埌もバンバンでしゃばりたいでヌす スラむド公開にあたり、機密情報・リヌガルチェック・それら手配をしおくださった皆さん、ありがずうございたしたm(__)m
みなさん。テストしおたすか? こんにちは。HOME'SでQAをしおいる池之䞊ず申したす。 私が所属しおいるQAグルヌプでは、テストに関する海倖の出版物を積極的に読むように心がけおいたす。 その䞭でもずおも良い曞籍に出䌚ったので、ご玹介したいず思いたす。 曞籍抂芁 Jon D. Hagar著 : Software Test Attacks to Break Mobile and Embedded Devices Software Test Attacks to Break Mobile and Embedded Devices (Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series) 䜜者: Jon Duncan Hagar 出版瀟/メヌカヌ: Chapman and Hall/CRC 発売日: 2013/09/18 メディア: ペヌパヌバック この商品を含むブログを芋る 著者サむト : https://breakingembeddedsoftware.wordpress.com/ 組み蟌みデバむスのテストに関する著者の30幎以䞊にわたる経隓の集倧成。携垯・組み蟌み端末のテストに関わる人々のための曞籍です。 バグや゚ラヌを芋぀けるための攻め口(Attack)が30以䞊玹介されおいたす。 扱うテストは、ホワむトボックステストからブラックボックステスト、さらには非機胜芁件(UX・パフォヌマンス・セキュリティ等)に関わる郚分たで倚岐に枡り、 携垯・組み蟌み端末に必芁なテストが幅広く網矅されおいたす。 各Attack毎に、抂芁、䜕を、い぀、どこで、誰が、どうやっおテストすればいいのかに぀いお䞀぀䞀぀䞁寧に説明され、 加えお、テストラボの構成や有甚なツヌルに぀いおも豊富に玹介されおいたす。 蚭蚈から実斜たで必芁な情報をカバヌし、䞁寧に説明した、携垯・組み蟌み端末のテストの教科曞的䜍眮づけの曞籍です。 曞評 いたたで長らくHOME'SのPCサむト、スマヌトフォン最適化サむトのQAをしおいたのですが、 昚幎倏にスマホアプリのQA担圓するこずになり、ちょっず予習しおおこうず思ったのが読み始めたきっかけでした。 携垯・組み蟌み端末に関わるテストが網矅的に茉っおいるので、業務でのテスト蚭蚈や実斜の際に本曞はずおも圹立ちたした。  たた、携垯・組み蟌み端末は埓来のシステムずどう異なるのかに぀いおも觊れられおおり、 今たでやっおきたテストず䜕が違うのか、どう泚意すればいいのかに぀いおも知るこずができたす。 䟋えば次のような郚分です。 remember that mobile app users have historic expectations of performance based on their IT, PC, and web use. Embedded devices may have less raw performance power (e.g., CPU speed) than IT systems, and users in part understand this situation, but programs should not rely on the lessened expectations of the mobile or smart user for project success. (Software Test Attacks to Break Mobile and Embedded Devices p.127) --以䞋芁玄-- ナヌザヌはモバむルアプリにもPCずかwebサむトくらいのパフォヌマンスを期埅しおいるこずを芚えおおいおください。 組蟌みデバむスはITシステムよりパフォヌマンス(CPUスピヌドなど)は劣っおいるし、このこずを理解しおいないナヌザヌもいるかもしれたせん。 しかしながら、(非力なデバむスだからずいっお)プログラム偎がそれに甘えるべきではありたせん。 蚀われおみれば圓たり前なこずなんですが、改めお蚀われるずハッずする内容です。 内容に加えお、この本で個人的にすばらしいず思ったのは䞋蚘の点 各Attackが䜓系的にたずたっおいる リファレンスが驚くほど倚い 䜓系的な文章構成 曞籍抂芁でも觊れたしたが、各Attackには、抂芁ず、䜕を、い぀、どこで、誰が、どうやっおテストすればいいのかが曞かれおいたす。 これらはセクションに分けられお曞かれおおり、知りたいこずを拟い読みしやすい構成なのではないかなず思いたす。 曞籍によっおは説明の途䞭で、著者の経隓を長々ず語られおわかりにくかった。なんおこずがあったりしたすが、この本では感じたせんでした。 䞀方、著者の生々しい経隓談は茉っおいないのかずいうず、そうではありたせん。文䞭にside barずいう別セクションで曞かれおいたす。 このside barずいうセクション、著者の経隓だけでなく、゜フトりェア史に残るバグなども玹介されおおり、倧倉興味深い郚分です。 戊闘機やミサむルのバグなんおのもありたした。絶察遭遇したくないですが、読む分には興味深いで枈みたすからね side barだけの拟い読みも楜しいかもしれたせん。 そしお、文章の曞き方だけでなく読たれ方にも工倫が。 この本、届いおびっくり。枕にできそうな厚みで、ちょっずたじろぐ芋た目なのですが、 安心しおください。党郚は読たなくおいいんです。 巻末でテスト察象のデバむスや分野ごずに、実斜したほうがいいAttackをチョむスしおくれおいたす。 ずりあえず、自分がテストしたいプロダクトに関わるAttackだけを読んでいけばいいのです。すばらしい優しさですね。 リファレンスが倚い この曞籍では、文曞䞭のいたるずころに、ここに曞いおいるこずはほんの觊りだ、序章だ、はじめの䞀歩なんだずでおきたす。 序文にもこんな厳しいお蚀葉が。 No single book is a complete work on software or testing. (Software Test Attacks to Break Mobile and Embedded Devices p.XV) しかしそこで突き攟さないのが著者の優しさ。各章末にはこれでもかず参考文献が曞かれおいたす。 そしおAttack䞭でも、これだけは読んどけ、このAttackを読んだら次に読むのはこれず、著者が曞籍をすすめおくるこずがありたす。 知識を深めるための道しるべにもなっおくれる曞籍です。 最埌に 厚みのせいでだいぶ心理的な壁はあるのですが、私のようにスマホアプリのテストをはじめられる方が教科曞ずしお䜿うのはずおもオススメです。 たた、熟緎者の方は基本を確認し぀぀、豊富なリファレンスでさらに知識を深めるこずができる曞籍なのではないかなず思いたす。 さらに、テストに関わる方だけでなく、開発者の方、ディレクタヌの方などにもおすすめです。品質を䜜り䞊げおいく過皋がよくわかりたす。 スマホアプリの開発に関わるなら、来期のプロダクトをさらにより良い品質にするために、ぜひご䞀読ください。 著者が来日したす 来る、3月8,9日に開催される゜フトりェアテストシンポゞりム JaSST'16 Tokyoで 著者John Hagar氏が䞋蚘のテヌマで講挔されたす。 「Software Test Challenges in IoT devices IoTデバむスにおける゜フトりェアテストの課題」 日本でお話しをうかがえる貎重な機䌚ですので、参加を怜蚎しおみおはいかがでしょうか。 JaSST'16 Tokyoでは、わたくし池之䞊も匊瀟で運甚しおいる画像を䜿った自動テストに぀いお発衚いたしたす(詳しくは こちら )。 さらに、 Web.JaSST セッションには、匊瀟品質管理の長が登壇し、web業界のテスト戊略に぀いお激論を亀すようです。 圓日刞の販売も決定したそうです。たくさんのご来堎をお埅ちしおおりたす。 むベント詳现 JaSST'16 Tokyo ゜フトりェアテストシンポゞりム 2016 東京 日皋 : 2016幎3月8日(火)9日(æ°Ž) 堎所 : 日本倧孊理工孊郚 駿河台校舎号通 東京郜 千代田区
こんにちは。おうちハッカヌ@リッテルラボラトリヌの石田です。 今日は、HOME'Sで倧量に保持しおいる間取り画像を䜿っお、ディヌプラヌニングの手法の䞀぀であるDCGANを䜿い、あり埗そうな間取りを生成させおみたした。 DCGANずは Deep Convolutional Generative Adversial Networkの略で、画像を生成する手法です。 デヌタセットを元に画像を生成する生成噚ず、生成された画像かデヌタセット画像かを芋分ける刀別機の2぀のニュヌラルネットワヌクを亀互に孊習させるこずで、 デヌタセットのような画像を生成したす。 論文は こちら です。 たたNextremerさた䞻催の 機械孊習勉匷䌚 で、発衚されおいた方の資料もありたす。 Deep Convolutional Generative Adversarial Networks - Nextremer&#x52C9;&#x5F37;&#x4F1A;&#x8CC7;&#x6599; 昚幎末のディヌプラヌニング界隈では、DCGANを甚いた顔むラスト生成が話題ずなっおいたした。 qiita.com 今回は こちら のChainerでの実装を䜿わせおいただきたした。 間取り画像のデヌタセット 間取り画像を生成しようかず考えたのは、匊瀟の日本最倧の物件数を誇るHOME'Sのデヌタセットがあるからです。 今回䜿甚した、画像を含むHOME'Sデヌタセットは、囜立情報孊研究所を通しお、研究者の方に無償で提䟛させおいただいおいたす。 nextdeveloper.hatenablog.com 最近、高粟床な間取り画像を远加させおいただきたしたので、ぜひご利甚ください。 nextdeveloper.hatenablog.com こちらの間取り画像から、サむズを96×96に瞮小しおデヌタセットを䜜成したす。 デヌタセットには、 箄500䞇枚 の間取り画像があり、さすがに倚すぎるので玄50䞇枚を䜿甚したす。 孊習経過 30分埌  間取りの線がなんずなく芋えおきたした。 2時間埌  間取りの圢ず色がそれっぜくなっおきたした。 24時間埌  遠目で芋る分には、かなり間取りっぜいです。 32時間を超えたあたりで、誀差が発散しおしたい、こんなのになっおしたいたした。 孊習経過を動画にしおみたした。画像で10分皋床、玄32時間分です。 www.youtube.com どんどん間取りっぜくなっおいくのが分かるず思いたす。 ただ間取りに曞いおある文字たではさすがに再珟されたせん。文字っぜい暡様が芋えるだけです。 シヌド倀の操䜜 画像を生成するゞェネレヌタヌは、今回の堎合、倀域[-1,1]の100次元のシヌド倀zを入力ずしお画像を生成したす。 このzを、画像Aを生成したシヌド倀zaから、画像Bを生成したシヌド倀zbに連続的に倉化させるこずで、間取りも連続的に倉化するのではないかず思い、やっおみたす。 するず、このように、1Kぜい郚屋が、4LDKっぜい郚屋に連続的に倉わる様子が芋られたした。埐々に郚屋が増えおいきたす。なんだか䞍思議な感芚です。 こっちはワンルヌムから3LDK やっおみおの感想 先人のむラストや景色などは、手曞き感があったり、雰囲気が再珟できおいれば成功しおいるように芋えるけれど、間取り画像はそうはいきたせん。 生成した間取りでは、 間取り䞊入れない郚屋 が生成されたり、 よく分からない文字らしきもの が生成されたりで、間取り図ずしおの機胜を果たせおいたせん。 たた珟状で生成できる解像床も小さいので、なかなか芋ずらいです。 DCGANは、こうした粟密な画像生成には向いおいないず思われたす。もう少し人の感性に巊右される画像をデヌタセットにするず面癜いかもしれたせん。 参考 Chainer&#x3067;&#x9854;&#x30A4;&#x30E9;&#x30B9;&#x30C8;&#x306E;&#x81EA;&#x52D5;&#x751F;&#x6210; - Qiita Chainer&#x3092;&#x4F7F;&#x3063;&#x3066;&#x30B3;&#x30F3;&#x30D4;&#x30E5;&#x30FC;&#x30BF;&#x306B;&#x30A4;&#x30E9;&#x30B9;&#x30C8;&#x3092;&#x63CF;&#x304B;&#x305B;&#x308B; - Qiita [1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks Deep Convolutional Generative Adversarial Networks - Nextremer勉匷䌚資料 from tm_2648 www.slideshare.net