LIFULL Creators Blog

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

LIFULLにおけるマーケターのキャリア像とは? マーケター総会の内容を公開!

こんにちは。LIFULLの新卒2年目マーケターの松井です。
今回は、7月に開催されたマーケター総会について共有させていただきます。

マーケターの人材育成やキャリア像を考える方のご参考の一つになれば幸いです。

 

マーケター総会とは?

LIFULLでは、マーケターに関わらず、エンジニア、デザイナーなど職種別の総会を定期的に実施しています。

 

人材育成の考え方として、組織別の人材育成と、職種別の人材育成の双方を重要視しており、職種別の総会は、職種ごとの目指す方向を共有するビジョンシェアリングの意味を込めて開催されています。

 

また、今年の5月にLIFULLでは、改めてマーケターのキャリア像を明確に定義しました。

LIFULLマーケターのキャリア像について

以下の内容が、LIFULLにおけるマーケターのキャリア像として掲げられています。

 

マーケターとしてタイムレスなスキルを保有し、
マーケティング・コミュニケーションをトータルプロデュースできる人材

  

文章ではこのように定義されているのですが、まだマーケターの実務経験が浅い自分自身にとって、「マーケターとしてのタイムレスのスキルとは?」「マーケティング・コミュニケーションをトータルプロデュースできるってどういった状態?」と言ったように、中々腹落ちしきれない部分がありました。

 

今回の総会は、そういったマーケターのキャリア像、マーケターに求められるスキルを具体的にイメージするために、ベストインクラスプロデューサーズの代表取締役社長 菅 恭一氏を外部講師としてお招きして開催されました。

 

第一部「デジタル時代のマーケティングプロデュース術」

 

f:id:LIFULL-matsuit:20170809160900p:plain

 

 菅氏には、「デジタル時代のマーケティングプロデュース術」というタイトルでご講演いただきました。

 

f:id:LIFULL-matsuit:20170830085107j:plain菅 恭一氏(ベストインクラスプロデューサーズ)

1998年朝日広告社入社。食品、流通、金融、人材、不動産など多業種における、デジタルマーケティングの戦略構築、コンサルティングを担当したのち、2004年に次世代型デジタルマーケティング組織を起案。以降10年間のリーダーシップを通じてトリプルメディア領域におけるコミュニケーションプランニングとデータドリブンなマーケティングマネジメントをシームレスに実践する組織基盤を構築。

2015年4月、データドリブン型コミュニケーションシナリオの開発を軸に、デジタル時代の企業と生活者の関係構築を支援するマーケティングプロデューサー集団、株式会社ベストインクラスプロデューサーズの創業の参画、代表取締役社長に就任。

 

マーケティング活動のプロセス明確化の重要性

講演の冒頭は、マーケターを取り巻く環境やマーケターが抱える課題をベースとして、マーケティング活動を構造化し、プロセスを明確にする必要があるというお話をいただきました。以下のスライドがその事例となります。

 

f:id:LIFULL-matsuit:20170728091801j:plain

 

プロセスに落とすメリットとして、菅氏は「プロジェクトに入る前にゴールまでのプロセスがあると、振り返りし易い」というお話がありました。上記のようなフレームワークに落とし込む重要性を、実際にプロデュースしたクライアントの案件の事例も踏まえて、説明いただきました。

マーケターに求められるスキル要件

f:id:LIFULL-matsuit:20170728091814j:plain

 

その上で、マーケターに求められるスキル要件について、以下のように定義されていました。


1.プロデュースする力 
2.データを読む力
3.シナリオを作る力

 

目指すべきは、「プロデュースする力」を持ち、「データを読む力」「シナリオを作る力」のいづれか(3つのスキルのうち2つ)を兼ね備えているハイブリッド人材というメッセージを受け、第一部の講演は終了しました。

 

第二部 トークセッション

f:id:LIFULL-matsuit:20170901102136j:plain

 

第二部では、上記のご講演を基に、以下の点についてLIFULLマーケター職種長の菅野(すがの)氏と菅氏でトークセッションを行いました。

 

 菅野 最後のスライドで、プロデュースする力、データを読む力、シナリオを作る力を持つハイブリッド人材のお話がありました。

 

