LIFULL Creators Blog

LIFULL Creators Blogとは、株式会社LIFULLの社員が記事を共有するブログです。自分の役立つ経験や知識を広めることで世界をもっとFULLにしていきます。

WWDC 2018 - DAY FOUR -

こんにちは! 開発Gの又来です!

WWDC4日目!早いもので残すところ今日を含めてあと二日になりました!

会場限定グッズ

今日は朝早くから会場限定グッズを求めて並びました。

一部グッズを紹介したいと思います。

トートバッグですね。割と生地がしっかりしているので長く使えそうな一品。 f:id:LIFULL-mataraik:20180608080937j:plain

MacBook(?)メモ帳です。カラーバリエーションも豊富! 「これMacBookです」とか絶対言わないでくださいね。つまらないです。 f:id:LIFULL-mataraik:20180608080925j:plain

AppleのロゴTシャツです。

すごくシンプルで買い物をしている大半の人が購入していました。 f:id:LIFULL-mataraik:20180608080948j:plain

個人的にバックパックが欲しかったのですが、まさかの初日に全て完売したそうです。。くやしい!

AR Great Experience

ARKitを使用する際に気をつけるべき箇所を紹介していました。

  • 認識中はアイコンなどをアニメーションさせて「認識中」だということを伝える
  • ラベルなどは近づいても離れてもオブジェクトが同じサイズで見えるようにしてあげる
  • 詳細などはディスプレイの最前に表示させる(AR上ではなく画面にオーバーレイさせる)
  • タップ+ジェスチャーで移動や拡大縮小などの動きを加える
  • 片手で操作できるように心がける

この他にも、モデルを作成する際に反射を考慮したテクスチャを貼るようなことについて触れていました。

まるで実際にそこにあるかのようなリアリティのある、金属の光の反射をテクスチャの貼る順番などでうまく表現していました。

今回のiOS12へのアップデートではデフォルトのアプリとして「Measure」が搭載されました。

開発者がより面白いコンテンツを作るためのTipsがこのセッションでは紹介されていたと思います。

認識中のアニメーションの追加やモデルの移動などはユーザー体験の向上に繋がるので挑戦してみたいです!

Life of a Button

デザイナー向けのセッションになります。

「トーストを焼く」ボタンをどうやって表現するかについてデモを行いながら触れています。

ボタンの状態

  • 待ち(Ready)
  • 実行中(Making)
  • 終了(Done)

この3つの状態をうまく切り分けて表現していました。

それぞれの状態で、

  • アプリが何をしているのかを人々に知らせる
  • テキストの説明、アイコンで伝える
  • 視覚、聴覚、時間の経過に伴う触覚の変化を見せる

を意識してデザインすると良いです。

また、サウンドは音の高さや大きさなど、オブジェクトのサイズを考慮するとより良い体験が提供できます。

全体的な内容として、

  • 物理的な世界がインスピレーションを与えることができる
  • ユーザーインターフェイスは、あなたが見ている以上のものである
  • 物事を試して学ぶ

ことが大事だそうです。

ALTCONF

WWDC会場横で開催されているALTCONFに行ってみることに!

Marriottのホテルが会場、、、

中はとても綺麗です。会場にはいくつかブースが出ていたのでのぞいてみました。 f:id:LIFULL-mataraik:20180608080959j:plain f:id:LIFULL-mataraik:20180608081010j:plain

ノベルティがすごい!!

シャツにペン、シールや水筒まで!!残りわずかだったらしく、この後訪れた方はもらえなかったみたいです。 f:id:LIFULL-mataraik:20180608082150j:plain 以上Day Fourの様子でした!

Day Lastに続く!

WWDC 2018 - DAY THREE -

こんにちは!デバイスソリューションU開発Gの池田です!

WWDCも3日目!中盤戦です!

現地から中盤戦の様子をお伝えします!

会場の様子

朝の最初のセッション時間の作業スペースの様子です。 f:id:LIFULL-ikedakz:20180607013950j:plain 昨日夜は会場広場でパーティーがあったおかげか空席も結構あり、穏やかな朝です。

好きな席を選んで優雅にモーニングを食べながら、作業時間をとることができました。 f:id:LIFULL-ikedakz:20180607013921j:plain 奥の方にCompanyStoreの行列が見えますがここの賑わいはどの時間も変わらずです。列の長さは2日目になっても変わりません。(閉店直前&遠目から見た感じですが、16:00-17:00頃になると少し列も空いていたように見えました。)

会場の外も人は多くなく空きスペースが見えます。 f:id:LIFULL-ikedakz:20180607014043j:plain ここからセッションが終わって空き時間、そしてランチの休憩時間になると人がどわーっと押し寄せます!

これがランチの作業スペースの様子!人いっぱい! f:id:LIFULL-ikedakz:20180607051736j:plain 席が全然とれません!

外の様子です。 f:id:LIFULL-ikedakz:20180607051801j:plain こっちも人いっぱい!どこのスペースもランチタイムはたくさんの人で溢れています。

