こんにちは。新卒3年目デザイナーおおしだです。 以前には、「経験0からデザインをする上で大事なこと5選」を書きました。 www.lifull.blog もうあれから2年経ちます…驚きです。 今回は私がデザイナーとして開発に携わった、いろんな街の情報コンテンツ「まちむすび」に関して書こうと思います。 まちむすびとは? 「まちむすび」は、気になる「まち」や知らなかった「まち」のことを実際に住む人の声や各種データから知ることができる、 街の情報がつまった情報コンテンツです! 引越しをしたいと思ってウェブサイトなどで家を探してみると、候補にいろいろな駅が出てきてどこを選んだらいいかわからない!ということ、ありませんか? どの駅が、あるいはどのまちがどんな場所なのかわからないまま引越しをするのは不安ですよね。 実際に住み替えをするのに必要な情報を最適な形でユーザーに届け、住み替えに役立てていただきたいという気持ちから生まれたのが この「まちむすび」です。 内容を少し紹介すると まちごとにいろいろな評価が見られたり ランキング形式でまち周辺の雰囲気がわかったり まちへの口コミがみられたり そのまちの家賃相場がわかったり などなど、「まちむすび」には気になる情報が盛りだくさんです。 なぜ「まちむすび」になったのか この「まちむすび」という名前が決まるまでは、ボツ案が何十個も出たりなどしながらメンバーでの話し合いが続きました。その中で、 街に関する言葉を入れたい みなさんに覚えて使ってもらえるような、端的でかつインパクトのあるものにしたい コンテンツの特徴である、街と街をつなぎ、まちとユーザーも繋げることを表したい というところから 「まち」と「むすぶ」という言葉が浮上しました。 「まちむすび」というサービスの意味 街の情報一つ一つが一つのコンテンツとなって集まる 街と街、人と人、そして街を人をつなぐ、結ぶ 開発者がお互い協力して、街に住む人の声を形にしていく という意味を込めて「まちむすび」に決定しました。 「まちむすび」が目指すこと 「まちむすび」が目指していることは、”住み替えに役立つ「まち」の情報を提供する事”です 住み替えの後に判明するような「まちの情報」を住む前に提供する事で、より多くの人々に、心から満足するような家との出会いに繋げ 「このまちに住んで良かった」「まちむすびで探して良かった」と思ってもらう事を目指しています。 今よりもさらに「まち」から家を探す、ということが広まって欲しい、それによって満足のいく住み替え体験をより多くの人に提供したい、 そんな気持ちで日々開発を行なっています。 「まちむすび」デザイナー目線の誕生秘話 「まちむすび」のデザイナーとしてアサインが決まった時、私は嬉しい気持ちでいっぱいでした。 自分自身、街情報のコンテンツが住み替えの時にあったなら引越しに失敗しなかったのに…という気持ちや 純粋に新しいコンテンツのデザインをしてみたい!という思いがあったため、嬉しい気持ち反面 大規模PJのデザイナーとして初めてアサインされたことに不安も半分、というところでした。 しかしながら、PJメンバーと一緒に、この要素はこうあるべきだ、こういう見せ方だったらユーザーにとって魅力的に感じてもらえるはず、 ユーザーの流入や遷移から何を優先させて画面に表示させるべきか、など、話し合いを重ねリリースまでたどり着きました。 「楽しかった、でも大変だった、もっとユーザーに寄り添ったデザインにしたい」というのが今の気持ちです。 デザインのこと 「まちむすび」のデザインでは、ユーザーに親近感をもってもらいたい、街を探すことをポジティブに捉えて欲しいという想いから イラストやアニメーションにこだわっています。 (是非是非、まちを探してスクロールして見てください! https://www.homes.co.jp/machimusubi/ ) 私にとって今回挑戦だった部分は、イラスト部分に用いているアイソメ図です。 「はじめましてアイソメ」 という感じでした。 (ちゃんと描いています!) 基本的にIllustratorを用いて描いています。 もともとは正方形の図形を平面・右側面・左側面でそれぞれ変形を行うことをアクションを使うと効率的に作ることができます。以下は一例です。 平面 拡大・縮小(垂直:81.65% 水平:70.71%)→ シアー(30度)→ 回転(-30度) 右側面 拡大・縮小(垂直:81.65% 水平:70.71%)→ シアー(30度)→ 回転(30度) 左側面 拡大・縮小(垂直:81.65% 水平:70.71%)→ シアー(-30度)→ 回転(-30度) 左を組み合わせていくと、右のようになります。 まちむすびの今後 「まちむすび」は、どんどん新しいコンテンツや改修を行なっていく予定です! 乞うご期待。 「まちむすび」を使ってくださる方が好みのまちや、今まで知らなかったけど好きになれるまちに出会えるように もっとこのコンテンツをよくしていきますので、ぜひ、街の情報コンテンツ「まちむすび」をご活用ください。 https://www.homes.co.jp/machimusubi/
こんにちは。クリエイターの日運営委員会の工藤です! 先日第6回創民祭が開催されましたので紹介させていただきます! 創民祭とは? 創民祭(そうみんさい)とは、業務や「クリエイターの日」、プライベートの成果など、LIFULL社員が作ったプロダクトをお酒を飲み、ピザ・寿司を食べながらお披露目する場です。 こんな感じで仕事終わりにビールを飲みながらやりました!! 前回の様子はこちら www.lifull.blog 多種多様な展示プロダクト 当日に展示されたプロダクトを紹介します! VR Surprise VR空間に写真やメッセージをのせることのできるサービスです!誕生日の時などのサプライズでこういったサービスがあるとデータとして思い出が残り続けるので、嬉しいですね! オリンピック バス運行状況マップ バスのリアルタイムの現在地を地図上に表示することでバス利用をサポートするサービスです。コンテストに出すために2日間で開発したみたいです。オリンピックで使うことを想定していて、オリンピック会場からバスを検索することができます! AIも活用しオンラインで気軽に議論!オンラインブレストサイト オンライン上でたくさんの人が気軽に社会課題の解決のために議論できるサービスです。集まらなくても遠隔でブレストできるので、アイデアとかを考えるときにとても便利ですね! LIFULL Vuilders LIFULL Fabにて3Dモデリングなどを行い作成された椅子です。頑丈で人が乗っても全然平気でした!ちなみにLIFULL Fabとは弊社が運営するFabスペースとなっております。 lifull.com チャットボットプロトタイプ ホームズくんと対話しながら、疑問を解決することができるチャットボットです。従来のチャットボットより運用不可を減らすことを目指して開発されました。技術的にかなり工夫されていました! みんなの空き家!活用Collection 空き家ってたくさんあるけどどうしていいかわからないって人のために活用事例を紹介するサイトです。14営業日でインフラから構築し、リリースまで行ったみたいです!実際にリリースされているのでぜひ見てみてください。 https://www.homes.co.jp/akiyabank/usecase/ 前だけ向く地図 地図を読むのが苦手な人のためにコンパスのように目的地に向かって前を向き続ける地図です。世界最小スマホ「Jelly pro」を用いて開発されたので、時計のように腕に付けることができます。方向音痴にはとても便利ですね!! 個展 Webやアプリだけでなく、個展もあります!飾っていたらついつい立ち止まって見ちゃいますね!これまでは一般的なWebサービスやアプリでの出展が多かったですが、こういったアート寄りのプロダクトも出てくるとうれしいですね! LT大会 最後に最近恒例となっているLT大会もありました。登壇者は5名でどれも盛り上がっていました。 結果発表 BEST SPEAKER賞 新サービスに必要なことは全部アイドルマスターシンデレラガールズが教えてくれた 社員からの投票で最多の投票数を集めたLTに送られる賞です。 テック賞 AIも活用しオンラインで気軽に議論!オンラインブレストサイト 技術的に優れているプロダクトに送られる賞です。 山田賞 LIFULL Vuilders 弊社役員の山田が推薦する賞です。 最優秀賞 みんなの空き家!活用Collection 社員からの投票で最多の投票数を集めたプロダクトに送られる賞です。 最後に 創民祭も6回目を迎え、Webサービスやアプリ以外にも出展の幅が広がってきました。ものづくりの組織として成長していきたいですね! LIFULLでは、一緒に働くメンバーを募集中してます。 ご応募お待ちしてますので、ぜひみてくださいー! lifull.com
こんにちは! デバイスソリューションU開発Gの池田です! とうとうWWDCも最終日! 現地からお届けしたいと思います! 最終日の会場 最終日は木曜日のBash(公式の打ち上げパーティーのようなもの)の夜の後、セッションも少し早い時間で終わります。 そういった状況もあり、会場は人もかなり少ないのかと思っていましたがそうでもなさそうです! 空席もありますが今日も多くの人がセッション会場に足を運んでいます。 ランチタイムも人がいっぱい! セッション 最終日は月曜日〜木曜日の4日間より2時間早く終わることもあり、セッションの数は少ないです。 以下のセッションに参加してきました。 Designing Notifications Adding Delight to your iOS App Designing Notifications 通知で提供するユーザー体験についてどう考えどう設計していけばよいかのお話でした。セッションを受けて以下のトピックについてピックアップして書こうと思います。 通知の許可 通知での価値提供 通知の許可 通知の許可で気をつける点は以下3点があがっていました。 初回の起動での通知許可をとらない 通知が価値があることだということを伝える 通知と関連あるタイミングで表示する 例では、通知許可を求めるダイアログ内で、「継続して通知を希望しますか?」というような文章でユーザー自身が通知でのコンテンツ購読を続けるか否かを選べる形で伝える方法が良い例としてあがっていました。 通知での価値提供 通知での価値提供は以下3点に気をつけるとよいとされていました。 意味がある内容で明確な情報を提供する アプリを起動してもらう理由として利用しない 必要な情報だけ通知され、必要でない情報は通知をOFFできるなど設定を適切に設計する 1.2.を満たすシンプルな例として、天気アプリで「もうすぐ雨が来ます。」のような通知が良い例としてあがっていました。 3.については例えばニュースアプリで興味があるカテゴリだけの通知に絞れて、興味がないカテゴリは通知をOFFにできる例などがあがっていました。 Adding Delight to your iOS App ユーザーにより良い体験をしてもらうための様々な内容が話されていました。 外部ディスプレイサポート、レイアウト駆動のUI、起動の高速化、スムーズなスクローリング、ユーザー体験の連続性、様々な便利なデバッグ方法の6点について話をしていたのですが、ここでは起動の高速化、スムーズなスクローリング、ユーザー体験の連続性について触れます。 起動の高速化 話がされていたのは以下3点です。 反応を早く返せるようにする 本当に必要なものだけ利用する 計測して改善する 1.に関しては application(_:willFinishLaunchingWithOptions:) 、 application(_:didFinishLaunchingWithOptions:) 、 applicationDidBecomeActive(_:) で処理をたくさんさせない、大きなデータセットの読み込みを避ける、データベースが整理されているかをチェックするなどすることでユーザーに対して早くレスポンスを返すようにという話がされていました。 スムーズなスクローリング 以下3点について話がされていました。 Time Profiler、Core Animation Instrumentsを活用する メインスレッドの処理を削減する 視覚効果やマスキングは重いので節約して使う しっかり計測すること、画面描画に関わる処理は極力軽くすることが重要とのことでした。 ユーザー体験の連続性 Handoffの活用、Spotlight検索、Siri Shortcuts等も合わせて利用し、ユーザーの体験を連続的に作っていくと良いという内容でした。 今回発表のSiri Shortcutsもどういった形でこれからいろいろなアプリのユーザー体験に繋がってくるのか、今後が楽しみです! Bash 最後に昨日の夜開かれたBashの様子をお届けし、WWDC 2018のレポートは終わりにしようと思います! セッション等は18:00まで行われ、Bashは19:00から開催されます。 会場に入りました!奥にはライブが行われるステージが見えます。 会場入り口で絵文字のピンバッジをもらえました!かわいいです! ドリンクやフードも無料で提供されています。 会場では様々なゲームが野外に設置されています! 光る的入れや、 エアホッケーや小さいカーリングのようなゲームや、 巨大なジェンガなんてものもドカッと置いてあります! Bashでは毎年有名なアーティストのライブがあり、会場をガンガン盛り上げます! 今年のアーティストは「Panic! At The Disco」でした!すごくかっこよく、会場もすごい熱気でした!!! そんな楽しい時間はどんどん過ぎ、夜もふけていきます。 そんなこんなでいつのまにか終了時間の22:00!会場には余韻を楽しむ人々がちらほら。 こうして楽しく盛り上がったBashも終了です! 本日で最終日だったWWDCは本当に楽しく刺激のあるカンファレンスでした!!!今回得たものを持ち帰ってしっかりユーザーにいいものを届けていければと思います!!! 最終日のレポートはここまで!ありがとうございました!!!
こんにちは! 開発Gの又来です! WWDC4日目!早いもので残すところ今日を含めてあと二日になりました! 会場限定グッズ 今日は朝早くから会場限定グッズを求めて並びました。 一部グッズを紹介したいと思います。 トートバッグですね。割と生地がしっかりしているので長く使えそうな一品。 MacBook(?)メモ帳です。カラーバリエーションも豊富! 「これMacBookです」とか絶対言わないでくださいね。つまらないです。  AppleのロゴTシャツです。 すごくシンプルで買い物をしている大半の人が購入していました。 個人的にバックパックが欲しかったのですが、まさかの初日に全て完売したそうです。。くやしい! AR Great Experience ARKitを使用する際に気をつけるべき箇所を紹介していました。 認識中はアイコンなどをアニメーションさせて「認識中」だということを伝える ラベルなどは近づいても離れてもオブジェクトが同じサイズで見えるようにしてあげる 詳細などはディスプレイの最前に表示させる(AR上ではなく画面にオーバーレイさせる) タップ+ジェスチャーで移動や拡大縮小などの動きを加える 片手で操作できるように心がける この他にも、モデルを作成する際に反射を考慮したテクスチャを貼るようなことについて触れていました。 まるで実際にそこにあるかのようなリアリティのある、金属の光の反射をテクスチャの貼る順番などでうまく表現していました。 今回のiOS12へのアップデートではデフォルトのアプリとして「Measure」が搭載されました。 開発者がより面白いコンテンツを作るためのTipsがこのセッションでは紹介されていたと思います。 認識中のアニメーションの追加やモデルの移動などはユーザー体験の向上に繋がるので挑戦してみたいです! Life of a Button デザイナー向けのセッションになります。 「トーストを焼く」ボタンをどうやって表現するかについてデモを行いながら触れています。 ボタンの状態 待ち(Ready) 実行中(Making) 終了(Done) この3つの状態をうまく切り分けて表現していました。 それぞれの状態で、 アプリが何をしているのかを人々に知らせる テキストの説明、アイコンで伝える 視覚、聴覚、時間の経過に伴う触覚の変化を見せる を意識してデザインすると良いです。 また、サウンドは音の高さや大きさなど、オブジェクトのサイズを考慮するとより良い体験が提供できます。 全体的な内容として、 物理的な世界がインスピレーションを与えることができる ユーザーインターフェイスは、あなたが見ている以上のものである 物事を試して学ぶ ことが大事だそうです。 ALTCONF WWDC会場横で開催されているALTCONFに行ってみることに! Marriottのホテルが会場、、、 中はとても綺麗です。会場にはいくつかブースが出ていたのでのぞいてみました。 ノベルティがすごい!! シャツにペン、シールや水筒まで!!残りわずかだったらしく、この後訪れた方はもらえなかったみたいです。 以上Day Fourの様子でした! Day Lastに続く!
こんにちは!デバイスソリューションU開発Gの池田です! WWDCも3日目!中盤戦です! 現地から中盤戦の様子をお伝えします! 会場の様子 朝の最初のセッション時間の作業スペースの様子です。 昨日夜は会場広場でパーティーがあったおかげか空席も結構あり、穏やかな朝です。 好きな席を選んで優雅にモーニングを食べながら、作業時間をとることができました。 奥の方にCompanyStoreの行列が見えますがここの賑わいはどの時間も変わらずです。列の長さは2日目になっても変わりません。(閉店直前&遠目から見た感じですが、16:00-17:00頃になると少し列も空いていたように見えました。) 会場の外も人は多くなく空きスペースが見えます。 ここからセッションが終わって空き時間、そしてランチの休憩時間になると人がどわーっと押し寄せます! これがランチの作業スペースの様子!人いっぱい! 席が全然とれません! 外の様子です。 こっちも人いっぱい!どこのスペースもランチタイムはたくさんの人で溢れています。 そんな今日のランチはローストビーフサンドイッチを選びました。このサンドイッチはとっても美味しかったです! 以下はランチボックスとスプライトやコーラなどのドリンクを提供している野外バーカウンターの様子。 ランチタイムは世界各地から来たエンジニアとコミュニケーションする機会でもあります。 今日はイスラエルから来たエンジニア2名とお話することができました。ARのビル内設備模様替えアプリを見せて頂いたのですが、リアルに現実空間と重ねて建物内の設備を切り替えれるアプリでかなりクオリティと実用性が高く、感動しました。 今回のWWDCで発表されたARKit 2に対応するの??と聞くと、発表されたばかりなので将来ね。 とのお話でした。 ランチタイムで楽しい時間を過ごしリフレッシュ!午後のセッション&ラボに向かいます! セッション 本日は今回のWWDC18で発表されたSiri Shortcutsのセッション「Building for Voice with Siri Shortcuts」に参加してきました。 Building for Voice with Siri Shortcuts Siri Shortcutsを利用すればアプリのアクションをショートカット登録し、ユーザーが手軽に日々のルーチンタスクを実行できるようにできます。 また、簡単な呼び出しフレーズを設定してそのフレーズをSiriに伝えると手軽にアクションが実行できます。 紹介されていた例ではスープをオーダーするアクションで、"Chowder Time."とSiriに伝えるとスープの種類をチャウダーに指定してオーダーができるというものでした。 このセッションではアプリのアクション作成とショートカットへの登録、ユーザーに対するレスポンスのカスタマイズ、ショートカットアクション作成のベストプラクティスが紹介されていました。 アクションの作成とショートカットの登録 ショートカットに登録できるアクションは以下2種類です。 NSUserActivity Intents これらのアクションを作成し、それぞれに対応した方法でショートカット登録を行います。 NSUserActivity は、 becomeCurrent() メソッドを呼ぶことでショートカット登録が行われます。 Intentsは、 INInteraction クラスの donate(completion:) メソッドを利用してショートカット登録が行われます。 ユーザーに対するレスポンスのカスタマイズ Intentsを利用するとユーザーへのレスポンスをカスタマイズできます。 カスタマイズのレスポンスとして以下4つのレスポンスが紹介されていました。 ユーザーのアクションに合わせて各種返答をすることができます。 Confirmation Success Information Error ベストプラクティス ベストプラクティスとして、ユーザーに見せる内容(アクションのタイトルとサブタイトル)と呼び出しフレーズの最適化の話がありました。 アクションのタイトルとサブタイトルの最適化 タイトルとサブタイトルはユーザーに良く伝わる内容に最適化する必要があります。例で上がっていたのはクラムチャウダースープを注文するアクションです。 良くないパターンはタイトルが"A clam chowder from Soup Chef"、サブタイトルが"The best way to get soup"となっているパターン。良いパターンはタイトルが"Order clam chowder"、サブタイトルが"To One Apple Park Way"となっているパターン。 良い例の方が明確に何が起こるか(注文すること、Apple Park Wayに到着すること)がユーザーに伝わる内容になっています。 呼び出しフレーズの最適化 呼び出しフレーズを最適化する際は、「短く覚えやすいこと」が重要というお話でした。できれば3語以内で以下のようなワードが良いとのことでした。(日本語の例もあがっていました!) Chowder Time. チャウダーたべたい アクションの作成、フレーズの設定、最適化を行いユーザーにとって最適なアクションのサジェストが進んでいけば日々のルーチンがすごく楽に、楽しくなっていきそうです! これからのSiri Shortcutsの発展が楽しみです! ラボ 今日はUser Interface Design LabとSiri Shortcuts Labの2つのラボに行ってきました。 User Interface Design Lab User Interface Design Labでは実際アプリを使って頂きながら様々改善についてのアドバイスを頂きました。 何のために画面内の要素があるのか、質問なども織り交ぜながら理解して頂き、良い!いらない!こうした方がいいのでは??など率直に建設的な意見をたくさん頂くことができました! 説明にも絵を描きながら説明して頂きとても分かりやすかったです! 30分という短い時間でしたがとても濃く楽しい時間でした! Siri Shortcuts Lab Labで以下聞いた3点について質問と回答です。 【質問】 Custom Intentが使えるようになったが以前のような決まったドメイン以外でも使えるのか? サジェストは自動なのか、手動で何か行う必要があるか? サジェストをされる境界値はどういったものなのか? 【回答】 使える。 自動。時間や場所、頻度によって自動でサジェストされる。 ここについては具体的には教えていただけませんでした。(当然ではあるのですが。) 1.は再確認で聞いた質問だったのですが、これまでメッセージング、支払い、ライドシェア等領域が限られていたSiriがいろいろな分野に解放されたという意味で大きな変更だと思います。 これからサジェストと連携してさらに発展していきそうですね! 楽しみです! おまけ 昨日会場を後にしようとしていたら急遽大声で、 「ユニコーンターイム!!!!!」と叫び声があがりました。 ビクッとしてそちらを見るとユニコーンのピンバッジを配っていました! 表情に癒されます...。 以上Day Threeの様子でした! Day Fourに続く!!!
こんにちは! 開発Gの又来です! WWDC2日目!今日もたくさんの収穫がありました。 初日はKeynoteがメインでしたが、今日からはセッションとラボについて触れていきます! その前にWWDC前日に行ったバッジ交換やApplePark、WWDCでのお土産などを紹介したいと思います。 WWDC前日 私たちは日曜日にバッジ交換に行きました。 前日から会場は賑やかな様子。 スタッフの方々が気さくに話しかけてくれたり、ハイタッチしたり元気いっぱいな様子でした! お決まりの記念撮影⭐ Apple Park せっかくSan Joseに来ているので、Apple Parkにも足を運びました。 Visitor Centerは一面ガラス張りの建物です、、! WWDCでバッジを交換してきた参加者の方々が続々と流れてきていました! 屋上からはオフィスビルがチラリと。 当然ながら一般人は中には入れませんが、そもそも中がどのようになっているのかは未公開です。唯一わかるのは中には池があること。とても気になりますが、ここでは写真を撮ってWWDC初日に備えました。 WWDC 2日目 朝食を頬張りながら今回のWWDCのお土産を見に行くことに。 初日とは違い、スペースも余裕がある感じ。 Company Storeの列はこんな感じ。 この時は「あぁ、建物の中でお土産を買うのか」と思ってました。 残念!まだ中にも列があります。 10人ずつ呼ばれて中に入っていくのでここでようやく買い物開始かと思いきや、、、 最後に長蛇の列が!! ようやくここでグッズが見える位置まで来ました。(写真右端にうっすら見えるのがTシャツコーナーです。) odwallaゲット! 買い物が終わると、なにやらodwallaが配布されていることを聞きつけ、早速探しにいくことに あっさり発見!念願の初odwallaです。 ※odwallaとは、スティーブ・ジョブズのお気に入りだったドリンクらしいです。 朝食に飲んだオレンジジュースより美味かったです。 長い買い物を終え、いざセッションへ! What's New in ARKit 2 今回発表されたARKit 2についての内容になります。 大きく分けて6つの機能が触れられています。 Improved face tracking Environment texturing Image detaction and tracking 3D object detection Persistent experiences Shared experiences その中でも特に気になった、Shared experiencesについてまとめたいと思います。 Shared experiences AR空間の共有。同時に複数人で同じAR空間を見る事ができます。 また、ARKitには現実空間におけるユーザーのデバイスの位置を特定するために使用するすべての空間マッピング情報が含まれており、 このマッピングの情報を使ってAR空間の共有や保存を可能にしています。これが今回追加されたWorldMapです。 WorldMappingStatus WorldMapをキャプチャするには、あらかじめ空間を認識しておく必要があるみたく、今どのくらい取得するのに適した状態かステータスを確認する事ができます。 notAvailable 空間マッピング情報を全く取得・認識できていない状態。 このときに呼び出すと、エラーが発生してしまうので、利用させないような工夫が必要です。 limited WorldTrackingを行うには、現在のデバイス位置の周辺の領域をまだ十分にマッピングしていない状態。 一応この状態でも保存はできますが、読み込み時に位置がずれたりする場合があります。 この状態で保存するのは好ましくないので、もう少し認識させる必要があります。 extending この状態になっていれば、デバイスの位置とそこから見えるシーンをマッピングするためのデータを取得・保存できます。 mapped 空間マッピング情報の取得・認識は十分です。 ここから新たに別のデバイスやセッションで読み込みを行うことで、保存したWorldMapの位置・状態が高い品質で再現できます。 AR Quick Look ARがアプリ無しで手軽に試せるものになります。 読み込んでAR上に表示。平面検出やオブジェクトの移動やスケールの拡大縮小が可能。 Safari メール メッセージ ニュース メモ ファイルアプリ などの基本的なアプリからARでプレビューできます。 ※普通のアプリからでも問題なく利用できます。 また、ウェブ上ではAR対応のバッジが自動表示されたり、ドラックアンドドロップ自動対応していたりと、開発側で意識するようなことが少なくなりました! Introducing Create ML Playgroundを利用して数行のコードと学習データでモデル作成をして実際にアプリに組み込むまでの基本的な内容でした。 このセッションでは、画像の学習方法を2種類のやり方で説明していました。 Playgroundを利用してドラッグ&ドロップで実行する方法 APIを利用してファイルの場所を指定して実行する方法 ※Playgroundで利用する場合はmacOSをtargetに指定してプロジェクトを開始させてください。importがうまくいかない場合があります。 画像の学習には10枚から対応、学習させる画像データに偏りを持たせないようにすれば問題ないです。 画像サイズに関しても小さすぎなければ利用可能です。(299×299ピクセル以上) こんな簡単に学習用のモデルが作成できるようになるとは思いもよりませんでした。 かなり気軽にできるので皆さんもやってみてください!! ラボ ARKitラボに行ってきました!ラボではAppleのエンジニアに直接質問ができます。 英語が苦手な私はあらかじめ質問する内容を考えてきてアプリを見せながら話をしました。 ARKit2で出来るようになったことを取り入れた、新しい体験を一緒に考えてくれたりと、かなり親身になって応えてくれました。また、英語が聞き取りにくい箇所についてはメモを書いてもらったりと、大変参考になる機会が得られました。 明日はWWDC中盤戦です! セッションやラボに参加してフィードバックをしたいと思います! Day3に続く!
こんにちは!デバイスソリューションU開発Gの池田です。 とうとう始まりました!WWDC1日目! 現地からレポート記事をあげていこうと思います! Keynote 本日は朝から並んでKeynoteに参加してきました。 Keynoteは朝10時からのスタートです。 長蛇の列が予想されたので5時起きで会場に向かいます。あたりは薄暗い。 ホテルの近くのGishという駅から路面電車のVTAに乗って会場に到着し、列に並びはじめました。 なかなか進まず40分後...。 やっと会場が見えてきました! さらに10分後...。 もうすぐです! 会場入り口ではAppleのスタッフが迎えてくれます! 踊っていたりハイタッチしてくれたり!テンション高いです! 会場内では所々歓声が上がります。熱気が高まってきました! 会場に入るとコーヒーやパンなど無料で提供されています。 中には白いボールのような形の食べ物もありトリュフチョコかと思ってパクッと一口。 全然甘くない。。😩ただのおしゃれに丸められたバターでした。。。 気を取り直してコーヒーで流し込み、パンとオレンジジュースもぐいぐい飲み、朝食は完食しました。 あとはKeynoteに備えるだけです。 そしてそこからなんだかんだ待つこと1時間超...。 とうとう!Keynoteの会場に入りました! アプリアイコンがいっぱい並んで紹介されています! Keynote始まりました! ティム・クックさんです! iOS、watchOS、tvOS、macOSと発表されていきました。 iOSはAR(拡張現実)、Siri、ML(機械学習)の進化が発表、Memojiも発表されましたね! watchOSは、Activityの対決モード、ワークアウトの種類追加、トランシーバー機能追加など。 tvOSは、サウンドの向上、新しいランドスケープ画像の追加など。 macOSはダークモードの追加、Finder、iPhoneと連携したContinuity Camera機能などが発表されました。 AR、Siri、MLについて触れたいと思います。 AR(拡張現実) ARでは複数人でAR空間を共有できる機能が発表されましたね。 会場内では実際にデモアプリを使ったゲームができるエリアがありました。 現実には何もない木目のまっさらなテーブル上にARの積み木とスリングショット砲台が出現し、相手の砲台にボールを当て3個倒したら勝ちというゲームで、実際体験しましたがすごく面白かったです! はたからみるとただの木目のテーブルにiPadを向けて真剣にうろうろする大人がいるという。異様な光景です。 Siri Siriは日課を分析して次の行動をおすすめしてくれる提案機能や、カスタムの言葉を登録しておけば複数のアプリでの作業を自動的に順序だてて実行してくれるショートカット機能が発表されました。 例えばTileアプリをよく使っていて、TileアプリからSiriにショートカット機能を登録しておくと、Siriに「I lost my keys」と伝えると自動でTileアプリを開いてくれるなど。 メッセージに合わせたアクションを自動で実行してくれます。 ML(機械学習) ML関連ではモデルをXcode上で作成できる「Create ML」が発表されました。 MLのモデル作成はPlayground上でできます。 画像の識別モデルを作成する場合は、画像をPlayground上にドラッグ&ドロップするだけで自動で学習し、CoreMLで利用できるモデルが素早く作成されます。 学習にかかる時間も少なく、できるモデルの容量も抑えられ、Playgroundで手軽に作れます。 デモを見ていて、CoreMLを利用した画像識別機能を作成する際はかなり便利に使えると感じました。 今後機械学習分野はiOSの中でもさらに発展していきそうですね。 Firebase party at WWDC18 本日はWWDCが終わったあと周辺イベントで開催されていたFirebase Party at WWDC18に参加してきました。 シアトルから来たエンジニアと少し話しました。 今年初参加で来られたそうです。元々Web系のバックエンドなどやられていてエンジニア歴は8年。iOSを始めてから3年とのことでした。 なんでiOS始めたの??と聞くと、Webでサービス提供しているとブラウザの影響などで考えなければいけないことが多く、iOSは統一してサービスを提供できるためそこが魅力と感じてiOSデベロッパーになったそうです。 なかなかこういう場でないと出会えない方々と出会え、話しができたのが貴重な機会でした。 明日からは本格的にセッション、ラボが開催されます。 しっかり吸収し、アウトプットに繋げていきたいと思います! Day Twoに続く!!!
エンジニアの鈴木 (a.k.a すずけん )です。 今回、AWS Summit TOKYO 2018 で開催された「 AWS Secure Code Contest - DevSecOps の実践を通じたチーム対抗静的コード解析バトル - 」に参加し、🏆 優勝 🏆することができました!! AWS Secure Code Contest 午前の部の優勝チーム、sushisecopsのヒーローインタビューです!得意分野を分担して見事優勝を勝ち取りました😆 優勝チームには一万円分のAmazonギフト券を差し上げました🎁 午後の部もまだ参加可能。ご興味のある方は14時半迄に新高輪3階の天平まで! #AWSSummit #devops pic.twitter.com/7Zfgnc9V6x — アマゾンウェブサービス (@awscloud_jp) 2018年5月31日 この記事では、 このイベントの振り返りと今回の学び について共有したいと思います。 コンテストの内容については本記事では触れません が、良い結果を残すためのヒントになるようなオープンな情報には触れています。 AWS Summitの楽しみ方のひとつとして、このようなイベントに参加してみようと思う人の参考になれば幸いです。 AWS Secure Code Contest 参加動機 まずはじめに参加動機からです。端的に2つ理由がありました。 自分の力を試したいという気持ち このタイミングでしか楽しめないことがしたい 一つづつ見ていきます。 前者に関しては、「他社のエンジニアとの共同作業において普段自分が行っていることが効果的なのかを確認したかった」という側面と、「自身の市場価値の確認」という意味がありました。 つまり、 現在の自分の立ち位置を見つめ直す機会にしたい という目的です。 後者に関しては、 AWS Summitの楽しみ方をひろげる という目的がありました。 昨今のイベントにおいてセッションが動画で公開されるのはデファクトになりつつありますし、自分がやるより遥かに早いタイミングと精度でブログにまとめてフィードバックしてくださる方もたくさんいます。 つまり、情報の取得を目的とした点においては、特別な理由(イベントの雰囲気を肌で感じるなど)がない限り、非同期で済む場合が多くあります。 逆に、ワークショップやハッカソンなどはその場その瞬間にしか存在していません。 AWS Summitをより楽しむ為に、 非同期では味わえない経験をしたい という目的です。 事前準備 じゃあ、コンテストを最大限楽しむためにどのような準備をしたのかというと、「問題を予測する」、「やらないことを決める」の2つです。 コンテストという性質上、 あわよくば優勝🍣したい という気持ちがありました。 「問題を予測する」為に最初にしたことは情報収集でした。といっても、やることは単純で今回のワークショップのページを確認しながら、関連しそうなワード(aws devsecops)でググっただけです。 すると、AWS のDevOps系のブログが引っかかりました。読んでみるとなんとなく今回のワークショップに近そうな雰囲気があります。きっとこんな感じで出題されそうだなと予想し、一旦ここで紹介されているgithubのサンプルコードを実際に動かしてみるところまでやっておきました。 aws.amazon.com 次に、「やらないことを決める」です。募集要項やFAQを参考に、コンテストに必要そうなスキルと自分のスキルセットを照らし合わせて、やらないことを決めました。 具体的には、「pythonについて勉強はしない」と決めました。 募集要項に、「簡単な Python のコーディング能力が必要」とありますが、正直どれくらい必要なのかわかりません。ですが、FAQには「基本的なプログラミング言語の理解と Python の理解があれば問題ございません。」と書いてあります。 自分はpythonが書けません。 求められるのものとしては、単純なコードなら他の言語の知識を生かしてなんとなく読み込める状態であればいいと理解し、pythonについて時間を割くことはしないと決めました。 当日 当日、弊社エンジニアの磯野も参加するとのことで、待ち合わせをし一緒に会場に向かいます。 会場で受付を済ませ席に案内されると、すでに2名着席しており「あれ?なんか見たことがあるぞ」と言われました。 その方は以前 re:Invent 2017のGameDayで別チームで参加されており、re:Partyでお話させていただいたことがあり、すでに面識がありました。 昨年参加したGame Dayについてのレポート: AWS re:Invent 2017 参加レポート Day 2 - LIFULL Creators Blog また、もうひとりの方も、弊社と合同勉強会を開いたこともあり、一昨年のre:Inventにも行かれたとのことで共通項がありました。 もうこの時点で、かなりフレンドリーな状態😊 です。 同じ経験をしているという共通項がコミュニケーションを円滑にしてくれました。 コミュニケーションは日々も大事ですが、このような瞬発力をもとめられるワークショップでは更に重要だと考えているので、 お互いの意見がしっかり言い合えるような雰囲気が醸成されたチームにジョインできたのは、運がよかったな と思います。 お互いについて自己紹介したあとは、コンテストが始まるまで終始リラックスした雰囲気で過ごせました。 主催者側からチーム名を決めてくださいとのアナウンスがあり、「何がいいっすかねー?」「"hogefuga"でどうっすか?」「www」「エンジニアといったら🍣か🍕ですよね?」「中トロはどうですか?」「寿司食いたいなぁー」「じゃあ、今日のイベントにちなんで、 SushiSecOps はどうですか?」みたいな流れで、ふわっとチーム名が決まりました。 いよいよ、コンテストが始まります。 主催者からコンテストの趣旨説明があり情報公開がされました。各自およびチームで設定が始まります。 このとき自分たちのチームでまず行ったのは、課題に対するアプローチ方法の検討です。 はじめは、課題一つに対して、ひとり張り付こうみたいな流れがあったのですが、「1課題に対して2人1組で取り組んだほうがハマった時に対処が早くなると思うので、そうしたい」と自分から提案し採用されました。これは、昨年のGame Dayで得た教訓を有効に活用できた瞬間でした。 あとはもう全力で問題文を読み込み、目の前の課題に集中するのみです。 時折、運営の方が「いまトップですよ!」など励ましの言葉を掛けてくれました。正直スコアに関しては気にしている余裕がないほど課題の量と理解に悩まされました。 終盤、他チームに追い抜かれたものの、最後の最後でわずか0.3ポイント差で接戦を制しました。 この画像はコンテスト終了後、運営の方に掲載許可を頂いています あっという間の2時間でした。 振り返り 勝敗が全てとは思いませんが、 優勝できたことは素直にうれしい😊 です。 ですが、結果を出せたのは 良いチームメンバーに恵まれたなど、運の要素も強かった と思います。 チームメンバー各自の能力が高いに越したことがないのですが、それはマストではないと思います。 チームとして自分の価値を最大化するために、 どのような貢献ができるのかを考え実行できることが大事 なのではないでしょうか。 また、限られた時間でのアウトプットを出すために、GameDayでの経験がとても役に立ったと実感できたのは良い経験になりました。 まとめ 今回の経験から、個人的な学びもたくさんありました。その学びの中から強いて2つほど挙げてまとめとします。 1. 勝敗は運の要素も強いが、準備をしておいて損はない 勝負ごとに運の要素はありますが、勝率に関しては自分で工夫できる余地は意外とあるのかなと思います。 事前にできることを「自分でしっかりと考えて準備しておく」という、すごくシンプルなことがなかなかできなかったりするものです。 自戒を込めて、次に生かしたいと思います。 2. 打席に立つことの重要性 当たり前ですが、バッターボックスに立たないと、アウトになることすらできません。 このようなコンテストに参加することは、普段得ることができないエンジニアとしての経験として良いものになると思います。 また、GameDayという打席に立ったからこそ、今回の結果につなげることができたので、点が線につながったと感じることができました。 これからも、積極的に打席に立って楽しんで行きたいと思います。 最後に、一緒のチームで戦ってくれた、田中さん・福井さん・磯野さん、および運営の方々へ リスペクトを込めて、ありがとうございました!!!
※Appleからのメール画像を使用しております。 こんにちは! デバイスソリューションユニット開発グループの又来です。 入社2年目のiOSエンジニアです!!ARKitの新機能開発とかやりました! 来週の6/4-8にCA, San Joseで開催する、WWDC2018に参加してきます! developer.apple.com WWDCには初参加なのでかなり緊張しています。。。 今回はそんなWWDCを最大限有意義なものにするための準備について書きたいと思います。 WWDC2017を振り返って 去年のWWDC2017で発表されたARKitでは気軽にARの世界観を端末上で体験できるようになりました。 私は日本からKeynoteを見ていましたが、ARKitが発表された翌日にデモを動かして感動した記憶があります。 また、弊社ではホームズくんと一緒に間取り測定をARで行なったり、ARKit1.5では垂直の認識が追加されたことで、CMでお馴染みの崖登りや綱渡りを再現しながら計測を行う機能を開発しました。 参加する上で必ず確認しておきたいこと パスポート 意外と直前になってパスポートの期限が切れていたりして焦ることがあります。アメリカへの入国は3ヶ月以上期限に余裕があることが推奨されています。 航空券とホテル チケットの当選発表からだと会場周辺のホテルがすぐに埋まってしまいます。 お金に余裕のある方はAppleが推奨するホテルに泊まってみるのはいかがでしょうか。 私は航空券も同時に予約できるエクスペディアで確保しました。Airbnbで探してみるのも一つの手だと思います。 チケット WWDCのアプリからWalletアプリに追加できるので参加する方は絶対に入れておきましょう。 WWDC Apple 辞書/辞典/その他 無料 WWDCには行かないけど周辺イベントには参加する方は他のチケットも確認しましょう! ESTA ビザ無しで入国する際には年齢問わず誰にでも申請が必須なものになります。取得はいつでもできますが、余裕を持って早めに申請しましょう。 有効期間は2年または、パスポートの有効期限です。 保険 アメリカは医療費がかなり高いです。また、治安も良いとは言えないので必ず入りましょう。「自分は大丈夫」精神で行くと危ない目に合います。 友人とシリコンバレーに自転車で観光した際に見事に盗難に合いました。気をつけましょう。 Wifi WWDCに参加される方にとってはライフラインみたいなものです。アメリカは公共Wifiが多いですが、登録しないと利用できなかったりいちいち面倒ですのでレンタルの準備しておきましょう。 USBハブ 会場にはコンセントが利用できる箇所はあるみたいです。PCもスマホも充電できるハブを用意しておくことをおすすめします。 私はType-Cが対応しているUSBハブを購入しました。 服装 日中は暑いですが夜や日陰は寒くなりそうですので調節できる服装にしておくと良いでしょう。 機内での過ごし方 直行便で行ったとしてもかなりの時間を機内で過ごすことになります。 特に乾燥対策はしっかりしておきましょう!保湿マスクなどがあると便利です。 ゆったり寝たい方は、機内用にスリッパなど持ち込んでおくと足元も落ち着きリラックスできるでしょう。 楽しみを見つけておく WWDC期間中は数多くのセッションが公開されたりラボで直接Appleの方とコミュニケーションが取れる機会があります。気になる発表やこんなことを聞いてみたいなど、あらかじめ見るものを決めておくと良いでしょう。 個人的には去年発表されたARKitの内容が気になります。 ARKit1.5では画像認識もできるようになっていますので、Core MLとのさらなる連携やアンカーの位置の共有など出てくるか楽しみです。 周辺イベントにも参加してみる WWDC開催期間中には周辺で多くのイベントが開催されます。WWDCには参加しないけど周辺イベントには参加する方もいるみたいです。 Parties for WWDC Popixels Ltd. ナビゲーション 無料 Eventbrite Eventbrite エンターテインメント 無料 AltConf Thomas Kollbach 辞書/辞典/その他 無料 私は今のところ、Firebase party at WWDC2018に参加する予定です! それでは現地で会えることを楽しみにしております。
こんにちは。 デバイスソリューションユニット開発グループの崔です。 弊社でLIFULL HOME’SのAndroidアプリの開発を担当しています。 ついにGoogle I/O 2018の最終日ですね。 今日はいくつかのセッションの内容とせっかくなのでGoogle I/O全体の様子などをご紹介しようと思います。 まずは出発から! (前回の記事は こちら から) 朝から災難だった・・・ ホテルを出てからWiFiの通信が悪く、なかなかUberを捕まえることができませんでした。ここで既に昨日より10分ほど遅れてしまいました。 なんとか駅まではたどり着きましたが、今日はなぜかシャトルバスもすぐに出発せず…。 現在時刻朝の7時40分。この時点で焦ってきました。 ようやく8時に会場に到着すると、あら、人がいない! やはり最終日だからでしょうか。 結構空いています。 昨日までの朝食は争奪戦でしたが、今日は余裕ですね。 結局時間的に昨日と変わりはありませんでした。 セッションについて 今回は以下3つのセッションに参加しました。 各セッションのポイントについて話をしていきます。 Android Jetpack: manage UI navigation with Navigation Controller TensorFlow Lite for mobile developers Add Firebase to your cross-platform React Native or Flutter app Android Jetpack: manage UI navigation with Navigation Controller www.youtube.com Navigation ビジュアルツール / XMLによるナビゲーショングラフの定義 利用可能なナビゲーションアクション 引数 アニメーション Up動作 Deep links 単一のnavigate()を呼び出してランタイムライブラリーが自動的に処理してくれます。 ... もうFragmentTransactionは入りません!! Navigation Editor 矢印で画面遷移が簡単にできるようになる xmlで紐づけ、画面遷移が簡単にできる ActivityやFragment両方使えます。 凄いところは設定も画面上で見えるようになっています。 あとは、xmlとコードを書くだけです。 Deep Linking Deep Linkには以下のように2つの種類が存在します。 ■Explicit Deep Links Notifications App Shortcuts App Widgets Actions Actions Slices Explicit Deep LinksはNavDeepLinkBuilderを使用してIDによるナビゲーショングラフの特定の目的地へのディープリンクします。 ■Implicit Deep Links Web URLs Custom Scheme URIs Implicit Deep Linksはナビゲーショングラフで「deepLink」を使用します。 1つまたは複数のURIを関連付けます。 <deepLink app:url=“http://www.google.com/.*” /> <deepLink app:url=“http://www.iana.org/domains/{myarg}” /> <deepLink app:url=“http://www.example.com/.*/{id}” android:autoVerify=“true” /> <deepLink app:url=“android-app://androidx.example/detail/{id}” /> Navigationは上記の二つを簡単に処理してくれますので、使いやすくなったと思います。 最後に「navigation.1.0.0-alpha01」は今すぐ利用可能とのことです。 TensorFlow Lite for mobile developers Tensorflow Liteとはモバイルデバイスや組み込みデバイス用のライブラリーとツールを学習する軽量フレームワークのことです。 youtu.be 利用可能なプラットフォーム Android、iOS、Linuxで利用可能 ML Kit TensorFlow Liteをサポートする サポートモデル MoblieNet、InceptionV3、ResNet50、SqueezeNet、DenseNet、InceptionV4、SmartReplyなど MobileNetの量子化バージョン TensorFlow Liteの使い方 モデルを入手 変換 操作(ops)を作成(必要なら) アプリを作成(クライアントAPIを使用) コンバージョン戦略 フリーズしたグラフや保存されたModelを使用し、サポートされていない演算子を避ける 不足している機能のカスタム演算子を作成する TensorFlow Liteロードマップ その他の操作 改善されたツール、ドキュメント、より使いやすく On-deviceトレーニング いつTensorFlow Liteを使うのか TensorFlow Liteはデバイス上でMLモデルを実行するための標準ソリューションになる 現在TensorFlow LiteはTensorFlowオペレーションのサブセットをサポートしている 最近TensorFlow Liteにはちょうど興味があるので、Androidの方でいじってみようと思っています。 色々サポートされるようになって今後楽しみですね! Add Firebase to your cross-platform React Native or Flutter app youtu.be 今回のセッションはFlutterにどうやってFirebaseを追加するかと、なぜFlutterにFirebaseを追加したかの理由に関するセッションです。 FlutterにFirebaseを導入した理由 45.6%のクレームが発生 アプリが強制終了 機能エラー ネットワーク問題 リソースが重い 応答しないアプリ これらを改善するために ユーザーの行動を分析する FirebaseのGoogle Analytics機能を利用 待ち時間を測定する FirebaseのPerformance機能を利用 クラッシュをキャッチする FirebaseのCrashlytics機能を利用 この3つのFirebaseの機能を利用し、問題を解決したようです。 実験 Cloud Messaging Firebase Cloud Messasingを追加するとアプリに対して通知が動作します。 iOS及びAndroidでFlutterの設定が完了すると全てのユーザーに通知を送ることができます。 Remote Config Remote Configを使うとユーザー体験をカスタマイズできます。 なお、アプリを新しくダウンロードしなくてもユーザーのアプリの動作やUIの変更が可能になります。 応用 Remote ConfigのA/Bテストが可能 Cloud MessagingのA/Bテストが可能 FlutterにFirebaseを導入した理由と同じように弊社のLIFULL HOME’SのAndroidアプリには既に上記に紹介されたFirebaseの機能を導入して日々改善など行なっています! 会場全体の様子 会場の雰囲気 会場は常に、熱く盛り上がっています! 会場の野外スペースではサングラスや日焼け止めが必須ですが、参加者はバッジを受け取る際に無料で配布されます。 もちろん前回もお話ししましたが、日陰に入ると冬か!ってくらい寒くなりますので上着も常に持っていた方がいいと思います。 But first, water 日向に出ると日差しが強いので、いつでも水分補給ができるようにお水があちこちに置いてあります。 さらに移動式のウォータークーラーをよく見かけます。この暑さの中、人が直接運搬してくれるのはとても有難かったですね。 ランチ ランチはこういう感じ!のランチBoxがもらえます。 正確ではありませんが、11時から14時の間にランチBoxを配っていた気がします。 三日間ずっとこのようなランチが無料で提供されます。 メイン一つとリンゴ、スナックがいつも用意されています。 飲み物は基本コーラやスプライトですね。 Shoreline Amphitheatre Shoreline AmphitheatreというのはGoogle本社近くの野外イベント会場です。 GoogleのCEO、Sundar Pichai氏がKeynoteに登場する場所です。 この写真は今日のランチを食べるスペースを探している時に撮りました。 ちなみに昨日のコンサートもここで行われました。 セッション セッションとは、Google社員による最新技術の発表会です。 セッションの内容はAndroid・AI・Web・Cloudなどの最新技術のTIPSや、使い方などが披露されます。 もちろんセッションの内容は全て Youtube に公開されます。 なお、参加者が多いため興味あるセッションは事前にWebやGoogle I/Oアプリ(Android、iOS)を利用して予約しておきましょう 。 予約者優先で会場内に入らせてくれます。 Googlerとの意思疎通 Google I/Oの参加メリットとしてはOffice HoursやSandBox、Codelabsで直接Googlerと話せることだと思います。 もちろん英語で会話しますが、私は英語が全然できません!! (猛勉強中です(汗)) でもちょっとしたカタコトの英語や身振り手振り、キーボードタイピングなどでも丁寧に理解するまで対応してくれるのです!! SandBox SandBoxはドーム形のテントで、ジャンルやサービスごとに分かれています。 この中でジャンルごとにGooglerと直接コミュニケーションができるOffice Hoursが用意されています。 Codelabs CodelabsはGoogle I/Oで発表される最新技術を学べ、かつ体験もできる場所です。 Codelabs は一般公開もされているのですが、ここでのメリットとしては開発環境と端末が全て最新であることと、分からないことはすぐにGooglerに質問ができます。 外観は以下のような感じです。 もしノートパソコンを忘れてしまったりしても、デスクトップが用意されているので、ご安心ください。 ちなみに私はノートパソコンの充電器を忘れてしまいましたがお陰様で問題なく体験できました! ドロイド君 会場の中を移動していると様々なドロイド君のオブジェが設置されているので、探しに行くのも一つの楽しみかもしれません。 これで全部でしょうか。 一応発見したドロイド君は全部撮ってみました。 Snacks どこを歩いていてもスナックブースが設置されていて、これも全て無料で提供されています。 WAYMOとAndroid Auto 地球を200回以上回ったという無人自動車WAYMOとAndroid Auto搭載車が展示されています。 車は動きませんが、Android Auto搭載車は運転席に乗ってAndroid Autoを試すことができます。 Community Lounge コミュニティーラウンジでは先日アジア地域のMeet Upがあって各国のアジア人と交流ができたり、全体集合写真も撮りました。 ラウンジにはビリヤードとピンポン、テーブル・フットボールが用意されています。 MEDICAL 時差ボケであまり眠れなかったり、暑寒かったせいか今日体調を崩してしまったので、ちょうど寄ってみました。 細かく診断された後、CETAFENという薬を処方してもらいました。 調べてみると鎮痛剤ですね。 弊社のサポート Google I/Oの参加費負担 弊社ではGoogle I/Oに参加するためにホテル、飛行機代、交通費、チケット代など殆どの費用を負担してくれます。 もちろん最新技術の配信や共有、Google I/Oで取得した技術を業務でどう生かすかというのもありますが、業務だけではなく個人のスキルアップのほかにAndroidエンジニアなら誰もが行きたい!誰よりも早く最先端技術に触れてみたいと思うはずです。 (自分だけでしたらすみません(笑)) Google I/0 2018終了 感想 本日でGoogle I/O 2018が終了しました。 Googleが開催する最大規模の技術イベントだけあって、終始刺激を与えてもらえる雰囲気でした。 参加者のために食べ物や音楽、パーティーやコンサートなど様々な娯楽も提供されました。 始めは緊張していましたが、リラックスできるこの雰囲気のお陰で非常に楽しめました。 今回、多くのセッションとSandBox、Office Hour、Codelabsで新しい技術を最先端で触れたり、Googleと世界各地から集まったITディベロッパー達に直接出会えたりとAndroidエンジニアとしてとても有意義な時間を過ごせたのが一番大きな収穫でした。 社外向け報告会の告知 2017年5月23日(水)に 弊社 株式会社LIFULL 半蔵門オフィス にてGoogle I/Oの報告会を行いますので、是非足を運んでみてください! 以下connpassのページよりお申し込みください。 LIFULL.apk #2 - Re: Google I/O 2018 LT枠も大募集中です。 しかも今回は何と!特別ゲストスピーカーとしてGoogleの【Le Viet Gia Khanh氏】をお招きし、Firebaseアップデートについてお話頂きます!! 皆様のご参加を心よりお持ちしております! 終わりに Google I/O 2018に参加するチャンスをくれた弊社には感謝しています。 発表された技術を生かして弊社のサービスにどう導入して行くか今後楽しみです。 ではでは、Google I/Oの参加記は以上となります。 拙い日本語でしたが、最後まで読んでくださった皆様、ありがとうございました!!
こんにちは! LIFULLのジンジニア(人事+エンジニア)木村です。 告知です! RubyKaigi2018 5/31-6/2仙台で開催される、 皆さんご存知「 RubyKaigi 2018 」をスポンサーで応援させていただくことになりました! LIFULLとしてこのイベントにスポンサーするのは初になりますが、恐れ多くもブースも出させていただくことになっています! ホームズくんステッカーなど配布する予定ですので是非足をお運びください。 「 LIFULL HOME'S 」では、バックエンドのAPIをRubyで開発しており、全エンジニアの7割程度はRubyを書くことができます。 他にも、「 見える!不動産価値 」や「 プライスマップ 」というサービスはRuby on Railsで開発しており、 LIFULLプロダクトにとってRubyはサービスを支える欠かせないものになっています。 会場ではLIFULL Tシャツ身にまとったスタッフもスタンバイしてるので、見つけたらご気軽にお声掛けくだされば嬉しいです! ぜひ一緒にRubyKaigi盛り上げましょー! (仙台のうまいもんも楽しみです) ※5/28追記 RubyKaigi2018の振り返りイベントを緊急開催することになりました! RubyKaigi2018に参加できなかったやRubyKaigi2018について語り合いたい方、奮ってご参加ください!LT枠も大募集しています! 詳細とお申込みは以下のconnpassページです。ご参加お待ちしています! lifull.connpass.com 仲間募集中です Ruby、Railsエンジニア鋭意募集中です!エントリーお待ちしています。 hrmos.co recruit.lifull.com
こんにちは。 デバイスソリューションユニット開発グループの衛藤です。 本日はGoogle I/O 2018の2日目です! 疲れが徐々に溜まってきていますが、毎日新鮮な技術情報により浄化されていくようです! でも肩が痛いです! 今回はAndroidやFirebaseの他にGCPやMachine Learning関連など分野を広げて見てみました。 本日メインで参加したセッションをメインに、レポートをお届けします!! Machine learning and medicine 今年のKeynoteはほぼAIが絡んだ話が多く、以前にも増して身近な存在になってきました。 既にAIの存在は当たり前のものになっているようです。 私もMachine Learningには興味があり、いろいろと勉強しています。 Keynoteでも、医療やヘルスケア分野でAIが活躍しているとのことで、今回はどのように薬剤の分野に応用したかという話でした。 内容は超専門的でかなりハイレベルな内容でした。 専門的にな部分は分かりませんが、共通した話題もあると思い参加をしてみました。 新薬開発の流れ 新薬開発の話し(おそらく・・・)と思われます。 薬の開発は効率が悪く、3.5億ドル以上のコストがかかっている 人間のDNAに含まれる情報をベクトル化し、どの薬が効くのかを学習させる 予測により病気が治りそうな新薬となる分子を発見する ちなみに・・・人間のDNAというのか良く分かりませんが、図にするとこんな感じになっているらしいです(複雑・・・!) このような分野はやはりAIが強いのかもしれません。 つまり・・・ かなり高難度な話題でほぼついていけていません笑 ただ、これまで私が機械学習で取り組んで来たのは 人間の作業を効率化させる というものでした。 今回の話はそれよりももっと進んでおり、 人間でも発見出来ないものを見つける というところが面白かったです。 違う分野ですが、画像認識の世界でも現在は人間のエラー率よりもAIのエラー率の方が低いらしく、確実に人間を超えていってる感じが伝わってきて少し恐ろしくも思います。 Microservices in the Cloud with Kubernetes and Istio Dockerは少しだけ触ったことがありますが、最近話題になっているKubernetesに関しては全く未経験なのですが、参加してみました。 youtu.be マイクロサービス マイクロサービスにより独立した機能を持つと、不要な依存が断ち切れます。 しかし、以下のようにサービスが大きくなってくると非常に複雑な構成となり運用が大変になります。 スケーリングさせると更に複雑に Dockerを使ってPackagingすることで管理が楽になり、環境依存も減ります。 さらに、Kubernetesを導入することでさらにスケーリングやデプロイなどを容易に実現しましょう。 Demo 詳しくは動画のデモを見ていただくのがわかりやすいと思いますが、コマンドの反応が非常に早く、サクサクと動いている印象を受けます。 このデモでは、Istio( https://istio.io/docs/tasks/traffic-management/egress.html )というものも使われており、Loadbarancing等のトラフィックを管理出来るようです。 このあたり全然知らず、解釈が合っているのか若干不安ですが・・・ 大変便利そうではありますが、正直一度自分で触ってみないとなんとも言えないので、こちらについては後日じっくり触ってみたいと思います。(お恥ずかしい・・・) What's new in AR Keynoteで発表されていた、Cloud Anchorsについてのセッションです。 youtu.be セッションのなかで ARは大きなパラダイム・シフトである のようなことを言っていました。 今回発表されたCloud Anchorsは確かにARの世界を大きく進歩させる技術だと感じています。 Cloud Anchors Cloud Anchorsとは、Cloudを通じて複数のユーザー間で同じAR体験ができるようにする仕組みです。 これにより、一人がAR空間で物体を設置した場合、違うユーザーのデバイスの中でも同じ物体が 同じ位置・向き で共有されるようになります。 ユースケースとしては、教育現場やARゲームなどで大きく活躍しそうです。 Augmented Images Augmented Imagesは二次元の画像から3次元のAR空間を作成するものです。 詳しくは動画のなかにデモが上がっていますが、商品のパッケージの絵から立体的なアニメーションが出現したりと、見ていて楽しいものでした。 ユースケースとしては、こちらも教育現場や商品プロモーション等に最適なようです。 ARCore これらの技術はARCoreを使うことで実現できます。 ARCore - Google Developer | ARCore | Google Developers クロスプラットフォームのため、Android/iOSで実現出来ます。かなり実用的なのではないでしょうか。 Android Jetpack: what's new in Architecture Components youtu.be Android Jetpackは、Android開発をより高速にするために用意された様々なライブラリのセットです。 これまでのSupport LibraryやArchitecture Components、UIなどのライブラリを androdx.xxx のような形でgradleに記載します。 現在までに 26回のリリースを行う 700を超える機能リクエスト その辺りを一度整理して出てきたのがAndroid Jetpackです。 developer.android.com 以前までは、複雑なLifecycle等を理解して正しく使う必要があったのですが、開発を容易に加速させる目的で様々な便利なライブラリが出ています。 昨年既に発表があったものも含まれますが、代表的なものとして LiveData Databinding InstantAppで使うにはv2を使う必要があり Room ORマッパ Paging ページングを容易に実装 Navigation 面倒なFragmentTransactionはもういらない GUIで直感的に操作 WorkManager Job Scheduler / Firebase JobDispatcher / Alarmなど、バックグラウンド処理を管理してくれる beginWith then の書き方により待ち合わせ処理も容易に 個人的にはNavigationでFragmentTransactionが不要になるのがありがたいですね! また、Deeplink起動の場合にFragmentをBackstackに積む操作も出来るためかなり開発が捗りそうです。 Pick the right tools to grow your app on Google Cloud Platform youtu.be 最近は弊社のプロジェクトでもGCPを使うことが多くなってきました。 GCPには様々なツールが用意されており、どんな場合に何を使えばよいのか迷ってしまいます。 API作るときにやりたくないこと Process Management Security Patches Upgrades Scaling Back Ups Disaster Recovery Provision Database Replication たしかに、日々の運用からは解放されたいですよね。 出ましたGAE!最近非常にお世話になっております。 Full Managedなので比較的楽にサーバー構築できて非常に便利です。 Emailを送る機能がある場合は、sendgrid( https://sendgrid.com/ )が良いらしいです。 このあたりもNodeはライブラリが充実していて良いですよね。 Kubernetes 最近よく聞くKubernetesですが、DockerサービスをOrchestrate、Scalingを行ってくれるサービスのようです。 なんと読めば良いのか分かりませんでしたが、聞いてる限りだと「キューバニーティーズ」みたいに聞こえます。 deployment.ymlというファイルに設定を記述してきます。 詳細は公式ドキュメントをご参照ください。 https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Demo 詳しくは動画内のDemoを見ていただくのが早いと思いますが、スケーリングやデプロイなど非常に高速にコマンド実行が出来ています。 こちらについても同様に、一度実際に触り倒して感覚を見てみたいと思います。 What's new with the Google Assistant SDK for devices youtu.be Assistant SDK for Devicesの紹介です。 Neural Beamforming 少し前にOfficial Blogで紹介がされていましたが、Neural Beamformingという技術により複数のマイクで正確性をあげることが出来るというものです。 https://india.googleblog.com/2018/04/google-home-and-google-home-mini.html 人間の耳が2つあるように、マイクを2つ設置することでノイズが混じっていたとしても正確に音声を拾うことができるそうです。 Broadcasting 動画の25分前後のところで説明がされています。 例えば、自宅の各部屋にAssistant搭載デバイスを設置している場合、リビングから「夕食よ!」をそれぞれのデバイスにBroadcastすることで、 全部の部屋にメッセージを伝えることが出来るという技術です。 3階建ての家の各部屋にあると便利ですね! Custom Device Actions デモにもありますが、入力音声をトリガーとしてAssistant側にIntentを飛ばすことで、色を変えたり、ロボットの向きを変えたりを実現しています。 入力音声の一部をパラメータとして渡すことで実現出来るようで、実装自体は比較的単純にできそうです。 おそらく入力の想定を設計するのが一番大変なのでは、と感じます。 動画の最後の方に、ロボットにダンスを躍らせるパフォーマンスがありますので、是非見て頂ければと思います。 このロボット開発して遊ぶの楽しそうですね! Android Jetpack: what’s new in Android Support Library 先程あげた、Android JetpackのSupportLibraryに関するセッションです。 youtu.be Versioningの変更 サポートライブラリに関しては、 support-v4 support-v7 support-v13 などのライブラリがありますが、対象のSDKバージョンはAPI Level 14以降でしか使えないため混乱を招くバージョニングになっていました。 今回からAndroidX(Android Extension)に変更となり、 implementation 'androidx.{feature}.@' のようのように変更となります。 わかりやすくなりました。 なお、このタイミングでバージョンは1.0.0にリセットされるようです。 またセマンティック・バージョニングも導入するとのことでした。 Migrating 現在のプロジェクトを全てandroidxに変えるのは大変な作業になりそうです。 AndroidStudio 3.2 Canary14から、一括で変換出来るオプションがあるのでそちらを利用するのが良さそうです。 ただ、Canary14はバグがあるとのことなので安定するまで待ったほうが良いとのこと。 詳しくは動画をご参照ください。 新しいAPI 今回追加になった新しいAPIもあります。 RecyclerView Selection Itemの選択状態を簡単に実装出来るように RecyclerView ListAdapter シンプルなAdapter。簡単なリストならすぐに実装可能 WebKit CustomTabsはBrowserに変更 Browser Actionsでリンク押した際の選択オプション表示が可能 HeifWrite Heifフォーマットのサポート Slice インタラクティブな検索結果表示が可能 MaterialComponents Materialの新しいButton等が追加になりました。 今回の変更はかなり大きなものになると思いますが、わかりやすさや導入がしやすそうで早く試してみたいです! ML Kit: Machine Learning SDK for mobile developers ML KitはFirebase上で利用可能なMachine Learning SDKです。 個人的に一番好きなセッションでした。 youtu.be 簡単にMLアプリケーションを 学習済みのモデルを、サーバー上にホスティングすることなくデバイス上で動作させることが出来るようです。(一部はCloud上でも可能) また、独自のTensorFlow LiteモデルもFirebaseにアップロードさせるだけで簡単に利用できるようになります。 現在のβ版では以下のようなモデルが利用可能です。 Text recognition Face detection Barcode scanning Image labeling Landmark recognition Custom model inference RemoteConfigでA/Bテストも さすがFirebaseに乗っかっているだけあって、RemoteConfigと組み合わせることが出来ます。 ユースケースとしては異なるモデル名をRemoteConfigで指定して動的に予測モデルを変更する、 または、A/B Testingによりモデル別のConversionを測ることも出来ます。 今後出てくるもの 今後のロードマップに以下のものが含まれています。 Smart Reply Gmail等で導入されていますが、リプライの予測提案APIが利用可能に Model Compression Service TensorFlowで構築したモデルをML Kitに読み込ませることでTensorFlow Lite用のモデルに圧縮・変換を行ってくれる 特にCompression Serviceについては、800Mサイズ/Accuracy 91.8%のものが860K/92.8%のTensorFlow Liteモデルになった例があがっていました。 最適化処理により精度は逆に良くなっているようです。これが使えれば面倒な変換作業や最適化作業を気にすることなくMachine Learningの導入ができそうです。 Beyond single page apps: alternative architectures for your PWA youtu.be PWA、非常に興味があります。 このセッションでは、PWAでSingle Page Applicationを作るというものでした。 はじめは設計の話から導入が始まりました。 とあるWebアプリがあり、画面遷移後に同じページに戻ることを考える。 そんな場合、PWAは解決する1つの可能性ではないでしょうか。 Multi-Page Application と PWA MPAは従来から存在するWebアプリです。 DOMの再利用がなく、ページ全体のリフレッシュが必要になってしまう。 それに対しPWAは「FIRE」という考え方があり、以下の頭文字から成り立ちます。 Fast Integrated Reliable Engaging 初期読み込みは少ないネットワーク量で、オフラインでも利用可能、高速に動作するWebアプリケーションです。 Service Workers + Cache Service Workersはアプリケーションのバックグラウンドで動作するスクリプトです。 一度通信したものはローカルにCacheし、Cacheにない場合のみ通信を行うことで高速化を図ります。 余計な通信を発生させないよう、Cache出来るものはやっておくと良いようです。 SPAを作る SPAを実現するために、Express Styleな実装が紹介されていました。 Expressのように、Routingを定義するためroute.mjsというファイルにパスを記載しています。 見ていると、本当にExpressで開発をしているかのような間隔に陥ります。 .mjsでhtmlテンプレート化し、titleタグ等を動的に生成することでテンプレートの役割を実現していました。 動画で使われていたライブラリ オフライン処理 Workbox( https://developers.google.com/web/tools/workbox/ ) APIかCacheか workbox.streams( https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.streams ) 最後の締めとして、「Don't cache full HTML」と言っています。 Cacheは便利だけど不要なものまでやらないで、ということでしょうか。 とりあえず、PWAで何か作ってみたいですね。 お土産(Android Things Developer Kit) 今年のおみやげの中にAndroid Things Develper Kitがありますが、こちらはタダで貰えるわけではありません! 10問のクイズに答えた人が受け取れます。 会場内を地図のヒントにしたがい情報を集め、お土産ゲットしました! これでしばらく遊んでみたいですね。 例年通り普通のお土産もありました、Google Home Miniです!(昨年は普通のGoogle Homeもらった&技適問題で起動出来ていない・・・) Concert 2日目無事に終わり、締めはライブです! 美味しいビールを飲みながら良い音楽で一休み。Google I/Oは毎年After Hoursも妥協がないですね! Office Hours 明日の予定ですが、本国のGoogle Expertと直接話せる貴重な機会です。 緊張しますが、悩んでいる事を全部伝えてみようと思っています! Sandbox 今年も様々な展示がされていました! いつ行っても賑わっています。 絵を書くロボット TPU v3の実物 Fireabase TestLab サーバーが動く様子 様々な最新技術に触れられるGoogle I/Oもついに明日が最終日です!! 悔いのないように楽しもうと思います! Google I/O Day Threeへと続く...
こんにちは。 デバイスソリューションユニット開発グループの崔です。 弊社でLIFULL HOME’SのAndroidアプリの開発を担当しています。 ついにGoogle I/O 2018が開幕しました。 Google I/Oはなんと言ってもKeynoteが目玉でしょう。 今日はKeynote内容をお届けしますので、是非楽しんでください! 前回と引き続き、今年は同じ開発部署の衛藤と交代で書いて行きます。 前回の記事は こちら をご覧ください。 I/O会場へ シャトルバス 会場まではシャトルバスが出ているので、我々は朝8時にホテルを出て、最寄りのMountain View駅に向かいました。 少し出遅れ感があったので、朝ご飯は会場で食べることにしました。 駅に着くと分かりやすく看板を持っている方がいるので、すぐバスに乗れます。 シャトルバスはよくアメリカ映画に出てくる小さめのスクールバスに似ていますが、少し高級車感もあります。 会場前 I/Oの会場の前に到着すると既に人の行列ができています。 この行列を抜けた後に荷物の検査を済ますといよいよ入場ができます。 会場の様子 中に入ると朝食の受け取り場は人の行列ができているので、我々は急いで朝ご飯を済ませました。  ベーグルやコーヒーなどが無料で提供されていますが、遅れたせいかベーグルは残りわずかでした。(泣) Keynote 開演場は世界各地から7千人以上が集まり、もの凄い熱気を感じます。 あちこちからうぉぉぉ〜の歓声が響き渡ります! ステージではモバイルでの繋がりを通して世界中からDJや様々な人が端末を動かして楽しむゲーム等で盛り上がっています。 私も飛行機を飛ばしてレースをするゲームに参加しましたが、何故か決まったようにブルーチームしか勝利しなかったですね(笑)  盛り上がっている最中にいつものようにカウントダウンが始まり、GoogleのSundar Pichai CEOが登場します! 今年のKeynoteはさらに進化したAIを中心とした内容でした。 それでは、今年のGoogle I/O 2018の重要な発表を以下にまとめました。 時間を節約する Gmailの新機能「Smart Compose」 Gmailの新機能「Smart Compose」Google AIによってメールコンテンツを理解し、素早く効率的に作成できるよう、文章を提案してくれる機能です。 Google Photo Google Photoを使ってAIにより白黒写真をワンクリックでカラー写真に加工してくれる機能が追加される予定です。 また書類写真をGoogle Photoに保存すれば自動でPDFに保存してくれます。 Google Assistant Google Assistantはさらに視覚的に、自然に会話できるようになります。 音声の種類も六つ追加される予定で、毎回「Hey Google」で話しかけなくてもGoogle Assistantが使えるようになります。 Google Duplex 今日の一番の驚きです!まず以下の動画をみてください。 New Google AI Can Have Real Life Conversations With Strangers 美容室に予約をする会話ですが、まるで人間のように自然な会話ができています。 Google MapにAR機能追加 Google MapにARナビゲーション機能が追加されました。 カメラをかざすだけで画面上に情報が表示されるようになります。 AIによって進化したGoogle News Introducing the new Google News ネット上には数多い記事がある中で、AIによってユーザーの好みに合わせた記事を提案してくれるようになりました。 ユーザーの行動を予測するAndroid P 次回モバイルOS「Android P」と共に開発者向けの「Android P Beta」が本日公開されました。 一般向けは今年の秋ぐらいに正式に配信される予定です。 新しい機能について、以下のように少しまとめました。 Adaptive Battery Image : google AIが必要なアプリを分析して、アプリごとに電力を振り分ける機能です。 結果、CPUの使用率が約30%も減少されるとのことです。 Adaptive Brightness 機械学習を利用して、周囲の明るさに合わせて画面の輝度を調整する機能です。 App Actions Image : google ユーザーの行動を予測して次にユーザーが行いそうな操作を画面に表示する機能です。例えばユーザーがデバイスにイヤホンを刺すと、音楽アプリのSpotifyのプレイリストを提案するなど、ユーザーの行動を予測してサービスを提供します。 App Actionsはランチャー、スマートテキスト選択、Play Store、AssistantやGoogle検索アプリなどAndroid全体で活用されます。 Slices Image : google 検索した内容に対して、各アプリの関連した情報をAssistant検索結果に表示してアクセス可能な機能です。 例えば、Google検索で「Lyft」を検索すると配車サービスLyftの料金と時間などをSlicesと呼ばれる機能から情報を表示してくれます。 もっと詳しい情報は下記の公式ブログをご覧ください。 www.blog.google Smart Display Google Home Smart Display Google Homeは7月から発売される予定です。 既存のGoogle Homeと比べるとビデオ通話やYoutubeなどが見れるようになり、より便利になりました。 その他 ML KitやMaterial Theming、ARCoreなど、魅力的なものが沢山紹介されました! けれど、全てを書くには時間が足りず、また後日改めてご紹介できればなと思います。 おまけ 暑い、寒い!! 最高気温23°、最低気温13°で東京とたいして気温は変わらないのに日陰は凄く寒い、そして日向は燃えるような暑い天気でした。 我々は日陰で震えながら寒い!寒い!と連呼。 そんな時、持参していたウルトラライトダウンが大活躍。あったかい~  After Hours 夜7時から会場でパーティーが開かれ、ちょうど日本で知り合った方々と合流ができました! 1日の疲れを癒してくれるビール、食べ物、DJの演奏、ダンスをする方も! 楽しく有益な1日でした。 Google I/O 2018 Day Twoへと続く www.lifull.blog
こんにちは。 デバイスソリューションユニット開発グループでAndroid開発をしている衛藤です。 私は今年で2回目のGoogle I/O参戦!!どんな発表がされるのか楽しみです! 個人的にはAndroid以外にも視野を広げてGCPやMachine Learning系のセッションも聞いてみようと思っています。 今年は同じくI/Oに参戦している崔と交代でブログをお届けしますのでお楽しみに! 成田空港〜San Jose 5/7、東京の朝はどんよりとした曇り空です。午後から雨との予報を受けて早めに成田空港へGO! なんとか雨を避けて到着、出国ゲートをくぐったあたりでザーっと大雨に。(飛行機大丈夫だろうか・・・) 雨に振られる787 機内にて 大雨の中、無事に離陸しました。ここまで来ればあとは寝るだけ・・・の予定なのですが、 前回は全く寝ることが出来ずに徹夜状態で迎えたSan Joseの朝、今年も同じく一睡も出来ませんでした。 飛行機で眠れる方法教えてください。お願いします。と考えながらSan Jose空港に到着!いや〜揺れましたね! イミグレ イミグレも昨年同様に30分〜1時間程度の時間で問題なく入国することが出来ました。 そしてさすがカリフォルニア!外に出た途端日差しが痛い! 夜になると急に冷えるので、前回の反省を活かしウルトラライトダウンを持ってきました。 ホテルチェックインで若干問題が・・・ 今回は二人なので少し広めのホテルを予約しました。 しかし普通のホテルと違い、受付がないアパートタイプのホテルでした。鍵を自分でどこかで入手する必要があるという高難易度なホテルです。 巨大なダンジョンのようなホテルを眠そうな二人がさまよい続け、ホテルに電話したり通りすがりの人に訪ねようやく鍵を入手しました。 ※ 地下駐車場奥の金網にたくさん南京錠が取り付けられており、それを開けると部屋の鍵が手に入る仕組み 今年のホテルはこんな感じで良い雰囲気です!ダンジョンめぐり頑張った甲斐があります。 Google I/O バッジピックアップ チェックイン後、Uberを利用しI/Oの会場にバッジピックアップに向かいました。 例年と同様に、バッジピックアップ順にKeynoteの席エリアが確定されます。 今年はチェックインで時間を取られたものの、ど真ん中エリアに座ることができたのでひとまず良かったです。 バッジピックアップで貰える内容は以下の写真の通りで、例年と同じですね。 Googleチャリで爆走 Google敷地内にはGoogleカラーの自転車がたくさんあり、勝手に乗り放題です。 しかもアメリカサイズ、サドルを一番低くしてもつま先立ち! そして、誰でも勝手に乗れるため、自転車を後で乗ろうと止めていると勝手に持っていかれます。(いかれました) 眠さでテンションがマックスになったのか、二人で自転車でGoogle敷地内を駆け抜けました。 爆走する私 そのままGoogle Merchandise Storeに行き、大量にお土産を購入。1日目のミッションはクリアです。 大量のお土産 Pre Party参加 Google I/Oの前日は様々な所で前夜パーティが開催されます。 我々もとあるパーティに参加させて頂き、美味しいビールとともにエンジニアとの交流を楽しみました! さて、明日からが本番! いよいよ Google I/O 2018 の開幕です! 続くブログ投稿をお楽しみに☆ Google I/O Day Oneへと続く・・・ www.lifull.blog
こんにちは。 デバイスソリューションユニット開発グループ、韓国人の崔です。 弊社で LIFULL HOME'SのAndroidアプリ の開発を担当しています。 いよいよ5月8日〜5月10日Google I/O 2018が開催されます。 Google I/Oは世界最高かつ最大規模の技術発信イベントです。 現地には世界中から7千人以上のディベロッパー達が集まる中、私と同じ開発グループの衛藤と2名で参加します。 今回初参加ですが、すごくワクワクしていて楽しみです!! 昨年に続きまして 今年も体験したことを記録として残そうと思い、リアルタイムで現地の様子や感想を報告したいと思います。 拙い日本語ではありますが、見て下さっている皆様に出来るだけ分かりやすく書いていくので是非ご覧ください〜! Google I/Oとは? events.google.com Google I/OはGoogleが2008年から毎年USのサンフランシスコで開催しているディベロッパーカンファレンスです。 Googleによる最新技術や新製品・サービスの発表が行われています。 Google I/Oの「I」と「O」は二つの意味があります。 「 I nput O utput」と「 I nnovation in the O pen」の意味合いを持っています。 毎年3日間開催され、Googleプラットフォームを利用する世界中のディベロッパー達が集まり、技術を共有します。 朝から晩までGoogleのサービスを具体化したディベロッパーのアイディアを発表するセッションで進みます。 今年の見どころとして一つ紹介 今年は何と言ってもFlutterが盛り上がっています。 昨年1セッションだったのが今年は6セッションまで増えました!! Dart言語を使ってモバイルアプリ(iOS/Android)を共通コードで開発ができるフレームワークです。 とりあえず、どういうものか動画をみてみましょう。 Introducing Flutter Google I/0 2018開催発表 You nailed it. #io18 will be held May 8-10 @ Shoreline Amphitheatre! Apply to purchase a ticket from 2/22, 10AM PST to 2/27, 5PM PST. pic.twitter.com/yfRC949fee — Google Developers (@googledevs) 2018年1月24日 ちなみに今年は2018年2月22日にGoogle I/Oの開催告知があったので、早速抽選に応募しました。 抽選に当選 2018年3月1日の朝、招待状が届きました。 この時点で当選か落選か決まります。 メールを開くまでドキドキです(笑) そして見事に当選!! 準備編 今回は事前準備編と題して、来年Google I/Oに参加する方に向けて、どんな準備をすれば良いか書いて行きます。 昨年弊社の衛藤が書いた記事にも 準備編 がありますので、よろしければご覧ください。 飛行機・ホテル 世界中から何千人もがGoogle I/Oに参加するため、会場の近くは大変混み合います。 当選したら何より先に飛行機とホテルを予約しましょう。 私たちは expedia で航空券とホテルを確保しました。 会場に行けば朝食・昼食は出るので、食事なしのホテルでも構わないと思います。 パスポート USに入国するにはパスポートの期限が3ヶ月ぐらいの余裕を持ったほうがいいので、事前に確認しておきましょう。 初めての申請をする方は こちら を確認してください。 ESTA USに滞在するにはビザの取得が必要ない代わりにESTAが絶対!必要です。 ESTA は忘れがちなので、是非申請してプリントしておきましょう。 日本語も対応されているので、すごく簡単です。 ちなみに申請してから2日かかりました! 現地SIM or モバイルルータ 会場や施設内は基本的にWi-FIがありますが、緊急時に必要になることがあると思うので、 こちら を持って行きます。 おすすめアプリ Google I/O 2018アプリ Googleの公式アプリ 当日のスケジュールやセッションなどが見られる Uber & Lyft ボタンをタップして配車の依頼をするだけで目的地まで運んでくれるすごく便利なアプリ Google翻訳 翻訳言語をダウンロードしておくとオフラインでも翻訳可能 これがあると一安心! その他 ウルトラライトダウン 現金 & クレジットカード 常備薬 海外保険 モバイルバッテリー 日焼け止め サングラス スリッパ(機内用) USB充電器 携帯トイレウォシュレット USも日本と同じ110Vの電圧なので、そのまま家電製品が使えるはずです。 やっておくと良いこと オフラインコミュニティ参加 提供元 : Timers Inc. やっぱり日本人の知り合いもほしくなりますよね! 東京の参加者同士のMeetupも開催されています。 初めての参加者も多いため、是非参加して情報交換や交流しましょう! 今回はTimersさんのMeetupに参加しました。 USやGoogle I/Oが初参加者にとっては貴重で有益な情報を聞いたり、知り合いも増えて現地でご飯のお誘いなどもありました。 その他のコミュニティ GoogleのSNSのGoogle+にもI/O関連のコミュニティが存在します。 Meeupや会場のスケージュール、様々の情報共有が行われています。 Google+の Google I/O GDC Japan Google+の Google I/O 周辺イベントの参加 毎年Google I/Oと共に、I/Oの前日に色んな会社からイベントが開催されていますので、探してみるのも良いでしょう。 Intel's Google I/O Day Zero Party : Intel主催 Netflix I/O Party : Netflix主催 今回は上記の2社ですごく悩んでいます。 とりあえず楽しい悩みなので、2社とも申請しておきました。(笑) 社外向け報告会の告知 2017年5月23日(水)に 弊社 株式会社LIFULL 半蔵門オフィス にてGoogle I/Oの報告会を行いますので、是非足を運んでみてください! 以下connpassのページよりお申し込みください。 LIFULL.apk #2 - Re: Google I/O 2018 LT枠も大募集中です。 しかも今回は何と!Googleの特別ゲストスピーカーとして【Le Viet Gia Khanh氏】をお招きし、Firebaseアップデートについてお話頂きます!! 皆様の参加を心よりお持ちしております! Google I/O DAY ZEROへ続く〜♪ www.lifull.blog
こんにちは。 LIFULL HOME'S事業本部 不動産投資事業部の大塚と申します。普段はLIFULL HOME'S不動産投資というサイトの開発を主な業務として担当しております。 3/19(金)〜21(日)に開催されたScalaMatsuri 2018に参加してきましたので、今回はそのレポートをお届けしたいと思います。 ScalaMatsuriとは 毎年春先に開催されているアジアで最大級を誇るScalaに関するカンファレンスです。例年は土日の2日間で開催されることが多いようですが、今年は金曜日に「Training Day」(Scala言語の魅力を伝えるコンセプトの元、未経験の方でも参加しやすいプログラム)が設けられた計3日間での開催でした。 今回私はTraining Dayと、カンファレンス初日に参加してきましたので、それぞれで特に印象に残ったセッションについてお伝えさせていただきます。 03/19:Training Day Scalaに関する神話と真実 Scalaに関してよく言われる先入観をQ&A形式で説明していく発表で、未経験者にとっても非常にわかりやすい内容になっていました。 内容を簡潔にまとめますと、 Scalaは本番運用する上でも十分実用的であり、すでに世界中の様々な企業で使われています 適切な資料を使って学んでいけばそこまで学習コストもかかりません。関数型プログラミングの知識もそこまで高度なものは求められません Javaに比べて実行速度が遅いということもありません。ただし、関数型スタイルのプログラミングを多用すると若干遅くなる傾向はあります コンパイル速度は確かに遅いです。しかし、大幅に和らげる方法がいくつかあります といったことが述べられていました。 Scalaに関するよくある誤解(一部事実)を丁寧に解説していただき、未経験者にとっては一歩を踏み出すのに背中を押してもらえるような発表でした。 逆引き!Scala x ビッグデータ 「ビッグデータを使って卓球部を強くする」というストーリー仕立てのセッションでした。(発表資料は こちら ) 発表者二人の掛け合いが夫婦漫才のようで、ところどころで会場に笑いが起きていてとても楽しい発表でした。 内容を簡潔にまとめますと、 卓球台上のボールをトラッキングするシステムのデータ分析システムの構築を事例としてビッグデータの概略を説明 ビッグデータの処理は「収集」→「変換」→「統合」→「分析」→「活用」という流れを組む Scalaは参照等価なコードが書きやすいこととJavaの資産を流用できる点から、ビッグデータを解析するシステムに向いている 分散メッセージングシステムとしてのApache Kafkaや、ストリームデータ処理エンジンとしてApache Sparkなどが有名 といったことが述べられていました。 近年ではスポーツの世界でもビッグデータの活用が進んでいるということもあり、その有用性が一つのストーリーとして非常にわかりやすかったです。 また、セッションの最後にはビッグデータ処理のデモも実演していたのですが、ローカルマシンで大量データ処理を行っているため手短に終わらせないとメモリが溢れて落ちる、という謎の緊張感に包まれていたのも面白かったです。(笑) 03/20:カンファレンス形式 Scalaでの部分的な関数型プログラミング システムをすべて純粋関数(副作用のない関数)のみで構築しきるのは大変なので、部分的に関数型プログラミングのスタイルを取り入れるという話でした。(発表資料は こちら ) 部分的に関数がスタイルのプログラミングを適用していく例としてFIzzBuzzを出力するメソッドを例に取りながらわかりやすく説明されていました。 適用していく戦略として、 避けられない作用(作用層)とそうでない部分(純粋層)を切り分ける さらに依存関係は作用層→純粋層の一方向のみとする といった形でリファクタリングを進めていきます。 こうすることで抽出された純粋層のコードがそのシステムの核となるビジネスロジックと認識できるようになるとのことです。 Haskell + Scala ハイブリッド開発大作戦 HaskellをJVM上で動かす言語実装である「Eta」に関するセッションです。発表資料は こちら JVMで動くからこそJava/Scalaと連携することも可能となりますが、そのノウハウとハマリポイントについて発表されていました。 内容が非常に充実していて上手く要約する自信がありませんので、ぜひリンク先の資料をご覧ください。 特にJavaのようなオブジェクト指向言語における「可変状態」や「継承」といった機能を純粋関数型言語であるHaskell上でどのようにエミュレートしているかの説明は非常に高度で多くの学びがありました。 なお、Scala内にEtaを埋め込むこともEtaからJava/Scalaを呼び出すことも物理的には可能だそうですが、後者に比べて前者の場合は非常に多くの手間がかかるらしく、各言語の依存関係はScala -> Eta -> Java のようにするのが良いそうです。 会場の風景 ここからは当日の会場風景をご紹介いたします。 エントランスの様子。「Matsuri」というだけあって、赤提灯の和のテイストがイカしてますね。 会場内ではコーヒーやお菓子のサービスがフリーで提供されていました。 こういうちょっとしたサービスが嬉しいですね。 アンカンファレンスでの発表内容を投票するボードです。 付箋で貼られたタイトルに対して、聞きたいと思ったものにシールを貼っていき、当日の発表者を決めるスタイルでした。 個人的には「フルコンパイルに1000sかかるプロジェクトを分割してマイクロサービス化している途中の話」という内容が気になりました。 まとめ 今年初めて参加しましたが、セッション会場の熱気がすごく、また内容もどれも濃密で一エンジニアとして大変刺激を受けました。 ぜひ来年はScala力をあげて、アンカンファレンスなど発表する側になれるよう頑張りたいと思いました。 以上でレポートを終わります。 宣伝 株式会社LIFULLでは、エンジニア各職種の中途採用募集中です! エントリーお待ちしています。 【エンジニア 募集職種一覧】 | 株式会社LIFULL
半年ぶりの登場 の技術開発部の相原です。 LIFULL大学という社内制度でDockerゼミの講師を務めたのでそのことについて書きます。 LIFULL大学とは LIFULL大学とは弊社が実施している日本一働きたい会社に向けた取り組みの一つです。 LIFULL大学 従業員一人ひとりの能力開発を目的に、「必須プログラム」「選択プログラム」「選抜プログラム」からなるLIFULL大学(社内大学)を開校しています。 「選択プログラム」では、社長が主催する経営塾、プロジェクトマネジメント、レコメンデーション技術、ロジカルシンキング、英会話等、社員は自身が受講したいゼミを選択して受講できます。ほとんどのゼミで社員が講師を務め、職種や部門を越えてお互いに教え合う文化の醸成に繋がっています。 「選抜プログラム」は、次世代リーダー育成プログラムです。トップセールス、クリエイティブアワード、ベストマネジャー、役員推薦等、次世代経営者候補を選抜した海外研修等を実施しています。 引用: 日本一働きたい会社 社内公募によってその分野に対する専門性を持つ有志の社員が講師となり、受講した社員に対して講義を行います。 私は今年はDockerゼミの他にハイパフォーマンスフロントエンドゼミと称してフロントエンドのチューニングやServiceWorker, WebAssembly周りの講師をしました。 技術系では他にもMOOCで機械学習のコースを受講するといった趣旨のゼミがあったりと毎年様々なゼミが開講されています。 ちなみにLIFULL大学のページは同じく社内制度の クリエイターの日にて開発されたり と、社員が協力して作り上げている制度となります。 クリエイターの日 変化の激しいICT分野のマーケティング能力、技術開発能力を高め、イノベーションを創造するため、通常業務の枠を離れて、新たな技術や手法に取り組む機会を設けています。希望するクリエイター(エンジニア、デザイナー、プランナー、マーケター、プロモーター)は、個人またはチームで特設プロジェクトの提案を行い、承認されたプロジェクトについて業務時間の10%を使い、合宿形式で研究・開発を行います。 クリエイターの日サイト: http://www.creators.LIFULL.com/ Dockerゼミ 今回のDockerゼミは1コマ90分で2回開催し、1回目ではDockerの簡単な説明とハンズオン・2回目ではもう少し踏み込んでApplication Containerの仕組みの解説や本番導入での勘所、社内ということもあるので社内のどういった問題が解決されるのか、導入に向けて何が障害になっているのかということについて話しました。 社内向けに作った資料ということもあり全ては公開できませんが、今回は資料の一部を公開してゼミの空気感をお伝えできたらと思います。 中でもIstioをはじめとするサービスメッシュによるmicroservices構想やSpinnakerによるDeployment Pipelineは受講者の反応もよく、本番導入に対してもポジティブなイメージを持ってもらえたと思います。 最後に いかがでしたでしょうか、LIFULLではこのような雰囲気で活発に社内での勉強会が開催されています。 歯抜けな資料で全体感が掴みづらかったと思いますので続きはLIFULL大学でお会いしましょう。 LIFULLではエンジニアを募集しています。 【エンジニア 募集職種一覧】 | 株式会社LIFULL
こんにちは! LIFULL HOME'S事業本部 QAグループの佐藤です。 今回初めて、3月7,8日の2日にわたり開催されたJaSST’18 Tokyoへ参加させて頂きました。 JaSSTソフトウェアテストシンポジウム-JaSST'18 Tokyo 本記事では2日目の講演内容についてご紹介させて頂きます。 How to identify test flakiness in your test result data テスト結果からテストの不安定性(test flakiness) を読み解く 登壇者:John Micco 氏 (Google) オープンソースのデータセットとBigQueryを用いて、実際にSQL文を実行し、 テストデータの分析を行う手法について具体的なレクチャーを頂きました。 前半はテスト結果の分析、後半はGitリポジトリに蓄積されたデータの分析でした。 本チュートリアル用に作成されたリポジトリ github.com オープンソースのデータセット 感想 弊社QAグループにおいても、Seleniumを用いて継続的にE2E自動テストを実行し、 テスト結果をデータベースに格納し、ダッシュボードにおいて可視化と分析を行っております。 Flakyなテストについては、弊社の自動テスト実行環境においても、度々発生しており、 再実行回数を増やすことで対応しているといった状況です。 もちろんテスト結果の量においても、分析においてもまだまだGoogleのレベルに達しておりません。 今回のBigQueryにおける分析、Gitのコミットデータの分析はシンプルですぐに導入でき実用的なので、 メトリクス計測の手段のひとつとして検討していきたいと思います。 私が経験したソフトウェアテストの変遷 登壇者:柴田 芳樹 氏 (ソラミツ) テスト駆動開発と継続的インテグレーションの技術的変遷について、 具体例として柴田さんの経験を交えての講演を頂きました。 気になった点を要約すると、 1990年代までは結果を目視で確認していたが、2000年以降はテストファースト・テスト駆動開発による自動化されたテスト テストファースト 歴史的にフィードバックループは短くしてきた 最短はいま書いたコードを見直すこと テストファーストだとフィードバックループが短くなり、いま書いたコードを見直すことができる デバッグしているという感覚から、ひたすら実装しているという感覚へ 自動化されたテストは、いつでも何度でも実行可能なので、ソフトウェアの資産になる 手で行ったテストはもう一度時間をかけて目視で確認する必要があるので資産ではない 1990年代までの夜間ビルドから、2000年以降は継続的インテグレーションへ 昔はそれぞれ開発していて、ある程度できたら集める、というビックバン・インテグレーションだった 失敗する継続的インテグレーション マネージャーが関心を払っていないため、常にビルドに失敗している 静的解析ツールの警告が高度すぎて警告の意味がわからない 手動の単体テストを行う前にレビュー テストが終わった後にレビューをすると名前の変更などで手戻りが発生する マルチスレッドプログラミングのテストは難しい 間違っていても動いてしまうことがあるため、動かす前に知識・経験を持った人がきちんとしたレビューをする 100回動作しても保証されないので、自動テストが必須 発生した障害をきちんと記録して分析するが、どう分析していいかわからないので、専門家に相談していた Flakyな部分がある 例えば、3ヶ月前の変更部分がたまたま特定のマシンで露見する 継続的インテグレーションや自動テストを実践することが当たり前で、むしろ実践していないことが「弱み」になる QAは開発プロセス全体を通して深く関与しなくてはならない まとめ テスト駆動開発と継続的インテグレーションは必須 開発者とQAは開発の早い段階からソフトウェアの品質を作り込むために協業すべき時代となっている 感想 開発者とQAは開発初期から協業するべきということは本当にその通りだと思います。 テスト駆動開発と継続的インテグレーションの導入という点でも、テスト全体のサポート(弊社ではテスト計画の作成やレビューなど)においても、 初期の段階からQAチームなどのノウハウを持っているチームがサポートできる状態になっていることで、ソフトウェアの品質を作り込むことができるかと思います。 当然、人的リソースの問題などはありますが、協業を円滑に進めるための仕組み作りも必要かと思いました。 総評 ソフトウェアテストのカンファレンスには初めて参加させて頂きましたが、他のカンファレンスと違って明らかに参加者がテストに情熱を持っている雰囲気があり、Miccoへの質問も次々と出ており、参加者の私にもワクワク感が伝わってきました。 Googleのように先を進んでいるチームもあれば、そもそも自動テストの導入段階のチームもあり、ソフトウェアテスト業界全体を幅広く知ることで、自社の立ち位置も知ることができ、非常に有意義でした。 また、講演頂いたお二人に共通して、QAはゲートキーパーというよりも、全体を見守る立ち位置であるように感じられました。 継続的インテグレーション、継続的デリバリーなどによりソフトウェアテストの自動化が進み、より創造的な仕事に集中していけるような未来が見えてきました。 運営・参加者の皆さま、どうもありがとうございました! 最後に LIFULLではエンジニア各職種の中途採用募集中です! エントリーお待ちしております。 募集中のエンジニア職種一覧【カジュアル面談の応募もこちら】 | 株式会社LIFULL recruit.lifull.com
こんにちは!LIFULL HOME'S iOSアプリ開発担当の高橋です。今回のiOSの勉強会はARKitにテーマを絞り、iOS版LIFULL HOME'SアプリのAR機能「ARお部屋計測」の開発当時の話を、弊社のディレクター、デザイナー、エンジニアの各目線からご紹介させていただきました。 ARお部屋計測とは? 最初に「ARお部屋計測」についてご紹介します。 この機能は「見学メモ」タブの「部屋を計測」ボタンからご利用いただけます。 ホームズくんと一緒に、お部屋の角を画面に写しながらタップしていくだけで、簡単に間取りを計測することができます。 ※ 使用するにはiPhone 5s以降の機種で、iOS11がインストールされている必要があります。 まずは使って体験してみてください! 発表 事業会社のARKit UX設計かいつまみ話 島田真寿美(ディレクター) LIFULL HOME‘S App Night #AR 事業会社のUX設計かいつまみ話 from LIFULL Co., Ltd. www.slideshare.net ARKitを導入した経緯と、仕様を考えるに当たって気をつけたポイントについてのご紹介でした。 普段の開発では、お部屋の探しやすさ・使いやすさといった「機能的価値」の向上を目的としていますが、今回の機能はアプリを使ってもらうことを目的として、「楽しい体験」の提供に重点を置きました。 ARはまだ馴染みの無いユーザが多いため、途中で挫折しないよう適切なガイドをする必要があります。今回はホームズくんとコミュニケーションしながら計測する設計にすることでユーザの利用ハードルを下げる工夫を行っています。 ARの時代がきた!そのときデザイナーは何をしたか 小林武蔵・小泉貴奈未(デザイナー) LIFULL HOME‘S App Night #AR ARの時代がきた!そのときデザイナーは何をしたか from LIFULL Co., Ltd. www.slideshare.net デザイナーは3Dモデリングについては(ほぼ)未経験の中、「ホームズくんの3D化」に挑戦しました。 ホームズくんの世界観を壊さないよう工夫しているのがポイントで、 球体のようなシンプルな形状をベースにすることで3Dデフォルメ感を出しています。 また一方で、ARに溶け込むリアリティを出すためにテクスチャ・アニメーションにこだわっています。 LT時はBlenderによるデモを行いました。詳しくは過去の記事をご参照ください。 www.lifull.blog www.lifull.blog www.lifull.blog TangoのモデルをARKitに流用した話 菊地 慧(エンジニア) LIFULL HOME‘S App Night #AR UXを突き詰めた15日間 from LIFULL Co., Ltd. www.slideshare.net TangoとはAndroidのAR技術なのですが、残念ながら現在サポート終了のアナウンスが出ております。 この技術はiOSとは関連はありませんが、Tangoを活用したカーテンシミュレーションアプリ「LIFULL HOME’S Room Style AR」の開発経験は、ARKitで大いに活かされました。 これは私たちのチームで経験した最初のAR開発プロジェクトで、ARは何ができて何ができないかを探りながら進めました。 Blenderで作ったモデルをARKitに取り込む方法もご紹介しておりますので、iOS開発者の方もぜひ資料をご覧ください。 「AR最速対応をした間取り計測の秘話」 又来 薫(エンジニア) LIFULL HOME‘S App Night #AR 最速対応をした間取り計測の秘話 from LIFULL Co., Ltd. www.slideshare.net 「ARお部屋計測」機能を実際に実装したエンジニアの発表です。 機能内容としては、 AR空間の平面上に点と線を引く 点の位置にホームズくんを移動させる 囲んだ線を間取り図のように表示する とシンプルではありますが、間取り図の角度の調整や、ホームズくんを可愛く見せる方法など様々な工夫を行っています。 ARの文脈でユーザに説明するのも、Appleのガイドラインで述べられている重要ポイントです。 これらの知見が詰まった資料になっておりますので、ぜひご覧ください。 まとめ ARはゲーム系やエンターテイメント系のアプリでよく使われておりますが、ツール系でもマッチするユースケースはたくさんあると思います。 チャレンジする障壁は高いですが、だからこそ他アプリと差別化することができます。 今まで経験がなかった方もぜひ挑戦してみてください。 今回の発表が、今後ARにチャレンジする方への参考になれば幸いです。
こんにちは。 LIFULL HOME'S事業本部QAグループの木住野(きしの)です。 本記事は3月7,8日の2日にわたり開催された JaSST’18 Tokyo 1日目の参加レポートです。 前回の記事 ではイベントの規模感や会場の雰囲気が伝わったと思いますので、本記事では1日目の講演内容についてご紹介いたします。 Advances in Continuous Integration Testing at Google 登壇者:John Miccoさん (Google) 資料 : Advances in Continuous Integration Testing at Google – Google AI 簡単に要約すると以下のような内容でした。 Googleでは420万ケースの自動テストがある 修正したソースコードの影響範囲を自動分析し必要なテストを実行している テスト結果をすべてデータベースに保存している 実行するテストの選択や実行のスケジューリングも自動化している 保存されたデータを用いてFlakyなテスト(不安定なテスト)の結果を分析し必要な情報を開発者にフィードバックすることでプロダクトの品質を維持している 例) 前回は成功したケースが今回失敗したら安全ではないと判定され、開発者へフィードバックされる 感想 私の担当領域も自動テスト、CI/CD部分なのでとても楽しみにしていた講演でした。 Flakyなテストについての考察は弊社でもすでに実践済の部分もありましたが、参考になる部分が多くありました。 以下資料には載っていませんがQ&Aなどで聞けた興味深かった点です。 Googleの開発者は自動テストコードの実装スキルが求められる 手動テストはない(ユーザビリティテストや外国の翻訳部分のみ手動でテストしている) 手動テストのコストとバグを流出するリスクのバランスを決めて経営陣を納得させた上で自動テストのみで品質を担保している 新規事業でも基本的に手動テストはない 会場からは手動テストがないことについて質問が集中していました。(みなさん信じられなかったようです。) また、テスト結果の分析に当たり前のように機械学習を用いている点にGoogleの基礎的な技術力の高さを実感しました。 コードを書きながら学ぶテスト駆動開発 (チュートリアル) 登壇者: 和田 卓人さん (タワーズ・クエスト株式会社) 資料(当日の内容に近いもの): https://speakerdeck.com/twada/tdd-live-in-50-minutes こちらは テスト駆動開発 の翻訳やワイルド・サバンナ(ライオンのアスキーアート)で著名な和田 卓人(t_wada)さんが実際に教えてくれるという個人的にはとても贅沢なセッションでした! テスト駆動開発(以下TDD)の概要、進め方、勘所を説明していただいた後に、 デモとしてTDDライブコーディングを見せながら更に実践的な考え方や細かなテストケースの実装方法を教えて下さいました。 その後、参加者でペアプログラミングを行いTDDを実践するという内容でした。 感想 TDDやコンポーネントテストの実装についてより深く腹落ちさせることができました。 また、TDDのRed→Green→ Refactoringで実装を進める心地よさを味わうことができました。 以下印象に残った点です。 テストコードは「1. 準備 , 2.実施, 3. 検証」の順で実行されるので、その順で実装をしようと思うかもしれないが3の検証から実装するのが良い 検証から実装することでテスト対象の機能の役割や動きが明確になるからです。 1 assert 1 test(1テストケースメソッドには1つの検証処理)がオススメ 1テストケースに複数検証処理を入れると以下のデメリットが有るからです。 複数の検証があるとテスト結果からどの検証が失敗したのか判断しづらくなる 失敗した検証の次の検証は実施されない(Failしても次の検証を実施できるフレームワークもあります) TDDは不安と自信とコードとの間合いを測る技術 実装に自信がない機能に対してはテストが多くなったり、自信があると最小限のテストコードで進むことができる ただし、基本は一歩ずつ機能を確認する 最初のうちはミューテーションテストをしながらテストが期待通りに動くか確認しながら進める テストが想定通りに失敗しないとそもそもの前提が崩れてしまうため、確認する必要がある。 ミューテーションテスト(ミューテーション解析)とは・・・ ミューテーション解析 - Wikipedia テストコードを構造化したり、適切に説明を追加することで対象コードの仕様を表す資料になる 他の開発者に引き継ぐ場合や将来自分が改修する場合などに重要になります。 # 構造化され、説明が追加されているテストコード例 @DisplayName ( "FizzBuzzクラス" ) class FizzBuzzTest { private FizzBuzz fizzbuzz; @BeforeEach void 前準備() { fizzbuzz = new FizzBuzz(); } @Nested class convertメソッド{ @Nested class _3の倍数の時Fizzを返す { @Test void _3を渡すと文字列をFizzに変換する() throws Exception { assertEquals( "Fizz" , fizzbuzz.convert( 3 )); } @Test void _99を渡すと文字列をFizzに変換する() throws Exception { assertEquals( "Fizz" , fizzbuzz.convert( 99 )); } } } # 以下省略 構造化した場合のテスト結果: fizzbuzz_good_result # 構造化されておらず説明もないテストコード例 class FizzBuzzBadTest { private FizzBuzz fizzbuzz; @BeforeEach void 前準備() { fizzbuzz = new FizzBuzz(); } @Test void _3を渡すと文字列をFizzに変換する() throws Exception { assertEquals( "Fizz" , fizzbuzz.convert( 3 )); } @Test void _99を渡すと文字列をFizzに変換する() throws Exception { assertEquals( "Fizz" , fizzbuzz.convert( 99 )); } # 以下省略 構造化しない場合のテスト結果: fizzbuzz_bad_result まとめ どのセッションも魅力的で全てのセッションに出たかったです。 各社の最新のソフトウェアテストの知見や技術、そして熱気に触れられてとても良い刺激になりました。 弊社の自動テストやテスト文化、スキルはまだまだ改善の余地があるので、 改善してよりよいサービスをより早く届けられる仕組みを作りたいと思いました。 また、その成果をJaSSTで発表して、業界へ還元していきたいと思いました! 最後に エンジニア各職種の中途採用募集中です! もちろんQAエンジニアも募集しています。 エントリーお待ちしています。 募集中のエンジニア職種一覧【カジュアル面談の応募もこちら】 | 株式会社LIFULL recruit.lifull.com