それぞれ3つのスキルに関しては、LIFULLのマーケターのスキルマップでも、データ活用やコミュニケーション設計は入っていて、プロデュースする力は社内調整力やプレゼンテーションスキルといった要素として含まれおり、それぞれマーケターとして保有すべきタイムレスなスキルとして定義されています。

 

ただ、「なぜハイブリッド人材が重要なのか?」については、現状社内のマーケターに説明ができていませんでした。菅さんは、なぜスペシャリスト人材ではなく2つ以上兼ね備えているハイブリッド人材が重要なのか?と考えていらっしゃるのかをお伺いしたいです。

 

菅氏 よくT型人材と言われるように、1つは自分の強みとなる領域は持った方が良いと思います。たとえばデータを読む力がありますとか、アクセス解析ができます、運用型広告はハンズオンで運用できます、と言ったような。

 

ただ、それを部分最適ではなく、自分の掘り下げてやっていることを、もう少し大きな目線で事業の問題の解決にどうつながっているのか?という視点で専門性を活かしていこうと思うと、戦略を考えないといけないと思っています。

 

よく、若手でデジタルマーケティングを初めてやる方は、リスティングやSEOなどからスタートすることが多いと思いますし、それはそれで良いですが、それだけだとキャリアとしては、大きい意味での事業貢献にはつながりにくい。それを活かしながら、もう少し大きなレイヤーで売り上げを伸ばすとか、数を増やすとか、先ほどのマーケティングモデルを描きながら自分は何をするのか?というのはすごく大事だと思います。

 

菅野 ちなみに先ほどの3つのスキルの中で多い組み合わせなどはありますか?

 

菅氏 プロデュースする力、シナリオを作る力の組み合わせが多いかなあと思います。データに関しては、データの専門性を持っていることと、データに対してのリテラシーがあることはちょっと違うと思っていて、データにものすごく深く行かれる方は特殊能力だなと思っています。

 

なので、プロデューサーは、ものすごく専門性が高い方が深く行き過ぎるところを、もう少しビジネスに焦点をあててデータの切り方をディレクションできたりするのは重要です。データが全くわからないとちょっと困っちゃいますね。そう考えると、プロデュースする力、シナリオを作る力のセットが多いですが、データが分かるプロデューサーはそんなに多くないので、これからより求められると思います。

 

菅野 こちらに関連して気になったのは、先ほどの3つのスキルと仕事の組み立て方について、ある限られたポジションの人しかできないのでしょうか?それとも細分化された1つの業務の中でもできるのでしょうか?

 

菅氏 できると思うし、是非やった方が良いと思います。プロセス自体は、経験があった方がうまくいくこともあるんだとは思いますが、そこは経験関係なく、一人でやるのでなく、たとえばシニアの方、ジュニアの方、ミドルの方と同じチームで同じプロセスを設計してみるのが重要だと思います。

 

菅野 次にマーケターの能力開発について、先ほど出たマーケターが身につけるべきスキルはどのように獲得するか?についてお伺いしたいと思います。実際、どうようにすれば身につくのでしょうか?

 

菅氏 当たり前といえば当たり前なんですが、マーケティングの基本的なフレームワーク、3Cであったり、戦略づくりの中ではSWOTとかベーシックなフレームワークは持った方が良いですよね。たとえばリスティング広告やるにしても、そういった視点は取り入れた方が重要だと思います。タイトル、ディスクリプションをつくるといった業務の中でも、どのマーケット、どのセグメントの人を取りにいくのかを考えながら運用するのが重要です。

 

そういったことを考えない時によくあるのが、現場では預かっている予算と取らないといけない数があると思うんですが、そうすると取りやすいところにどんどんシフトしていってしまうこと。数字上は会社から預けられているKPIは達成しているんですが、そもそも、そのプロダクトはどういうお客さまに買って欲しいのか、愛して欲しいのかとギャップが出てくるケースがあると思います。その結果、効率よく取れたけれども商売としては長続きしないといったことが起こりやすいです。

 

そういったギャップを埋めるためにどういったコミュニケーションの設計やチューニングが必要か?というのを課題にして動かすことが重要。先ほどの戦略の話があると、数字があるけど実は違うんだよねが分かってきます。

 

なので実務をやりながら戦略を考えるというのが重要だと思います。

 

菅野 社内でも、マーケティング研修というものを開催していて、社員がフレームワーク嫌いにならないような取り組みをしています。

 