そんな今日のランチはローストビーフサンドイッチを選びました。このサンドイッチはとっても美味しかったです!

以下はランチボックスとスプライトやコーラなどのドリンクを提供している野外バーカウンターの様子。 f:id:LIFULL-ikedakz:20180607052037j:plain

ランチタイムは世界各地から来たエンジニアとコミュニケーションする機会でもあります。

今日はイスラエルから来たエンジニア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

f:id:LIFULL-ikedakz:20180607065333j:plain User Interface Design Labでは実際アプリを使って頂きながら様々改善についてのアドバイスを頂きました。

何のために画面内の要素があるのか、質問なども織り交ぜながら理解して頂き、良い!いらない!こうした方がいいのでは??など率直に建設的な意見をたくさん頂くことができました!

説明にも絵を描きながら説明して頂きとても分かりやすかったです!

30分という短い時間でしたがとても濃く楽しい時間でした!

Siri Shortcuts Lab

f:id:LIFULL-ikedakz:20180607065354j:plain Labで以下聞いた3点について質問と回答です。

【質問】

  1. Custom Intentが使えるようになったが以前のような決まったドメイン以外でも使えるのか?
  2. サジェストは自動なのか、手動で何か行う必要があるか?
  3. サジェストをされる境界値はどういったものなのか?

【回答】

  1. 使える。
  2. 自動。時間や場所、頻度によって自動でサジェストされる。
  3. ここについては具体的には教えていただけませんでした。(当然ではあるのですが。)

1.は再確認で聞いた質問だったのですが、これまでメッセージング、支払い、ライドシェア等領域が限られていたSiriがいろいろな分野に解放されたという意味で大きな変更だと思います。

これからサジェストと連携してさらに発展していきそうですね!

楽しみです!

おまけ

昨日会場を後にしようとしていたら急遽大声で、

「ユニコーンターイム!!!!!」と叫び声があがりました。

ビクッとしてそちらを見るとユニコーンのピンバッジを配っていました!

f:id:LIFULL-ikedakz:20180607095528j:plain

表情に癒されます...。

以上Day Threeの様子でした!

Day Fourに続く!!!

WWDC 2018 - DAY TWO -

こんにちは! 開発Gの又来です!

WWDC2日目!今日もたくさんの収穫がありました。 初日はKeynoteがメインでしたが、今日からはセッションとラボについて触れていきます!

その前にWWDC前日に行ったバッジ交換やApplePark、WWDCでのお土産などを紹介したいと思います。

WWDC前日

私たちは日曜日にバッジ交換に行きました。 前日から会場は賑やかな様子。 スタッフの方々が気さくに話しかけてくれたり、ハイタッチしたり元気いっぱいな様子でした!

お決まりの記念撮影⭐ f:id:LIFULL-mataraik:20180606050119j:plain

Apple Park

せっかくSan Joseに来ているので、Apple Parkにも足を運びました。 Visitor Centerは一面ガラス張りの建物です、、!

WWDCでバッジを交換してきた参加者の方々が続々と流れてきていました! f:id:LIFULL-mataraik:20180606050107j:plain

屋上からはオフィスビルがチラリと。 当然ながら一般人は中には入れませんが、そもそも中がどのようになっているのかは未公開です。唯一わかるのは中には池があること。とても気になりますが、ここでは写真を撮ってWWDC初日に備えました。

f:id:LIFULL-mataraik:20180606050029j:plain

WWDC 2日目

朝食を頬張りながら今回のWWDCのお土産を見に行くことに。 初日とは違い、スペースも余裕がある感じ。 f:id:LIFULL-mataraik:20180606050054j:plain

Company Storeの列はこんな感じ。 f:id:LIFULL-mataraik:20180606050044j:plain この時は「あぁ、建物の中でお土産を買うのか」と思ってました。

残念!まだ中にも列があります。 10人ずつ呼ばれて中に入っていくのでここでようやく買い物開始かと思いきや、、、 f:id:LIFULL-mataraik:20180606050205j:plain

最後に長蛇の列が!! ようやくここでグッズが見える位置まで来ました。(写真右端にうっすら見えるのがTシャツコーナーです。) f:id:LIFULL-mataraik:20180606050142j:plain

odwallaゲット!

買い物が終わると、なにやらodwallaが配布されていることを聞きつけ、早速探しにいくことに

あっさり発見!念願の初odwallaです。

※odwallaとは、スティーブ・ジョブズのお気に入りだったドリンクらしいです。

朝食に飲んだオレンジジュースより美味かったです。 f:id:LIFULL-mataraik:20180606052720j:plain

長い買い物を終え、いざセッションへ!

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で出来るようになったことを取り入れた、新しい体験を一緒に考えてくれたりと、かなり親身になって応えてくれました。また、英語が聞き取りにくい箇所についてはメモを書いてもらったりと、大変参考になる機会が得られました。 f:id:LIFULL-mataraik:20180606050934j:plain

明日はWWDC中盤戦です! セッションやラボに参加してフィードバックをしたいと思います!

Day3に続く!

WWDC 2018 - DAY ONE -