次に伺いたいのは、マーケターのキャリアデザインについて。マーケターはどんなキャリアを築くと良いというのを伺いたいです。

 

菅氏  最終的にはジェネラリストかスペシャリストか、という分かれ道がどこかで来ると思っています。身も蓋もないことを言うと、個人のやりたい方で、と思っています。笑

 

ただ、足りてないなと思うのは、ジェネラリストの方だと感じています。スペシャリストは若い段階から色んなスペシャリティを身につけられるので、そういった入り口で良いと思っていますが、やっぱり複数の領域に共通言語を持って話ができることが、マーケティングは1人で、1社で完結できることはほとんどない中で重要になってきます。


たとえば広告代理店、ITベンダー、コンテンツの制作会社といった違うスペシャリストにマーケティングの目線で、それぞれの言語に対して6,7割の共通言語で話ができて、全体を構造化してマネジメントすることがすごく大事なんですけど、そこができる人材は少ないと思っています。

 

菅野  最後に、LIFULLのマーケターにメッセージをお願いします。

菅氏 僕のオススメは、是非プロセスをやって欲しいと思っています。感覚的に進めてきたことが手順化されてきて、その手順自体が良いときも悪いときがある、暗黙知が形式知化され、チームに共有してチーム力が上がっていくのを感じているので、ぜひやっていただきたいです。

 

あとはデジタルに限らずですが、 どういうお客さまにどういう価値を提供したいのかという、そもそもの事業やサービス理念の部分と、実際に現場で起きていることのギャップを大事にして欲しいです。数字でいえば取れてたとしても、本当に自分たちの価値がお客さまに伝わっているのか?とか、伝えたい方にちゃんと愛してもらっているのか?という部分。この2つがくっつかないからこそ、マーケティングは面白いんだと思っています。ギャップを意識するのと、そのギャップを埋めるために何をするのか?の目的意識がすごく大事にできればなと思います。本日はありがとうございました。

 

その後、会場の参加者から質問を受け、マーケター総会は終了しました。 

終わりに

参加した社員の声

社員A

「個人的には、マーケティングのプロセスが形式知化されていない問題はハッとするものがありました。だからといって型(フォーマット)を増やしていきましょう、という単純な話ではないですが。価値ある気づきが多くありました。」

 

社員B

「トップダウン型(設計主導)とボトムアップ型(施策主導)の話がありましたが、(世の中にはおそらくボトムアップ型が多いので)敢えてトップダウンをもういちどちゃんとやりましょうよっていう話なのかな?と理解しました。一方で複雑化するマーケティングにおいてはバランスが大事なのでちゃんと両方の視点を持つことが必要なのでしょうね。」

 

個人的な感想としては、自分自身の関わっているマーケティングを見つめなおし、マーケターとしてどこを目指すべきかを考える非常に良い機会となりました。日々の業務に追われれば追われるほど、プロセスを省略して、数字の部分しか見えなくなる傾向が個人的にあるのですが、数字の部分とサービス理念といった部分といったより戦略に近い部分を意識しながら、業務に励んでいければと思います。

 

最後に、LIFULLでは新卒/中途関わらず、一緒に働くメンバーを募集しています。
ご興味を持っていただけましたら以下のリンクよりお気軽にご連絡ください。

株式会社LIFULLの採用/求人一覧

 

 総会の全スライドはこちら

 

LIFULLエンジニアインタビュー #2 QAエンジニア

こんにちは、NASが吹っ飛んで代わりに7年ぶりに自作PCを組み立てた LIFULL HOME'S事業本部 技術開発部 の冨田です。 バックアップは大事ですね & パーツを選べるって幸せですね。

LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを行っています。

前回の記事も是非ご覧ください。

ゲスト紹介

本日のゲストは LIFULL HOME'S事業本部 技術開発部 の中野さんです。 品質保証や開発プロセスの改善を担当しているエンジニアマネージャーです。

f:id:LIFULL-tomitam:20170808165044j:plain

続きを読む

WWDC - Developer's Living 開催しました!

こんにちは!そして初めまして!LIFULL HOME'SのiOSアプリチームの又来です。新卒1年目の新米エンジニアです。入社して早くも3ヶ月が経ちますが、ようやく社会人生活にも慣れてきたところです。

さて、6/5-9にCA, San Joseで行われたWWDC 2017では、iOS11の発表やARKitなどをはじめとする新技術の発表がありましたね。

今回はその新技術の共有会ということで、「WWDC - Developer’s Living」を開催しました! f:id:LIFULL-mataraik:20170707151534j:plain

発表

Core ML / Vision Frameworkを使ってできること

@shingtさんの発表です。

Core MLを用いてiOS上で画像解析技術の利用をするための知識やできることについて発表していただきました。

画像解析技術の利用ハードルが低下した

Core MLは学習済みのモデルを扱うことができるので、Vision Frameworkと組み合わせることで精度が高い画像解析が行えるようになります。また、取り込んだ学習モデルを使って、物体検出などのTracking(物体の追跡)が可能になります。

今回新技術の発表があったARKitと組み合わせることで空間上に検出した物体を追跡しながら投影するなんてこともできそうですね。 f:id:LIFULL-mataraik:20170707151459j:plain

iOS11からの位置情報アプリの立ち向かい方

@SatoTakeshiさんの発表です。

iOS11から変更があった、位置情報について発表していただきました。

常に許可から「このAppの使用中のみ許可」に

iOS10までの位置情報の認証は、「常に許可」と、「このAppの使用中のみ許可」のどちらかをユーザーに問い合わせれば良いだけでした。しかし、今回からは常に許可しか問い合わせていないアプリも「このAppの使用中のみ許可」を 強制的に出すようになりました。

今回はその認証に対する変更点だけでなく、細かい変更部分など位置情報アプリを作るなら欠かせない変更点とその対策について紹介していただきました。 f:id:LIFULL-mataraik:20170707151506j:plain

WWDCに学ぶライブコーディング+CoreNFC

@fromkkさんの発表です。

WWDCでの発表はプログラムをリアルタイムに実行しながらコーディング行う、ライブコーディングが多いです。

そんなライブコーディングの良さをCoreNFCのデモ共に発表していただきました。

Xcodeのコードスニペット(入力補完)を使う

コードを書きながら発表するのは緊張したり、書くべきコードを忘れたりしますよね。そんな時はXcodeの入力保管を使って、まとめたいコードを簡単にショートカットに登録すると、発表中にど忘れしたりすることがなくいつでも呼び出しが可能になります。また、コメントを記述することもできるのでわかりやすそうです。

発表では、コードスニペットを用いてNFCタグの認証のデモを披露していただきました。

映像出力機器の不備でテレビのモニタに映しております。この度はご迷惑をおかけしました。 f:id:LIFULL-mataraik:20170707151512j:plain

iOS 11からのアプリ間ファイル共有

@ktanaka117さんの発表です。 iOS11からアプリ間でファイルのやりとりができるようになり、アプリ側で実装するためのやり方について発表していただきました。

ファイル共有には送信側、受取側どちらも対応する必要がある

渡したい画像などのファイルを送信するためには自身のアプリ側でファイル共有の対応をすれば良いですが、アプリ間で共有をする場合は受け取る側も共有の実装が必要になります。

この機能を使ったアプリがこれからたくさん出てくることがカギになりそうです。 f:id:LIFULL-mataraik:20170707151515j:plain

Dictionary for Swift4

弊社の塙 拓朗の発表です。

Swift4.0でDictionaryの機能が便利になりました。

Dictionaryが扱いやすくなった

Swift4.0での変更点をいくつか挙げると、

  • Key-ValueのペアになったSequeneタイプからDictionaryを生成できるようになった
  • 重複したKey(Sequenceタイプ)に対して処理が可能
  • 初期化だけでなく既にあるDictionaryに対しても行えるmergingとmergeが追加
  • FilterとMapの扱いが簡単になった
  • 取り出しの際にデフォルトが指定できる
  • Sequeneをグルーピングしやすくなった
  • あらかじめ容量を確保できるようになった

などなど、痒い所に手が届くようにパワーアップしました。

直接的な新機能ではありませんが、開発者としては嬉しいアップデートですね。 f:id:LIFULL-mataraik:20170707151523j:plain

PDFKit

@kishikawa katsumiさんの発表です。

Macでは使うことができていたPDFのプレビューですが、iOSでPDFKitが使えるようになったこと、簡単に実装できるようになったことをデモを交えて発表していただきました。