こんにちは!デバイスソリューションU開発Gの池田です。

とうとう始まりました!WWDC1日目!

現地からレポート記事をあげていこうと思います!

Keynote

本日は朝から並んでKeynoteに参加してきました。

Keynoteは朝10時からのスタートです。

長蛇の列が予想されたので5時起きで会場に向かいます。あたりは薄暗い。 f:id:LIFULL-ikedakz:20180605151703j:plain

ホテルの近くのGishという駅から路面電車のVTAに乗って会場に到着し、列に並びはじめました。 f:id:LIFULL-ikedakz:20180605154758j:plain

なかなか進まず40分後...。 やっと会場が見えてきました! f:id:LIFULL-ikedakz:20180605155919j:plain

さらに10分後...。 もうすぐです! f:id:LIFULL-ikedakz:20180605154827j:plain

会場入り口ではAppleのスタッフが迎えてくれます!

踊っていたりハイタッチしてくれたり!テンション高いです! f:id:LIFULL-ikedakz:20180605163238j:plain

会場内では所々歓声が上がります。熱気が高まってきました!

会場に入るとコーヒーやパンなど無料で提供されています。 f:id:LIFULL-ikedakz:20180605154840j:plain

中には白いボールのような形の食べ物もありトリュフチョコかと思ってパクッと一口。

全然甘くない。。😩ただのおしゃれに丸められたバターでした。。。

気を取り直してコーヒーで流し込み、パンとオレンジジュースもぐいぐい飲み、朝食は完食しました。 あとはKeynoteに備えるだけです。

そしてそこからなんだかんだ待つこと1時間超...。

とうとう!Keynoteの会場に入りました! アプリアイコンがいっぱい並んで紹介されています! f:id:LIFULL-ikedakz:20180605154855j:plain

Keynote始まりました!

ティム・クックさんです! f:id:LIFULL-ikedakz:20180605154709j:plain 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に参加してきました。 f:id:LIFULL-ikedakz:20180605154744j:plain

シアトルから来たエンジニアと少し話しました。

今年初参加で来られたそうです。元々Web系のバックエンドなどやられていてエンジニア歴は8年。iOSを始めてから3年とのことでした。

なんでiOS始めたの??と聞くと、Webでサービス提供しているとブラウザの影響などで考えなければいけないことが多く、iOSは統一してサービスを提供できるためそこが魅力と感じてiOSデベロッパーになったそうです。

なかなかこういう場でないと出会えない方々と出会え、話しができたのが貴重な機会でした。 明日からは本格的にセッション、ラボが開催されます。 しっかり吸収し、アウトプットに繋げていきたいと思います!

Day Twoに続く!!!

【AWS Summit TOKYO 2018】AWS Secure Code Contest で優勝しました!

エンジニアの鈴木 (a.k.a すずけん)です。

今回、AWS Summit TOKYO 2018 で開催された「 AWS Secure Code Contest - DevSecOps の実践を通じたチーム対抗静的コード解析バトル -」に参加し、🏆優勝🏆することができました!!

この記事では、このイベントの振り返りと今回の学びについて共有したいと思います。

コンテストの内容については本記事では触れませんが、良い結果を残すためのヒントになるようなオープンな情報には触れています。

AWS Summitの楽しみ方のひとつとして、このようなイベントに参加してみようと思う人の参考になれば幸いです。

続きを読む

WWDC2018行ってきます! 最大限にイベントを楽しむための準備編

f:id:LIFULL-mataraik:20180530185614j:plain ※Appleからのメール画像を使用しております。

こんにちは!

デバイスソリューションユニット開発グループの又来です。 入社2年目のiOSエンジニアです!!ARKitの新機能開発とかやりました!

来週の6/4-8にCA, San Joseで開催する、WWDC2018に参加してきます!

developer.apple.com

WWDCには初参加なのでかなり緊張しています。。。

今回はそんなWWDCを最大限有意義なものにするための準備について書きたいと思います。

続きを読む

Google I/O 2018 Day Three

こんにちは。 デバイスソリューションユニット開発グループの崔です。
弊社でLIFULL HOME’SのAndroidアプリの開発を担当しています。

ついにGoogle I/O 2018の最終日ですね。
今日はいくつかのセッションの内容とせっかくなのでGoogle I/O全体の様子などをご紹介しようと思います。
まずは出発から!
(前回の記事はこちらから)

朝から災難だった・・・

ホテルを出てからWiFiの通信が悪く、なかなかUberを捕まえることができませんでした。ここで既に昨日より10分ほど遅れてしまいました。
なんとか駅まではたどり着きましたが、今日はなぜかシャトルバスもすぐに出発せず…。
現在時刻朝の7時40分。この時点で焦ってきました。

ようやく8時に会場に到着すると、あら、人がいない!
f:id:LIFULL-chohas:20180511095449j:plain
やはり最終日だからでしょうか。
結構空いています。
昨日までの朝食は争奪戦でしたが、今日は余裕ですね。
f:id:LIFULL-chohas:20180511095451j:plain 結局時間的に昨日と変わりはありませんでした。

続きを読む