ページプレビューからスキップまで簡単に

PDFKitを使うと簡単にビューワーが作成可能になります。文字検索をしたり、ヒットした文字にattributeを指定してマーカーを引いたりすることができるようになります。また、文字検索での機能について、行をまたぐなどをすると空白文字が入ってしまい、検索にマッチしない場合があるので、空白や空行を取り除く処理が必要になります。

これまでiBooksなどのビューワーアプリを開発してきた方はこのPDFKitを使ってみてはいかがでしょうか。

デモを拝見しましたが、とても簡単に実装できていたので今後のアプリ開発が楽になりそうですね。 f:id:LIFULL-mataraik:20170707151527j:plain

ARKit

弊社の池田 和洋の発表です。

今回WWDCでの大注目を浴びたARKitの機能を用いたデモアプリについて紹介させていただきました。

拡張現実オブジェクトの合成を可能とするデモでは、平面を認識した位置にボールを出現させ、ボールが平面に衝突するとバウンドするようなものを実演しました。

特別なハードウェアはいらない

用意するのはiPhoneまたはiPadのみでARが使えるようになります。(厳密にいうと、A9以上のチップ内蔵のものなのでiPhoneは6s以上、iPadはProか第5世代のみ)

ARKitでは机や床など平面を認識することが非常に得意で、空間上に出現させたオブジェクトもブレることがほとんどなく、精度が非常に高いものになっています。 f:id:LIFULL-mataraik:20170707151529j:plain

最後に

共有会が終わった後はみなさんでワイワイ交流会!

懇親会ではじゃんけん大会を開催し、なんと景品は現地でしか買うことのできないWWDCのお土産です!(欲しい) f:id:LIFULL-mataraik:20170707151536j:plain

グッズをゲットした方々、おめでとうございます!! f:id:LIFULL-mataraik:20170707151547j:plain f:id:LIFULL-mataraik:20170707151550j:plain f:id:LIFULL-mataraik:20170707151552j:plain

WWDCで発表があってから数週間にも関わらずみなさん新機能を使った開発を既にスタートさせていました。

今回のアップデートで大幅にできることが増えているのは確かです。

最新の知見を共有する場にもなり非常にアツいイベントになったのではないかと思います。

これからのiOSアプリに期待です!

LIFULLエンジニアインタビュー #1 iOS&おうちハックエンジニア

こんにちは、この記事の校正のために textlint 試しているLIFULL HOME'S事業本部 技術開発部 の冨田です。

LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを行っています。

前回の記事も是非ご覧ください。

ゲスト紹介

本日のゲストは LIFULL HOME'S事業本部 新UX開発部 の高橋さんです。 iOSアプリのLIFULL HOME’S と そのバックエンドを担当しているエンジニアです。

f:id:LIFULL-tomitam:20170710163146j:plain

続きを読む

LIFULLエンジニアインタビュー #0

LIFULL HOME'S事業本部 技術開発部 の冨田です。

LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを始めました。

ゲスト紹介

本日のゲストはおなじく LIFULL HOME'S事業本部 技術開発部 の磯野さんです。

過去にはiOSアプリのLIFULL HOME’Sやオンプレミスからクラウドへのサーバ移行、Zipkinの導入なども担当され、現在はLIFULL HOME’Sを支えるアーキテクチャの刷新を担当しているエンジニアです。

f:id:LIFULL-tomitam:20170619095253j:plain:w320

目次

  • ゲスト紹介
  • 目次
  • 学生時代
  • LIFULL入社前
  • LIFULL入社後
  • 子どもが生まれてから
  • 技術のキャッチアップ方法
  • 育成と後輩エンジニアからの刺激
  • 好きな開発環境、言語など
  • 将来のビジョン
  • 次回予告
  • 編集後記
  • お知らせ
続きを読む

WWDC 2017 - LAST DAY -

こんにちは。iOS開発Gの池田です。
本日はとうとうWWDC最終日!

今回は最終日の様子、セッションについての内容、最後に昨日の夜にあったBashの様子について書きます。 (前回の記事はこちら)

出発

最終日!ということで、ちょっとした気合いを入れつつホテルを出たのですが、こんな日に限ってあいにくの雨模様。
ここ最近の晴れ具合であったり、UBERで乗せてもらった方から聞いた話からも雨降りはなかなかレアな気がします。
そんなレアな天候の中、VTA(Santa Clara Valley Transportation Authority)に乗って会場に向かいました。 f:id:LIFULL-ikedakz:20170610114436j:plain

会場の様子

WWDC最終日はセッションも少なく、ラボも早い時間で閉まってしまいます。
そんな事情もあるため今日はほとんど人いないんじゃ、、と思ってたのですが、全然そんなことなかったです。
多くの人で会場は賑わっています。 f:id:LIFULL-ikedakz:20170610114513j:plain

今日はアツく揺さぶられるセッションが午前中なかったため、作業スペースで開発作業を進めていました。
セッションの動画も流れています。 f:id:LIFULL-ikedakz:20170610114944j:plain

そうこうしているうちに午後のセッションの時間になり、セッションに参加してきました!

セッション

今回参加したセッションは、「Efficient Interactions with Frameworks」です。 このセッションでは、Foundation内のパフォーマンスについての話とStringのパフォーマンスについての話がされていました。

Foundation内のパフォーマンスについて

以下パフォーマンスの改善が行われているそうです。

NSCalendar

メモリの使用 、速度の改善

NSOperation / NSOperationQueue

速度の改善

Data

速度の改善

Stringのパフォーマンスについて

Stringのbridgingについて

SwiftでUILabelやUITextViewのtextを変数に入れる場合、textの実装部分でObjective-CのUILabelや、NSTextStorageが利用されておりそのコストについての話でした。
UILabelを利用する場合もUITextViewを利用する場合も暗黙的にbridgingが行われ、それに対するコストがかかります。
ここでUILabelは比較的小さなデータ量を扱うことが多いためあまり意識しなくて良いが、UITextViewはデータ量が大きくなることもあるため気にした方が良いとのことでした。
具体的にはUITextViewのtextの中に1MBを超える文字列を扱う場合はパフォーマンスを気にした方良く、こういった場合は計測した上でパフォーマンスに影響を及ぼしている場合、以下のようにcopyの処理がはしらないmutableStringを使うのが良いそうです。

var text = textView.textStorage.mutableString

ここに関してはAppleも解決策を探しているが現状見つかっていないので、パフォーマンスに影響を及ぼしている場合上記のような処理を検討するのがよいとのことでした。

Rangeについて

NSRangeとRangeに新しいイニシャライザが追加され、NSRangeやNSRegularExpressionを利用するときに便利になっています。
NSRangeとRangeの相互変換がイニシャライザででき第二引数にStringを指定できるようになっているため、「NSRangeを作成するために一旦StringをNSStringに変換する」のような処理が必要なくなっています。 Rangeに追加されたイニシャライザは下記です。

init?(NSRange, in: String)

文字列のレイアウトとレンダリングについて

テキストのレンダリングでパフォーマンスを上げる方法として3つのtipsが挙げられていました。

  1. 可能な限り標準のコントロールを利用する
  2. AutoLayoutのようなモダンなレイアウトプラクティスを利用する
  3. NSAttributedStringを利用している場合、確定しているattributesは明確に指定する

3.の具体例で挙がっていたのは、directionやlineBreakModeです。
確定しているなら指定しておいた方が推測のコストが省けるため、若干パフォーマンス改善するそうです。

The Bash

WWDCでは毎年Apple公式の打ち上げのような形で The Bash が開催されます。
Bash の会場では食事やお酒が無料で提供されており、最中には有名なアーティストのライブもあります。

下の写真は会場に向かう橋です。
開場の20分ほど前に行ったのですが列ができており順々に数十人のグループで区切って通されます。
いっぱい乗ると落ちるぞ、みたいなことを言っています。怖いです。
f:id:LIFULL-ikedakz:20170610121016j:plain

この橋を超えて会場に入りました。
開場直後に入ったので、ぼちぼち人が人がいる程度です。
f:id:LIFULL-ikedakz:20170610123859j:plain

食事やお酒が提供されています。 f:id:LIFULL-ikedakz:20170610124016j:plain

そしてアーティストライブの時間がやってきました!
今年のゲストはFall Out Boy!!!!
前の方では飛び跳ねて盛り上がっている人たちも!
すごくかっこいいライブでした!

徐々に日は落ち、お酒も入りみんなテンションが上がっています。
机の上で踊り出す人々も出てきました! f:id:LIFULL-ikedakz:20170610125424j:plain

大勢の人で盛り上がった Bash も22時頃でクローズし、公式の打ち上げ(っぽいイベント)も終了です。

最後に

1週間に渡り様々な発表、ラボが開催されたWWDCも今日で最終日です。
ですがエンジニアにとっては、発表された技術をどう活かしてどうサービスに繋げていくか、それを考えて作っていく日々が始まったばかりです。
WWDCで発表された技術、情報を素早くキャッチアップして今後に繋げていきたいと思います!

私たちの会社でもWWDCの素早いキャッチアップに繋がるよう共有会を開催しますので、ぜひいらしてください! lifull.connpass.com

WWDC最終日の記事は以上となります!
ありがとうございました! f:id:LIFULL-ikedakz:20170610130950j:plain

WWDC 2017 - DAY FOUR -

昨日の記事に引き続きこんにちは。iOS開発Gの塙です。 4日目ともなると現地のエンジニアは今回発表された機能の実装をだいぶ進めているみたいです。 外のベンチにはただ空を眺めている方、俯く方、頭を抱える方。十人十色です。美しいですね。

皆さんも実装が詰まって何時間も考える時があると思います。 そんな時WWDCでは問題解決をしてくれるスペシャリストが待機している場所があるのです。 今回はその場所の話とセッションの話をメインで書きたいと思います。

f:id:LIFULL-hanawat:20170609151658j:plain

これは通称"小田原"と呼ばれているオレンジジュースで、ほぼ毎年WWDCで配られています。ジョブスが好きだったとか。ではまずセッションのお話から。

Focus Interaction in tvOS 11

今回KeynoteではAmazon Prime Videoの話しかされなかったtvOSですが、API Referenceを見るとそれなりに変更があったので聴きに行きました。 セッションの席がガラガラですね、大丈夫でしょうか。

※ LIFULL HOME’S アプリはtvOSにも対応しています。

最新バージョンではCoreBluetoothFlyoverに対応しております。AppleTVをお持ちの方はぜひダウンロードしてみてください。

f:id:LIFULL-hanawat:20170609151917j:plain

Focus Update Notifications

  • Focusに対して更新処理が走る時に通知を受け取れるようになった
  • Focusの移動に失敗した場合の通知も追加されている
static let UIFocusDidUpdate: NSNotification.Name

static let UIFocusMovementDidFail: NSNotification.Name

Protocol Extensions

UIFocusItemプロトコルが拡張されて、自身が今Focusされているか確認できます。

var isFocused: Bool { get }

UIFocusEnvironmentプロトコルが拡張されて、自身が他のFocusEnvirionmentに含まれているか確認できます。

func contains(_ environment: UIFocusEnvironment) -> Bool

Focus Animations

Focusの移動時にアニメーションを定義できます。

// for focusing item
func addCoordinatedFocusingAnimations(_ animations: ((UIFocusAnimationContext) -> Void)?,
                           completion: (() -> Void)? = nil)

// for unfocusing item
func addCoordinatedUnfocusingAnimations(_ animations: ((UIFocusAnimationContext) -> Void)?,
  completion: (() -> Void)? = nil)

Runs the specified set of animations together with the system animations for adding focus to an item.

今まで下記のようにやっていた処理との違いはシステムの定義したアニメーションと一緒に行うかどうかでしょうか。

func didUpdateFocus(
  in context: UIFocusUpdateContext,
    with coordinator: UIFocusAnimationCoordinator) {

  if context.nextFocusedView is Self {

    coordinator.addCoordinatedAnimations({
      // Focused Animation
    }, completion: nil)

  } else if context.previouslyFocusedView is Self {

    coordinator.addCoordinatedAnimations({
      // Unfocused Animation
    }, completion: nil)
  }
}

またFocusの移動スピードに合わせてアニメーションの早さを調節されるそうです。

Custom Focus Sounds

  • フォーカス移動時に流れる音をカスタマイズできるようになった
  • UIFocusSystemというクラスが追加されたことによって可能になった

UIFocusSystem

現在のユーザーインタフェース上にあるフォーカスの状態を管理するクラス。 今まではupdateFocusIfNeededのように自身のフォーカスの更新しかできませんでしたが、このクラスは全てのフォーカスの更新ができます。

func requestFocusUpdate(to environment: UIFocusEnvironment)

func updateFocusIfNeeded()

また、現在フォーカスされているオブジェクトやどのFocusEnvirionmentに含まれているかもチェックもできます。

weak var focusedItem: UIFocusItem? { get }

class func environment(_ environment: UIFocusEnvironment,
  contains otherEnvironment: UIFocusEnvironment) -> Bool

その中にひとつだけフォーカス時の音を変更するメソッドがあります。 ローカルのサウンドファイルのURLと識別子を指定するだけでアプリ内にグローバルに反映されます。ただし、サウンドファイルは30秒未満でなくてはいけません。

class func register(_ soundFileURL: URL,
  forSoundIdentifier identifier: UIFocusSoundIdentifier)

下記のようなサウンドの調整も行われるようです。

  • スピードに合わせて音量が変更される
  • フォーカスの移動方向(左右)によっても異なる

また、オブジェクトがフォーカスを更新するタイミングでカスタムとデフォルトとなしの切り替えもできます。例えばサイズの異なるオブジェクトになる場合は音を変えるというのは良いプラクティスだそうです。

// UIFocusEnvironment Protocol
optional func soundIdentifierForFocusUpdate(in context: UIFocusUpdateContext) -> UIFocusSoundIdentifier?

Support for SceneKit

SceneKitとSpriteKitでもフォーカスを扱えるようになった UIFocusItemの継承クラスにSKNodeSCNodeが追加されている。

Focus Update Logging

-UIFocusUpdateLoggingEnabled=YESの設定をXcode上で行うとフォーカスに関するログを吐く。

UIFocusDebugger

フォーカスをデバッグするためのクラスが追加されました。 po UIFocusDebugger.foo()でFocusの状態を見たり検証したりできます。

  • status(): フォーカスされているオブジェクトに関する情報
  • simulateFocusUpdateRequest(from: _): 特定のFocusEnvirionmentからフォーカスの更新を試せる
  • checkFocusability(for: _): Focusできるかチェックできる(できない場合は理由も分かる)
  • help(): 使用できるコマンド(メソッド)全部出してくれる

結構やりたかったことや実装が面倒だった部分が解消されている気がします。何より捉えにくいフォーカスをデバッグしやすくなったのは嬉しいです。

qiita.com

Lab

普段実装で躓いたことはありませんか?ない人なんていないですよね。 このWWDC期間中であれば、そのUIKit、Foundation、iOS、watchOS…などの開発者に相談できるんです。 そこで答えが出ないなら諦めがつきますもんね。頭を抱えて作業が進まない状況を無くせます。

f:id:LIFULL-hanawat:20170609151720j:plain

ラボにも色々な種類があり、昨日の記事で紹介したUIデザインラボもその中のひとつです。 基本的に技術系のラボは予約はいらず、その場でじっくり実装しながら聞いたりできます。

Design and Accessibility

  • User Interface Design
  • Accessibility Design

App Store

  • App Review
  • Apple Developer Program Support
  • Apple Marketing Communications
  • Business and Marketing
  • Export Compliance
  • iTunes Connect
  • Search Ads

Podcast

  • Apple Podcasts Studio

Develop

  • Core Image Lab
  • Source Control, Simulator, Testing, and Continuous Integration with Xcode Lab
  • Game Center Lab
  • Installer Lab
  • ClockKit and WatchKit Lab, etc…

もっともっとあります。キリがないくらい様々な技術情報のラボがあります。 え?英語が話せない?もちろん私も話せません。ですが、最初の質問を準備していけばあとはノリとコードで伝わります。 私は質問していく時に毎回このようなフォーマットで持って行きました。

    func foo() {
        /*
         ここに現状の実装の説明とやりたいことを書く
         */
        doSomething()
    }

    func bar() {
        /*
         ここにトライしたけどダメだったことを書く
         実装はコメントアウトしておく
         */
        // doAnything()
    }

Appleのデベロッパーと話せる機会なんてそうそうないのでWWDCに行くときはぜひ質問を投げに行ってみてください。 では、最終日も楽しく元気に学びましょう。

f:id:LIFULL-hanawat:20170609151742j:plain

今日はよくわからないファミレスのような場所で書いています。このタコスのようなポテト素敵な味がします。アディオス。