TECH PLAY

株式会社LIFULL

株式会社LIFULL の技術ブログ

652

こんにちは。 LIFULL HOME'Sアプリのデザイナーのこばやしです。 デザイナーの3Dモデル作り全3編中、第2編は「モデリング編」です。メッシュオブジェクトで形をつくり・整える行程の基本操作(コマンド)・便利機能をまとめました。ツールの操作やモデリング前の下準備については 準備編 をご覧ください。 www.lifull.blog メッシュオブジェクト編集の基本操作 全選択と解除 「A」キー 任意の範囲選択・選択解除 「C」キー 押し出し 「E」キー インセット(面を内側に押し出す) 「I」キー 面張り(辺作り) 辺 or 点選択 →「F」キー 選択された辺で囲われた部分に面を張ることができます。 ループカット 「Ctrl+R」キー 面を任意の数で分割することができます。 頂点を滑らかにする 「Ctrl+V」キー→Smmth Vertex メッシュオブジェクトの基本操作(コマンド)として、これらはよく使うと思うので、コマンドを覚えておくとよいです。 次に、便利機能です。ホームズくんを作るときにも使用しています。 メッシュオブジェクト編集の便利機能 ミラー(Mirror Modifier) 左右対称のオブジェクトを作るとき、片方つくったらもう片方は鏡面として自動的に同じものが仕上がる機能です。ホームズくんだと胴体や腕などで使用してます。 メッシュオブジェクトを選択→「 Modifierタブ 」→「 ミラー 」 ミラー接面が裂けないように「 クリッピング 」をチェック これでミラー設定完了です。左右対称のメッシュオブジェクトを作りたい時に便利です。 細分割曲面(Subdivision Surface Modifier) 面を自動計算して分割してくれます。ホームズくんだと蝶ネクタイなど曲線が細かいオブジェクトに使用しています。 オブジェクトモードだとメッシュオブジェクトはどちらも細かいですが、 編集モードの実際のメッシュオブジェクトは大雑把な形です。 細分割曲面を使うことで、大雑把なメッシュオブジェクトでもきれいな曲線を自動で計算して造形を整えてくれます。 クリース 細分割曲面(Subdivision Surface Modifier)を使用した際のエッジの鋭さを決めることができるパラメーターです。滑らかさを調整・なくしたいときに役立つ機能です。ホームズくんだと帽子のつばの付け根などで使用しています。 Before After テクスチャペイント おそらくデザイナーが一番楽しい工程ではないかと思います。作ったメッシュオブジェクトに色をつけていく作業です。正確には メッシュオブジェクトに貼り付けるテクスチャ画像を作る行程 です。 例えばこういう画像をつくることになります。 ホームズくんの胴体(服)のメッシュオブジェクトのテクスチャ画像です。下記のように作られた胴体のメッシュオブジェクトに対して、展開図のようなテクスチャ画像に色を塗ったものです。 Blender上で、直接3Dモデルに対して色を塗ることもできますし、画像を出力して他のツールで塗ることもできます。個人的には使い慣れているツールで作業するのがよいと思います。 おすすめの作業工程 Blender上でざっくりと色を付ける Photoshopなどの使い慣れたツールで細かい表現や色を塗る Blenderに入れなおして微調整する ホームズくんのテクスチャでこだわった部分はコート影・裾表現です。貼り付けるメッシュオブジェクトに凹凸を作っていないので、テクスチャでそれっぽく表現しています。 気を付けるところとしては「立体に画像を貼り付けている」という点です。下書きのイラストデータをそのまま貼り付けると、立体であるため、パーツ幅が変わってきて違和感がでてきてしまいます。メッシュオブジェクトが球体であれば、基本的には各パーツが離れて見えたり、伸びて見えたりしてしまうため考慮が必要です。 テクスチャが完了したら、いよいよアニメーションを設定して3Dモデルを動かしてみましょう。 実際の動くホームズくんが見れるAppはこちら です。 LIFULL HOME'S(ライフルホームズ) LIFULL Co., Ltd ナビゲーション 無料 アニメーション編へつづく。
アバター
こんにちは。 LIFULL HOME'Sアプリのデザイナーのこばやしです。 2017年9月にiOS ARKitを使った新機能「 ARお部屋計測 」をリリースしました。 この機能は「カメラをかざすとホームズくんが出現して、走ってお部屋を計測」してくれます。ここで登場するホームズくんの3Dモデルを作成しました。 www.lifull.blog iOS ARKit・Android ARCoreの技術により、AR/VR対応の端末・アプリが増えていくことを考えると、デザイナーがモデリングをする機会が増えてくると思い、私と同じく 3Dモデリングをしたことがないデザイナー向け に調べたコト・苦労したコトをまとめました。 全3編の構成で、1編目は「準備編」です。 はじめに 私は「習うより慣れろタイプ」です。そのため、初歩的な内容の記事になりますが、3Dモデリングの初心者入門として読んでいただければ幸いです。 3Dモデルの役割 「ARお部屋計測」では、アテンドとして3Dホームズくんが登場します。3Dモデルを用いることにより、世界観の演出に効果があり、情報をエモーショナルに伝えることができ、表現に広がりを与えてくれます。 iOSのLIFULL HOME'Sアプリで実際にご覧いただけます。 LIFULL HOME'S(ライフルホームズ) LIFULL Co., Ltd ナビゲーション 無料 モデリングのツール 今回はBlenderというツールを使用しました。Blenderはオープンソースの3DCG制作ツールです。 https://blender.jp/ 理由 無料。(開発規模によってライセンスは要確認です) ARKitやUnityとの相性がよい。 操作が独特 「何かオブジェクトを選択する」「手のひらツールのように画面を動かす」などの慣れ親しんだ操作が、Blenderでは異なる操作になります。とりあえず触ってみる自分のようなタイプの人間が最初に困惑するポイントだと思うので、基本操作をIllustratorと比較してみます。 オブジェクトの選択 Illustrator:左クリック Blender: 右 クリック 右クリックはプロパティという固定観念。 視点を移動する(手のひらツール的な動き) Illustrator:space+左クリック&ドラッグ Blender:Shift+ ホイール押し込み &ドラッグ ホイールを押し込むという発想。 視点のズーム Illustrator:option+ホイール Blender:ホイール これはわかりやすい。 AdobeソフトとBlenderを往復して作業しているときは誤操作ばかりしていました。そして「視点操作」は、マウスホイールを頻繁に使用しますので、ホイール付きマウスでの作業をお勧めします。 視点移動のショートカット オブジェクトを各方面から確認するためのショートカットです。よく使う機能なので覚えておくと便利です。 「1キー」正面から 「1キー+ctrl」背面から 「3キー」右面から 「3キー+ctrl」左面から 「7キー」頭上から 他にも、各軸に15度づつ回転、設置したカメラビュー表示などテンキーで操作できます。 モデリングの準備 作業がしやすい画面分割 3Dなので色々な角度でオブジェクトを確認します。主に作業するメインビューと、上からと横からの固定ビューを常に開いて操作していました。作業しながら自分なりによく使う画面を分割表示しておくと作業が捗るかと思います。 下絵を配置する ホームズくんがモデルなので、形状は頭に入っていますが、細かいパーツのバランスなどを感覚で作っていくのは難しいので、3Dモデルの下絵を準備し設置します。 3D View上で「N」キーを押して「プロパティパネル」を表示 「下絵(Background Images)」をチェック 絵を配置する方向、配置するフォーマットを指定 下絵を開くと表示 各画面毎に設定が可能なので、正面・横・頭上・背面からの下絵を準備できると作りやすいです。 今回はモデル作りの前提と実際にメッシュオブジェクトに触れる前工程で調べたコトをまとめました。次回は具体的に3Dモデリング時の便利機能などをまとめようと思います。 つづく
アバター
こんにちは、新UX開発部でLIFULL HOME'Sアプリのサービス企画をしていた島田真寿美です。 (記事アップ時には別部署に異動しているため過去形です) 今回は、LIFULL HOME'S iPhoneアプリがiOS11新機能「ARKit」に対応するまでのストーリーをお伝えしたいと思います。 ARKitに対応しました ARKitを使った「ARお部屋計測」 LIFULL HOME’S iPhoneアプリ内に「見学メモ」という機能があります。 物件見学時に「見学メモ」を利用し部屋を撮影すると、撮影した時間と位置情報を利用して、写真を一つのフォルダにまとめる機能です。 今回はこの「見学メモ」をよりユーザー価値の高いものにするべく、ARKitを使い「ARお部屋計測」を開発しました。 「ARお部屋計測」は、カメラを立ち上げると部屋の中にホームズくんが出現します。 部屋の角をタップするとホームズくんが走り出し、そのまま一周すると1cm単位で壁の長さが計測され部屋の寸法が画像化、保存される機能です。 iOS11の方は「右下便利機能タブ > 見学メモ > 間取りをつくる」から体験してみてください。 走行中は目がキラッキラ iOS新機能への対応 2017年9月20日にiOS11がリリースされました。 iPhone/iPad使いのみなさんもアップデートされたでしょうか。 LIFULL HOME’Sアプリも徐々にiOS11ユーザー の割合が増えています。 LIFULL HOME'S iOSアプリ開発チームでは、毎年Appleの発表する新機能をいち早く取り入れてリリースしています。 自社のサービスに合う/合わないはありますが、iOS Developerは星の数ほどいれど、ここまで能動的に取り組めているアプリはそれほど多くはないのではないかと思います。 ・LIFULL HOME'S iOSアプリの対応遍歴 2015年5月 Apple Watch対応 (現在はサービス提供終了) 2016年9月 iMessage Stickers、Rich Notifications対応 2017年3月 Apple TV対応 今年は、iOS11がリリースされる2日前の9月18日に、iOS11の新機能ARKitに対応したバージョン3.13.0をリリースしました。 LIFULL HOME'S(ライフルホームズ) LIFULL Co., Ltd ナビゲーション 無料 なぜ毎年のように新機能開発に取り組むのか? リソースが有り余ってるからよ!というわけもなく、毎回 (((今回はあかん))) を乗り越えてチームで協力して対応しています。 LIFULL HOME’SアプリチームにもKPIがあり、もちろん業績貢献としての数値目標もあります。 人員を割いてApple WatchやApple TVなどの新デバイス、iOSの新機能に対応するよりも、アプリのCVRやDAU向上施策を行ったほうが短期的には数値目標の達成に繋がるでしょう。 しかし、「新技術への対応による技術力向上」「ユーザーへ新しい体験の提供」など、短期的な数値では測れない価値を創出することで、『常に革進することで、より多くの人々が心からの「安心」と「喜び」を得られる社会の仕組みを創る』という経営理念の実現したいと思い、日々取り組んでいます。 ARKit開発してる場合じゃない 複数の施策がすでに並行しており、今回は稀に見る過密スケジュール。「機能を可能な限り削いで、壁の長さを測るだけならギリいけるか?」の状態でした。 しかし、最終的にリリースしたものは、ホームズくんがシーンに応じてアニメーションや表情を変えながら走り計測してくれるという、計測よりもホームズくんの調整に工数がかかったものになっています。 なぜ工数をかけてホームズくんを追加する? 「ARKitの開発」が目的になると、ユーザーへの価値提供ではなくチームのエゴのための開発になってしまいます。 「LIFULL HOME’Sだからできること、ができないのであればやらない」を共通指標として、ディレクター・エンジニア・デザイナーが集まってやる/やらないの議論を重ねました。 ARお部屋計測をはじめ、LIFULL HOME'S iOSアプリでは「ユーザーとのコミュニケーション」「楽しさ」「使いやすさ」にポイントを置いています。 ただ「壁の長さが測れる」という機能では、ユーザーに機能価値は提供できても、機能を使う中でエモーショナルな体験は提供できません。 それは「LIFULL HOME’Sだからできること」ではなく、違うアプリが提供しても良い機能になってしまいます。 例えば、ARKitを使う場合、平面を認識するまでユーザーにiPhoneを動かして部屋を見回してもらう、という作業が発生します。 テキストで「平面を認識するためカメラを動かしてください 」と訴求することもできますが、ユーザーにとっては「作業」となり、「楽しい」ものではなくなります。 ARお部屋計測では、カメラを立ち上げるとまず最初に「ボクを探してねっ」というメッセージが表示され、ホームズくんとユーザーとのコミュニケーションが始まります。 「ホームズくんを探す」ことでカメラを動かしてもらい、平面が認識されたらホームズくんが登場し「見つかっちゃったっ」とリアクションします。 この一連の流れにより、「作業」を「コミュニケーション」に変え、「楽しさ」に繋がるように調整しています。 また、ホームズくんが走って部屋を計測するため、 ・ホームズくん出現時:走るためのストレッチ中 ・1周走り終わった時:ぜぇぜぇ疲れている というようなストーリーにし、最後は「頑張ったから画像を見てね」というホームズくんのメッセージにより、自然とユーザーが行動するような動線にしています。 「部屋の計測ができた」という機能価値を提供すると同時に、このような双方向のコミュニケーションを通してホームズくんのブランディング訴求も担っています。 「ホームズくんがいるサービス」という認知の向上から、最終的にロイヤルユーザーとしてアプリを活用し続けてもらえるよう心がけています。 はじめて3Dホームズくんを作るデザイナーとレクチャー中のエンジニア だんだん動いてきた リリース後 ナビゲーションカテゴリとARKitカテゴリにダブルでフィーチャーされました。 iOS11のリリースと同時リリース、ホームズくんが走る、このどちらかが欠けていたら、おそらく掲載されていないと思います。 うれしい まとめ 「面倒」を「楽しく」したい 私はユーザーが「楽しい」体験となることを軸に置いてこれまで施策をしてきました。 住み替え経験のある方は、住み替え最中に「面倒」と感じる部分がいくつもあったかと思います。 なかなか気になった物件に出会えない、引っ越しの荷物をまとめるのが面倒、、など。 アプリ改善の中で面倒を解決できることを前提として、多くの方に訪れる住み替えという活動が、人生の中で少しでも楽しい期間にできることでユーザーに選ばれるアプリとなり、結果業績への貢献にもつながると信じて取り組んでいます。 おまけ メインエンジニアは新卒1年目 今回、「ARお部屋計測」のメインエンジニアを今年4月入社のたらちゃんが務めてくれました。 私やデザイナーからのフィードバックをもとに、計測した値の見やすさやホームズくんとコミュニケーションが取れるような走行スピードなど、連日細部まで調整してくれました。 SNS投稿用に、「は、恥ずかしいです…」と言いながらも人通りの多い社内で廊下に寝転んだりと、リリース後も体を張ってくれています。 まだ(撮影終わんないん)ですか?と今までにない強い口調のたらちゃん たらちゃんのARKitについての記事はこちら qiita.com 新卒活躍中!メンバー募集中だよ! LIFULL気になってきたって方、絶賛メンバーを募集しています。 弊社1FのLIFULL Tableのランチを食べるついでに、一度来てみてください。 紅茶ブリュレめちゃおいしいです。 以下よりご応募お待ちしてます! http://recruit.lifull.com/recruiting-information 最後までお読みいただき、ありがとうございました。
アバター
LIFULL FinTechの島田です。 LIFULL FinTechで運用する LIFULL保険相談サイト の一部ページにAMP(アンプ)を導入しました。 その際に検討した内容とリリース後しばらく運用してみて得られたAMPに関する知見を共有いたします。 AMP(Accelerated Mobile Pages) AMPはGoogle社とtwitter社が共同で推進しているプロジェクトです。 もともとはネットワーク環境や端末のハードウェアリソースが足りない地域向けにデザインされたものと言われています。 AMPはAMP-HTML、AMP-JS、AMP-CACHEの3つのコンポーネントで構成されています。 AMP-HTML AMP-HTMLはAMP用にHTML5の拡張として設計されたHTMLです。 AMPページとして認識されるために通常のHTMLとは異なる記述が求められます。 大きいところとしては以下の3点かと思います。 imgタグの代わりにamp-imgタグを使用する必要があります cssはhead内に展開する必要があります 構造化データを挿入してページタイプを宣言する必要があります ページタイプについてはすべてのカテゴリがカバーされているわけではありませんが、自サイトと乖離したページタイプを宣言するとスパム行為としてみなされる恐れもありますので注意が必要です。 定義済みページタイプはAMP Projectの ガイド をご参照ください。 AMP-JS AMPページではAMPプロジェクトが認可するJavascript以外は実行できません。 ここがAMPページを作る上でつらいところでもあるのですが、軽量化とキャッシングのために必要なものだと受け入れましょう。 サイトによってはGoogle Tag Manager(GTM)を使用してASPなどが提供するカスタムJSを実行しているケースも多いと思います。 その場合もカスタムJSは実行できませんので注意が必要です。AMP用のGTMコンテナを作成し コンテナ内で許可されているタグ のみ実行可能になります。 開発時に調査した際にはAMPページから一度非AMPページへ遷移させて計測ポイントを経由させているサイトもありました。ただこの場合はユーザの遷移が1段増えますのでユーザビリティの観点から仕様の検討が必要だと思います。 AMP-JSには基本的なUIはカバーされています。LIFULL保険相談でもグローバルメニューや写真表示、アコーディオンなど、AMP-JSのコンポーネントを使用して運用中の非AMPページとUI的に遜色無いレベルのものを作成できました。 AMP-CACHE AMPページを作成する場合に既存ページをどのように扱うか、サイトのURL戦略とすり合わせが必要になります。サイトの流入数に影響を及ぼしますので自サイトのAMP化のロードマップと既存のサイト戦略を慎重に整理して考える必要があります。 アダプティブデザイン AMPページを新規に作る(1) 既存のモバイルページをAMP化する(2) レスポンシブデザイン AMPページを新規に作る(3) 既存のモバイルページをAMP化する(4) PC向けとモバイル向けのページをそれぞれのURLで配信している AMPページを新規に作る(5) 既存のモバイルページをAMP化する(6) web検索で事例がよく上がるのは(1)のケースだと思います。多くの実績があり資料も豊富なのですが、このケースではページが3種類(PC向けページ、モバイル向け非AMPページ、モバイル向けAMPページ)出来上がることになります。同一URLでページの種類が増えるとそこにかける改修コストもn倍になってしまうデメリットもあります。 今回AMP化を検討したページはユーザの回遊フロー上、末端のページになりますので頻繁に改修が入り得るものでした。さらにクライアントからの入稿データが直接表示されるものでもありました。 また、偶然にもGoogle社のAMP推進担当の方とお会いすることができました。参考事例が少ないことに対するリスクはコミュニケーション量で回避できましたので、既存のモバイルページをAMP化する(2)の方針を選択しました。 UAによる振り分け 検索ボットがAMPページを見つけるためには以下の方法があると言われます。 sitemapの送信 非AMPページのlink-rel属性 ダイレクトアクセス web上の資料では2の経路でAMPページが検索ボットの目に止まることになります。LIFULL保険相談の事例では既存ページのサーバが直接AMP-HTMLを返します。PC向けとモバイル向けでボットが別になっているので問題ないとされつつも事例があまりないということで、実験の結果を経てAMP-CACHEにモバイル向けページの内容がキャッシングされることが確認されました。 AMP対応してわかったこと AMP化を実装して感じたことがいくつかありました。 SERPをイメージする URL設計から実際に AMPページとしてインデックスされるところまでシナリオをイメージできるか、ということになります。AMP化する以上はAMP-CACHEに載り自然流入やリッチカードによるSEO効果を得たいところです。ただGoogle社のサーチに関する情報は秘匿されており確たる情報がありません。その中でも理論的な道筋と実証によりひとつずつシナリオを練り上げる必要があります。 URLの設計 既存のwebサイトでよくあるのはURLの最後に「/amp」のようなものがついていてそれがAMPページとなっているケースが多いです。ただURLはパンくずと厳密に対応させているサイトも多いと思います。この方法だとURLが示す情報構造が崩れ、設計上の柔軟性が失われかねません。また前述の通りページの種類も増えますので運用コストも増加します。とはいえ既存ページをAMPページで上書きすることによる技術的・ビジネス的なリスクを許容できるかどうかを判断する必要があります。 Javascriptが制限される これはもうどうしようもないですね。言ってもしょうがないところがあります。とはいえajaxを使いたかったり計測用のカスタムタグを入れたかったりすることは多いと思います。すでにリリース済みの運用ページならなおさらだと思います。また、AMPを導入することを前提にしているとそこが技術的な判断の境界線になります。Javascriptが制限はされますがその分ロードする外部ファイルがスリム化されますのでダイレクトアクセスでもロード時間が短縮されることが多いと思います。AMPを導入する際には機能的な面からもメリットとデメリットを天秤にかけ長期的に検討する必要があると言えます。 まとめ AMP導入によりインデックスも得られ、高速なレンダリングが実現できユーザビリティの向上が得られました。また国内の保険業界の中でもいち早く最新技術を導入することに成功しました。AMPは制限が多いことは事実ですがPWAなどと共に今後の技術展望も開けています。今回サイト内のすべてのページで導入するまでは至っていませんが、今後はAMPの効果を最大化させていきたいと思います。本記事がAMP導入において有益な情報となりうることを願います。
アバター
お久しぶりです。技術開発部の相原です。 昨年度は技術基盤部として mrubyを導入したり していましたが今は少しレイヤーが開発寄りになりました。 とはいえ依然として技術基盤も見ていて、最近はご多分に漏れず機械学習を用いた技術基盤の改善に興味があります。 そんな中でここ数ヶ月メインの業務の合間の時間を使って試験的に機械学習を導入していたので、今回は技術的負債の高利子クレジットカードと呼ばれる機械学習を導入する中でどのような工夫をしたかということについて書きたいと思います。 機械学習については門外漢なので、ここではモデルの訓練などのプラクティスに関しては触れません。 (一部暗黙的に深層学習を前提としている箇所がありますのでご了承ください) 技術的負債の高利子クレジットカード Data Dependencies Cost More than Code Dependencies System-level Spaghetti Dealing with Changes in the External World Digdagによるアプローチ Digdagとは 実際にワークフローを構築してみる データの取得 学習 fine-tuning 予測 MItamaeによるワークフロー定義ファイル生成の自動化 最後に 技術的負債の高利子クレジットカード 機械学習は運用における課題が多いことから技術的負債の高利子クレジットカードと呼ばれることがあります。 初出は恐らくGoogleが2014年のNIPSで発表した論文 Machine Learning: The High Interest Credit Card of Technical Debt で、論文中では以下の要因によって技術的負債が生み出されるとされています。 複雑なモデルが外部データに依存することによるシステムの抽象境界の侵食(Complex Models Erode Boundaries) コードへの依存性よりも強いデータへの依存性(Data Dependencies Cost More than Code Dependencies) 複雑なパイプラインの乱立に代表されるシステムのスパゲッティ化(System-level Spaghetti) 不安定な外部世界への依存(Dealing with Changes in the External World) 今回はこれらの課題を解決して安定運用を実現すべく、この中のシステム面に着目しました。 Data Dependencies Cost More than Code Dependencies データへの依存性が強いことに関する問題として、入力として与えられるデータが不安定であることによるモデルへの影響が挙げられます。 入力値となるデータの一部が欠損している可能性やそもそもデータの品質に問題があるケースが考えられ、またデータが時の変化によって活用されなくなったり精度に寄与しないことが後から分かることもあります。 そのためシステムとしてこれらの措置を講じることで不安定なデータによるモデルへの影響を検知できるようにする必要があります。 入力データの静的解析 入力データのバージョン管理 不要な特徴量を取り除くための継続的な精度測定 System-level Spaghetti 機械学習を用いたシステムが陥りやすい問題としてグルーコードデザインパターンというものが存在します。 これは一つのシステムで多くの問題を解決しようとした際に発生しやすく、データの前処理に係る複雑なパイプラインの乱立によってシステムの大部分をグルーコードが占めることとなります。 こうしたグルーコードデザインパターンはシステムのメンテナンスを困難とし、時として再実装が必要となるケースもあります。 また機械学習を用いたシステムは往々にして膨大な設定を必要としますが、これらの設定はモデルに大きな影響を及ぼすものの、コードに関するテストは行われやすい一方で設定のテストは軽視されがちな傾向もあります。 他にも構築したシステムを自立させるためにはタスクのスケジューリングも必要となり、更に転移学習を適用するとなるとそれらのスケジューリングにも依存関係を持たせる必要が出てくることを考慮する必要もあるでしょう。 そのためシステムとしては以下のような要件が求められることになります。 パイプラインの責務の分離 設定値のバージョン管理とテスタブルな設計 各タスクのスケジューリングと依存管理 Dealing with Changes in the External World 機械学習を用いたシステムは外部世界の変化に直接影響される事が多くなります。 外部世界が安定することは稀であり、複数の特徴量から学習していた場合にそれらの特徴量に相関がなくなりモデルに影響を及ぼすといったケースが考えられます。 外部世界の変化によるモデルへの影響を検知するため、システムには以下が求められることになります。 精度のモニタリングとアラート サニティチェックとしての異常値の検出 Digdagによるアプローチ ここからはそれぞれの課題についてDigdagを用いてどのようなアプローチを取ったかということを紹介していきます。 Digdagとは まずはじめに Digdag とはオープンソースのワークフローエンジンです。 .dig というyamlによく似た設定ファイルによって各ジョブの順序や並列度、リトライ処理や処理に失敗した際のアラート処理を定義することができます。 サーバモードで起動することによって常駐してワークフローの定期実行のスケジューリングを行うことも可能で、その際にワークフロー間の依存関係を持たせることも可能です。 今回は機械学習における複雑なワークフローに対してこのDigdagを適用しました。 実際にワークフローを構築してみる これまでのシステムに求められる要件をまとめると以下のようになります。 入力データの静的解析 入力データのバージョン管理 不要な特徴量を取り除くための継続的な精度測定 パイプラインの責務の分離 設定値のバージョン管理とテスタブルな設計 各タスクのスケジューリングと依存管理 精度のモニタリングとアラート サニティチェックとしての異常値の検出 これを踏まえてワークフローを構築してみましょう。 データの取得 # daily_etl.dig schedule : daily> : 00:05:00 +foo : _retry : 3 +get_foo_metrics1 : sh> : SESSION_TIME=${session_time} python elasticsearch_client.py foo metrics1 1day > foo_metrics1_daily.csv +vaidate_foo_metrics1 : sh> : bash data_validator.sh foo_metrics1_daily.csv +commit_foo_metrics1 : sh> : bash commit.sh foo_metrics1_daily.csv +get_foo_metrics2 : sh> : SESSION_TIME=${session_time} python elasticsearch_client.py foo metrics2 1day > foo_metrics2_daily.csv +vaidate_foo_metrics2 : sh> : bash data_validator.sh foo_metrics2_daily.csv +commit_foo_metrics2 : sh> : bash commit.sh foo_metrics2_daily.csv まず最初に作ったのは入力データにまつわるワークフローです。 ここではデータの取得・静的解析・バージョン管理を逐次的に行います。 各プログラムの内容についてはドメインによって大きく変わるので、以下のように定義します。 elasticsearch_client.py.py : 引数に与えられたクラスタ名、メトリクス名、期間を元にElasticSearchからメトリクスを取得する data_validator.sh : 引数に与えられたデータの静的解析を行う commit.sh : 引数に与えられたデータをオブジェクトストレージに保存してバージョン管理を行う Digdagでは session_time 変数としてワークフローが開始された時間を保持しているため、逐次的に処理をした場合でも各ジョブに同一の時間を与えることができます。 また、 _retry パラメータで任意の回数リトライさせることも可能です。 Digdagがワークフロー間の依存関係を持てることから、ここでは学習・予測とはワークフローを分けることで再利用性を高めています。 学習 # daily_train.dig schedule : daily> : 00:10:00 +wait_daily_etl : require> : daily_etl +foo : +train : _parallel : true +train_foo_metrics1 : sh> : python train.py foo metrics1 foo_metrics1_daily.csv +train_foo_metrics2 : sh> : python train.py foo metrics2 foo_metrics2_daily.csv +cross_validation : _pararell : true +cross_validation_foo_metrics1 : sh> : python cross_validation.py foo metrics1 +cross_validation_foor_metrics2 : sh> : python cross_validation.py foo metrics2 _error : sh> : bash notify.sh 学習を行うにはまず事前にデータを取得している必要があります。 Digdagでは require オペレータでワークフロー間に依存関係を持たせる事ができるので、これによってデータの取得を待ってから学習を行う train.py を実行します。 _pararell パラメータを指定すると以下のジョブを並列に実行することができます。 また、学習を行う際には過学習に気をつけなければなりません。 そこで交差検証をして過学習が起きていた際にexit status 1を返す cross_validation.py を用意して、エラー時に発火する _error パラメータを利用して精度のモニタリングを行います。 fine-tuning 転移学習を適用して日次の学習結果を利用した週次のfine-tuningを行いたいといった複雑な依存関係も定義することができます。 # fine_tuning.dig schedule : weekly> : Mon,01:05:00 +wait_daily_train : loop> : 7 _do : require> : daily_train session_time : ${moment(last_session_time).add(i, 'day' ).format()} +foo : +train : _parallel : true +fine_tuning_foo_metrics1 : sh> : python fine_tuning.py foo metrics1 +fine_tuning_foo_metrics2 : sh> : python fine_tuning.py foo metrics2 loop オペレータで require による待ち受けを繰り返しで行うことによって日時の学習結果が出揃ったら実行という依存関係を実現しています。 予測 もちろんdaily, weekly以外にも柔軟なスケジュール定義が可能です。 予測といった頻繁に実行したいワークフローは以下のように定義します。 # predict.dig schedule : minutes_interval> : 5 +foo : +predict : _parallel : true +predict_foo_metrics1 : sh> : python predict.py foo metrics1 +predict_foo_metrics2 : sh> : python predict.py foo metrics2 _error : sh> : bash notify.sh 先ほどと同様に異常値が検出されたらexit status 1を返すようにしてアラートすることでモデルが正常に予測できているかどうかをモニタリングすることが可能です。 予測とは別のワークフローでPrediction Biasを記録してモニタリングするといったアプローチも有効になります。 その際は require オペレータで predict.dig を依存とするとうまく動くでしょう。 MItamaeによるワークフロー定義ファイル生成の自動化 ワークフローエンジンはDigdag以外にも多く存在しますが、Digdagの特徴はDSLでプログラマブルにワークフローを定義できる点にあると思います。 そこで今回はワンバイナリで動いてmrubyでプロビジョニングを記述できる MItamae を利用して、プロビジョニング時にワークフロー定義ファイルも自動生成するようにしました。 yaml = YAML .load_file( File .join(__dir__, ' ../config.yml ' )) file ' /opt/ml/predict.dig ' do jobs = yaml.each_with_object( '' ) do |( key , value ), string | value.keys.each do | metrics_name | string << <<- EOS + #{ key } : +predict: _parallel: true +predict_ #{ key } _ #{ metrics_name } : sh>: python predict.py #{ key } #{ metrics_name } EOS end end content <<- EOS schedule: minutes_interval>: 5 #{ jobs } _error: sh>: bash notify.sh EOS end これはMItamae( Itamae )の表現力とDigdagのDSLがあってこそで、事前に機械学習に用いる設定値とともにワークフロー生成に必要な情報を記述した以下のような config.yml を利用してワークフローを自動生成します。 そのため異なる設定値もこの config.yml に設定を追加するだけでデプロイすることが可能となります。 # config.yml foo : metrics1 : fine_tuning : - 'weekly' lstm : unit : 10 window_size : 10 metrics : elasticseaerch : index : 'foo_metrics1' metrics2 : lstm : unit : 6 window_size : 6 metrics : elasticseaerch : index : 'foo_metrics2' ワンバイナリで動くプロビジョニングツールということもあり、別の環境で十分なテストをしてからプロダクションに入れるといったような事も容易になるでしょう。 これによってワークフローの構成管理をコード化してレビューフローに乗せるだけでなく、設定値についてもそのプラクティスを適用し、同時にテストしやすい仕組みも実現することができました。 最後に 疑似コードだらけになってしまいましたが、論文中にもあるように機械学習を用いたシステムを安定運用するためにはエンジニアとリサーチャーの歩み寄りが重要であると考えています。 実際にこうしたワークフローエンジンを導入することでエンジニアリングのノウハウを機械学習を用いたシステムにも適用することができました。 今回は小規模なシステムのため一人で構築してしまいましたが、論文中にはエンジニアとリサーチャーが同じチームで働いているという記述もあり、大規模なシステムになるにつれその重要性は高まるでしょう。 機械学習を用いたシステムはまだまだ運用実績が少ないですが、技術的負債の面にもしっかりと目を向けて安定運用を目指していきたいです。 ご利用は計画的に。
アバター
こんにちは! 新卒採用デザイナー職担当の水村です。 今回は、「デザイナーの企業選び」をテーマに、LIFULLに新卒入社した若手デザイナー3名のインタビューをお届けします。18卒・19卒の学生の皆さんの参考になれば嬉しいです! では、さっそく話を聞いていきましょう!! (左)ニックネーム:こさい 新卒3年目。大学時代は、学校でデザイン全般について学びながら、アルバイトでWEBサイトの制作に従事。1~2年目は「LIFULL HOME'S」新規サービスのサイトデザイン、プロモーションを目的とした紙、リアルイベント、ノベルティのデザインからディレクションまで幅広く携わる。3年目から自ら希望を出して異動した部署でデザイン、企画から、広告運用まで担当。 (中)ニックネーム:ぼこ 2017年入社のピカピカの新卒1年目。大学時代はプロダクトデザインを専攻しながら、学生団体に所属し、地域活性化のための冊子を制作。デザイナーとして参加した全国規模のHackathonでの優勝経験あり。入社後は、「LIFULL HOME’S」でデザイナーとして修業中! (右)ニックネーム:がらし 新卒2年目。学部時代はロボット工学を専攻し、大学院では人間工学に基づくWebアニメーションについて研究。Life is techのインターンも経験。現在は「LIFULL HOME’S」のAndroidアプリのデザインやプロモーション動画の編集などを担当。 就活の軸 水村:早速だけど、3人はどんな軸で就活していたの? がらし:初めてのインタビューなので緊張しますね(笑)。 水村:飾らずに素で話してもらえたらOKですよ! がらし:僕はとにかくデザインやものづくりが大好きで、同じ熱量でものづくりをしている会社を探していました。最初から絞ることはせず、けっこう多くの企業を見ていましたね。 こさい:私は人に喜んでもらうのが好きな性格なので、ユーザー目線を最も大切に働きたいと思っていました。そういう意味で、ものづくりに真剣な会社を探していましたね。 ぼこ:私も大学時代の地域活性化の活動などから、人の暮らしを良くしたいという想いがあって、それを叶えられる会社で働きたいと思っていました。自社サービスの会社と制作会社で迷いましたが、対クライアントではなく対エンドユーザーの立場でサービスをつくりたいと思い、最終的には自社サービスの会社に絞って就活をしていました。 水村:ぼこちゃんは、大学ではプロダクトデザインを専攻していたけど、どうしてWebデザイナーを選んだの? ぼこ:Webデザインは、ユーザーの反応に対してすぐに改善することができるので、PDCAを早く回せるのがいいと思いました。プロダクトデザインは一度つくってしまうと後から変更するのが難しく、時間もかかるので、私には前者の方が合っているなと思ったんです。ユーザー目線で常にいいものをつくり続けたいと考えていました。 LIFULLを選んだ理由 水村:3人とも多くの会社を見ていた中で、LIFULLを選んだ理由って何? こさい:なんだか3年前の面接を思い出しますね(笑)。 がらし:LIFULLは、真剣にユーザーのことを考えている社員ばかりで、単純にかっこいいなって思いました。この人たちと働きたいって。 ぼこ:私も先ほどの通り「人の暮らしをよくしたい」という想いがあったので、LIFULLはドンピシャでしたね。暮らしの「不」を解消するというビジョンにとても共感できて、「あ、ここしかない!」と。 こさい:逆に、私は疑い深いので(笑)、他に内定をいただいていた2社ととても迷っていましたね。 水村:とても迷っていたよね(笑)。こさいさんは、迷っていた中で何が決め手だった? こさい:最終的には、がらしとぼこちゃんと同じですね。一番の決め手は、LIFULLは本当にユーザーの暮らしや人生を考えてサービスをつくっていると感じたことですね。選考で会った一人ひとりの社員からとても伝わってきました。 がらし:僕も、言っているだけではなく、実行しているのがカッコいいなと思いましたね。LIFULLは、アプリのレビューページのユーザーのコメントに対して、とても細かく返信していたのが印象的でした。 水村:デザイナーに限らず、LIFULLのビジョンや利他主義という価値観に共感して入社を決める人がとても多いよね。採用担当者としても、スキルだけではなくLIFULLのビジョンや文化に合っているかを重視して採用活動をしています。 LIFULLでのキャリア・働き方 水村:みんなは、入社してからどんなことに挑戦してきたの? ぼこ:私はまだ入社4か月ほどですが、サイトのバナーやクライアントに配布する卓上カレンダーのデザインなど、ユーザーやクライアントが目にする部分の制作を任せていただいています。 こさい:LIFULLは、早い段階から任せてもらえるよね。私も入社して数ヶ月でCMや交通広告といったプロモーションに関わる大きなプロジェクトに携わらせてもらいました。私はいろいろなことに興味があったので、その後も広告からサービスまで幅広いデザイン業務に取組んできました。 がらし:僕は、LIFULL HOME’Sの新築一戸建てマーケットと中古一戸建てマーケットの統合というプロジェクトに関わらせてもらいました。既存の仕組みを変えるという非常に大きなプロジェクトでしたが、デザイナーは2年目の僕1人だけでした。大変なこともありましたが、PM、エンジニア、ディレクターと協力し、何とか約3ヶ月間で完遂!入社2年目でもこういった大きなプロジェクトを任せてもらえることは、プレッシャーもありましたが、その分やりがいを感じました。 こさい:プレッシャーを感じることはあるよね。(笑) でも、その先に実感する成長もある。1年目に「快適通勤検索」という新規サービスの立ち上げに参加した際、企画から関わらせてもらいました。ユーザー目線で本当にいいサービスにするために、他職種のメンバーと社歴の長短に関係なく本気でぶつかりながら議論して制作したのは良い経験になりました。3年目の今年からLIFULL HOME’Sの不動産投資部門に自分で希望を出して異動しました。サービスをより良くするために、これまでの経験を活かしてデザインだけでなく企画や広告運用にも携わらせてもらっています。 こさい:LIFULLには、キャリア選択制度があり、自分から手を挙げて部署異動や職種変更ができるので、自分のやりたいことに挑戦しやすい環境だと思いますね。 ※キャリア選択制度:半年に1度、上司と面談を行い、中長期的なキャリアビジョンを明確にし、異動希望や職種変更の希望を申請することが可能。毎回希望者の約60%が承認されている。 ぼこ:日常の業務でも、先輩や上司が親身になって相談にのってくれるので、自分の意見やアイデアを言いやすいです。むしろ新人かどうかなど関係なく意見を求められます(笑)。 がらし:LIFULLは、「あらゆるLIFEを、FULLに。」することを目指している会社なので、まずは会社や個人として「こうしたい」というビジョンや意志を起点に仕事をしているのだと思います。デザイナーに限らず多くの社員が自分の想いを持って働いていますね。 こさい:自社サービスの会社なので、デザイナーでも企画段階から関われることも多いですしね。自分のやりたいことや想いを大切にしたい人にとっては、ベストな環境だと思いますね。 就活生へメッセージ 水村:最後に、就活生の皆さんへメッセージをお願いします! ぼこ:ものづくりをするときに大切にしているものは、それぞれ違うと思います。カッコいいデザインが好きな人、新しいものをつくるのが好きな人・・・。その自分の軸に合ったものづくりをしている会社に入れば、きっと仕事は楽しいと思いますよ! がらし:僕も同じ感覚です。自分の好きなことややりたいことをやってほしいですね。そうすればモチベーション高く働けます。あとは、一緒に働く「人」も大切にしてほしいですね。 こさい:新卒は自分で自由に選べる貴重なタイミングなので、後悔のないように色々な会社を見てください!そして、ぜひ自分のやっていきたいことに挑戦してほしいなと思います。 水村:3人ともありがとうございました!就活生の皆さんに、少しでも参考になれば嬉しいです!!では、またお会いしましょう~! ◆LIFULL デザイナーセミナー開催中!!◆ URL: 株式会社LIFULL (旧ネクスト)新卒採用 エントリーページ
アバター
こんにちは。LIFULL HOME'Sの、主に賃貸領域のサイトデザインを担当している山田 和代と申します。つい先日、LIFULLのデザイナーによる外部に向けた勉強会&交流会である「デザイナーの放課後 #1 サービスを成長させるデザイナーとは?」を開催しました! 本日はその様子をご紹介します。 「デザイナーの放課後」とは このイベントを立ち上げた理由や経緯をご紹介します。もともとLIFULLではデザイナー・フロントエンドエンジニア同士でお互いの仕事のナレッジを共有し合う会を実施しており、その会を母体に「外部の方に向けて発表し、交流の場としてはどうか?」と提案したのがきっかけです。 また、自分たちの仕事を外部の方に向けてご紹介することで発見があるのではないか、外部の方にもっとLIFULLのデザイナーのことを知っていただけるといいのではないか、といった思いもこめてイベントを立ち上げました。 そんな期待をこめた「デザイナーの放課後」、記念すべき第1回には、「NAVITIME」「ZOZOTOWN」のデザイナーさんをゲスト登壇者としてお迎えしました。 オープニングの様子 「イベントをやろう!」と意気込んでからずっと「聴講者の方は集まってくれるのだろうか…」という不安が最も大きかった気がしますが、当日には関係者の方も含めて満員の大盛況! ほっと胸をなでおろす瞬間でした。 司会は、LIFULL HOME’S iOSアプリ担当のデザイナー、小泉 きなみがつとめました。緊張で「今にも踊り出しそう」とつぶやく小泉。 冒頭のLTタイムでは、サービスをデザイナーの力でより魅力的にし、成長させていくにあたっての考え方や仕事の進め方などについて、比較的大規模なサービスを運営する事業会社のデザイナーからの発表を行いました。 LT1 「つながる」サービスをつくる LIFULL HOME'Sにおけるデザイナーの役割 トップバッターは、弊社のLIFULL HOME'S事業本部 流通UXユニットの鈴木 亜依です。ハリネズミと紫色をこよなく愛するデザイナーで、卓越したコミュニケーションスキルで社内でも頼りにされている存在です。 鈴木からは、先日リリースされた「LIFULL HOME’S 住宅評価」の開発秘話をまじえて、LIFULL HOME'Sの開発体制においてデザイナーはどうありたいか、どのようなシーンでデザイナーが貢献できているか、という点について発表を行いました。鈴木らしいパッション溢れるLTで、社内から見学に訪れたLIFULLの社員も、興味深く聞いていたようでした。 LT2 サービスを成長させるデザイナーのリーダーシップ 次にお話いただくのは、株式会社ナビタイムジャパン デザイン部 髙橋 将太さん。デザイナーでありながら、ウォーキングやお散歩など、歩くことに興味がある人向けのアプリ「ウォーキングNAVITIME-ALKOO-」のプロジェクトマネージャーをつとめる髙橋さんは、デザイナーがPMとしてプロジェクトに携わるお話を聞かせてくださいました。 LT3 ZOZOTOWNのデザイナーの「役割」と「考え方」 最後に登壇していただいたのは、ZOZOTOWN・WEAR等を運営する株式会社スタートトゥデイ工務店のデザイナー 樋口 智丈さんです。樋口さんは、フロントエンドのリーダーもされているそうです。 樋口さんからは、ZOZOTOWNのデザイナーは「仕事を自事(自分の事)(自然な事)としてとらえて考える」というマインドでデザインしているというお話や、具体的な施策の考え方に触れた発表を行っていただきました。 ディスカッション ここから進行を私(山田)に替わりまして、登壇者の方々に会場のみなさんから質問をいただきながらディスカッションする時間を設けました。 私から質問させていただいたものの一つはこちら、「デザイナーとエンジニアの比率はどのくらいか」。サービスを成長させるにあたって、デザイナーとエンジニアの比率に「黄金比」はあるのか?! という疑問を日頃抱いていたため、このような質問を投げてみました。ここでは、鈴木から「デザイナーもっと欲しい」という声が漏れ出ました。 会場のみなさまからもたくさんの題材をいただきまして、そのなかの一つ、「採用に関して工夫している点は」という声には、樋口さんからスタートトゥデイ工務店の採用サイトに関してのコメントをいただき、会場が沸く瞬間も。 最後に 最後にご用意したビアバッシュの場には、多くの方に参加いただき、大盛況でした! スタッフ一同、心から安堵し、喜ばしい時間となりました。初回とあって、準備は終始ワタワタとしていましたが、笑顔で帰っていってくださった方が多く見受けられ、「開催してよかった…!」と強く感じました。 「デザイナーの放課後」は、第2回、第3回と続けていきたい取り組みですので、お越しいただければ幸いです。 こちら にて、LIFULLのデザイナーやエンジニアが運営するイベントの多くを告知しております。ぜひ一度、ご覧になってみてください。
アバター
こんにちは。LIFULLの新卒2年目マーケターの松井です。 今回は、7月に開催されたマーケター総会について共有させていただきます。 マーケターの人材育成やキャリア像を考える方のご参考の一つになれば幸いです。   マーケター総会とは? LIFULLでは、マーケターに関わらず、エンジニア、デザイナーなど職種別の総会を定期的に実施しています。   人材育成の考え方として、 組織別の人材育成と、職種別の人材育成の双方 を重要視しており、職種別の総会は、職種ごとの目指す方向を共有するビジョンシェアリングの意味を込めて開催されています。   また、今年の5月にLIFULLでは、改めて マーケターのキャリア像を明確に定義 しました。 LIFULL マーケターのキャリア像に ついて 以下の内容が、LIFULLにおけるマーケターのキャリア像として掲げられています。   マーケターとしてタイムレスなスキルを保有し、 マーケティング・コミュニケーションをトータルプロデュースできる人材    文章ではこのように定義されているのですが、まだマーケターの実務経験が浅い自分自身にとって、 「マーケターとしてのタイムレスのスキルとは?」「マーケティング・コミュニケーションをトータルプロデュースできるってどういった状態?」 と言ったように、中々腹落ちしきれない部分がありました。   今回の総会は、そういったマーケターのキャリア像、マーケターに求められるスキルを具体的にイメージするために、ベストインクラスプロデューサーズの代表取締役社長 菅 恭一氏を外部講師としてお招きして開催されました。   第一部「デジタル時代のマーケティングプロデュース術」      菅氏には、「デジタル時代のマーケティングプロデュース術」というタイトルでご講演いただきました。   菅 恭一氏(ベストインクラスプロデューサーズ) 1998年朝日広告社入社。食品、流通、金融、人材、不動産など多業種における、デジタルマーケティングの戦略構築、コンサルティングを担当したのち、2004年に次世代型デジタルマーケティング組織を起案。以降10年間のリーダーシップを通じてトリプルメディア領域におけるコミュニケーションプランニングとデータドリブンなマーケティングマネジメントをシームレスに実践する組織基盤を構築。 2015年4月、データドリブン型コミュニケーションシナリオの開発を軸に、デジタル時代の企業と生活者の関係構築を支援するマーケティングプロデューサー集団、株式会社ベストインクラスプロデューサーズの創業の参画、代表取締役社長に就任。   マーケティング活動のプロセス明確化の重要性 講演の冒頭は、マーケターを取り巻く環境やマーケターが抱える課題をベースとして、 マーケティング活動を構造化し、プロセスを明確にする必要 があるというお話をいただきました。以下のスライドがその事例となります。     プロセスに落とすメリットとして、菅氏は 「プロジェクトに入る前にゴールまでのプロセスがあると、振り返りし易い」 というお話がありました。上記のようなフレームワークに落とし込む重要性を、実際にプロデュースしたクライアントの案件の事例も踏まえて、説明いただきました。 マーケターに求められるスキル要件   その上で、マーケターに求められるスキル要件について、以下のように定義されていました。 1.プロデュースする力  2.データを読む力 3.シナリオを作る力   目指すべきは、 「プロデュースする力」を持ち、「データを読む力」「シナリオを作る力」のいづれか(3つのスキルのうち2つ)を兼ね備えているハイブリッド人材 というメッセージを受け、第一部の講演は終了しました。   第二部 トークセッション   第二部では、上記のご講演を基に、以下の点について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マーケター総会スライド(2017/07)  
アバター
こんにちは、NASが吹っ飛んで代わりに7年ぶりに自作PCを組み立てた LIFULL HOME'S事業本部 技術開発部 の冨田です。 バックアップは大事ですね & パーツを選べるって幸せですね。 LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを行っています。 前回の記事 も是非ご覧ください。 ゲスト紹介 本日のゲストは LIFULL HOME'S事業本部 技術開発部 の中野さんです。 品質保証や開発プロセスの改善を担当しているエンジニアマネージャーです。 目次 ゲスト紹介 目次 学生時代 LIFULL入社前 LIFULL入社後 社外での活動 家庭とスキルアップとのバランス お勧めの本、技術のキャッチアップ 若手に向けて 将来のビジョン 次回予告 編集後記 お知らせ 学生時代 冨田(以降 冨): 初めてPCを触り始めたのはいつごろですか? 中野(以降 中): 小学校の3、4年生ぐらいですね。 兄がパソコン少年だったので、彼が遊んでいたMSXで同じようなことを真似してベーシックのプログラムを書いていました。 冨: いつ頃からプログラムに興味が? 中: 高校の授業でVisual Basicを習っていて、その位からだと思います。 ただ、本格的にプログラムを書き出したのは会社に入ってからですね。 LIFULL入社前 冨: エンジニアを目指した背景は? 中: 高校を卒業するときに、コックになるかプログラマーになるかですごく迷っていました。 クリエイティブなことが元々好きで、料理のほうがより人に感動を与えられると思ってコックの道を選びました。 冨: 衝撃の事実ですね。 まさかのコックに。 中: 調理師学校を卒業して、フレンチの鉄人のレストランに就職しました。 しかし、体力的にかなりキツくてすぐに挫折してしまいました。 冨: 鉄人の店というのもさらにスゴイですね。その後エンジニアに? 中: 友人の紹介で受託系の開発会社に就職し、そこから更にSIerに転職しました。 分野も製造、保険、出版など様々な開発に携わり、証券系の開発も行いました。 冨: QAエンジニアに転向したきっかけは? 中: ちょうど10年くらい前ですが、当時Seleniumが徐々に認知されはじめている状況で、JUnitとSeleniumを組み合わせて実行管理するような自動テストのフレームワーク開発を行っていました。 そこからだんだんとテストに興味を持ち始めました。 ある時に、その証券会社のお客様の別プロジェクトが炎上しはじめて、テストをまとめる人がいないと言うことで「テストチームのリーダーをやってくれないか」という依頼をいただきました。 そこで初めてテストチームをマネージメントしてプロジェクトを切り盛りする経験をしました。 そこが大きなターニングポイントになっていますね。 冨: そのプロジェクトがスキルアップに一番インパクトがありましたか? 中: 自分の中でインパクトがありました。 自分のチームが、もしバグを見逃して稼働してしまうと、新聞に載ったり、監査が入って業務を停止しなければいけない等のリスクがありました。 常にどうあるべきかを考えてテストに集中していた時期でした。 冨: プレッシャーがあったからスキルが伸びたのですか? 中: 大きなプレッシャーを乗り越えながらプロジェクトで結果を出し続けるということにすごく意味があったと思います。 LIFULL入社後 冨: その後2014年にLIFULL(旧ネクスト)入社するわけですが、転職したきっかけは? 中: 当時は色々迷っていて複数の会社の方と話していたのですが、現在の上司の藤澤さんと話してる時の感じが一番自分にしっくりきてると言うか、気持ちが良かったんですよね。 それが結構大きくて、一緒に仕事してみたいと思いました。 テストのシンポジウムで発表した時に彼も偶然 裏番組というか横の枠で発表していました。 彼の発表したテーマがテストの自動化だったんですね。 当時はもちろん、色々と情報収集していたので知らないはずはなかったんですが、何で聴きに行かなかったんだろうと思ったら裏番組だったんです。 その偶然にちょっと運命を感じました。 冨: 藤澤さんの人柄とかも入社の理由なのですね。 中: はい、あと会社の雰囲気が良いというのも大きな理由のひとつですね。 廊下ですれ違う人たちの雰囲気がすごく良くて、楽しそうに仕事している姿を見て本当に羨ましく感じました。 冨: 現在のミッションは? 中: ひとつは今期からユーザーファースト推進グループという組織を立ち上げました。 人間中心設計の専門家の小川さんと一緒に本当にユーザーによいと思ってもらえる、つかいやすいプロダクトを生み出すための施策を進めています。 もっとユーザーに「スゲー」と思ってもらえるプロダクトを生み出す仕組みを作れたらいいなと思っています。 もうひとつは、社内の開発プロジェクトに向けたQAテストのサポートとリリースの高速化、自動化を進めています。 テストの技術開発と最適化、またデプロイメントパイプラインの構築によって <より開発しやすい> <安全に高速なリリースができる> を実現したいと思っています。 web-tan.forum.impressrd.jp 社外での活動 冨: JaSST’18 Tokyo の共同実行委員長のお一人だったり、ソフトウェア・シンポジウムで「 探索的テストにおける不具合発見率向上に向けた取り組み 」の発表をされたり、 テスト設計コンテスト の予選の審査委員をされていたり、 JSTQB の技術委員をされていますがきっかけは? 中: 最初のきっかけは JaSST というソフトウェアテストのシンポジウムなんですけど JaSST のセッションから派生したソフトウェアテスト設計の研究活動グループがあって、そこに参加しました。 そこで知り合った JaSST や JSTQB を運営している ASTER という NPO 法人の人と知り合ってそれをきっかけに JaSST の活動をはじめました。 その後 JSTQB の活動にも加わるようになりました。 冨: どのようなところが学びになりますか? 中: 有識者がたくさんいるので、その人達と話すことで学びになりますね。 また、活動していく中でソフトウェアテスト業界全体の課題や海外との技術的レベルの差を感じる事が多いので、解決していきたいと考えています。 冨: 日本のソフトウェアテスト業界の課題とは? 中: 色々あると思いますが、ソフトウェアテストと品質の価値がきちんと理解されていないことですね。 業界全体としてソフトウェアテストに関わる人たちの技術がまだまだ発展途上の部分があるので、そういう所を解決していきたいと考えています。 冨: 解決のために取り組んでいることは? 中: 所属するNPO法人としては ソフトウェアテストシンポジウムなど有識者が集まる場を作ったり、ソフトウェアテスト技術者の認証資格試験の運営、テスト設計コンテストなどのようなテストの技術を学べる場を提供するなど、技術振興にむけて様々な取り組みを行っています。 個人としてはJaSST'18 Tokyoの共同実行委員長を務めさせていただくことになったので、現場のテスト技術者のモチベーションや技術向上につながるようなコンテンツの開発を行っていこうと思っています。 冨: JaSST Tokyoはどのくらいの規模のイベントなんですか? 中: 2日間でのべ千数百人来場されるので、ソフトウェアテストのイベントとしては日本で最大級です。 次回は2018年の3月7日(水)、8日(木)に御茶ノ水の日本大学 理工学部の駿河台校舎1号館で開催します。 ソフトウェアテストの学びになるコンテンツをたくさん用意しているので現場のテストエンジニアだけでなく、開発者や管理者の人たちにも参加して欲しいですね。 JaSSTソフトウェアテストシンポジウム-JaSST'18 Tokyo 家庭とスキルアップとのバランス 冨: ご結婚されていますが、家庭でスキルアップの時間って取れていますか? 中: お互いにそれぞれの時間持つようにしています。 結構自分の時間を自由に設定できるのでそんなに苦労はしてないですね。 社外活動のための作業で追い込まなければならない状況だとカフェで集中して作業していますね。 お勧めの本、技術のキャッチアップ 冨: 若いWebエンジニアが読んでおいた方がよい本はありますか? 中: 高橋 寿一さんの書いた「 知識ゼロから学ぶソフトウェアテスト 」っていう本がおすすめです。 冨: QAを目指す人が読んでおいた方がよい本はありますか? 中: 私は秋山 浩一さんが好きなので「 ソフトウェアテスト技法ドリル 」で勉強するのをおすすめしたいです。 冨: 自分が若い頃に読んでおいた方が良かった本や最近気になる本はありますか? 中: 先日ソフトウェアテスト業界で著名な Rex Black 氏にお会いする機会があり、会う前に彼の書籍を読み直しました。 うちのソフトウェアテストのスタイルで探索的テストをプロジェクトのある工程に差し込むということをやっているのですが、そのアイデアがそのまま本に書いてありました。 かなり昔に読んでいたのですが、当時はピンと来ていなくてわからなかったんでしょうね。 昔読んでわからなかったことを今読んで再発見するということがあったので、彼の本を真剣に読み直そうと思っています。 冨: 技術のキャッチアップはどうされています? 中: 新しい技術に関しては論文を読んだりカンファレンスで発表を聞いたりしています。 海外のカンファレンスは動画を公開していることもあるのでYouTubeなどで観ています。 若手に向けて 冨: QAからみてWebエンジニアがどのようなことを意識して開発に取り組むと良いですか? 中: テストしやすい用に作って欲しいという単純な思いはあります。 しかし、それよりもたくさんのユーザーに使ってもらって、ユーザーに良いと思ってもらえるのが我々にとっての大きな価値なので、細部にまでこだわって、最後まであきらめずに作り込んでほしいですね。 冨: QAとWebエンジニアとの意思疎通で用語はどうやって覚えれば良いですか? 中: 社内の標準としてテストの言葉と概念はJSTQBの用語に沿っています。 テストの基本的な設計の手法はQA側から標準化して全体にレクチャーするのが正しい動きだと思っています。 そういった設計の技術の標準化であったり、用語の整理を今後少しずつやっていけたら良いですね。 冨: エンジニアとしてのこだわり、哲学的なものはありますか? 中: ソフトウェアテスト業界との関わり合いや循環をおこすという所をこだわっています。 Web系のテストエンジニアは技術の選択ができるので、トラディッショナルな技術を学びつつ、新しいことにも興味を向けてそのバランスをとりながらそれを現場に戻してくとか。 自分たちの中で発展させて外にアウトプットして循環させるということが、わりとできているのかなと思っています。 冨: 自分自身が若い頃にやっておけばよかったなと思うことはありますか? 中: 昔は仕事が大好きでオフィスにこもっていたのでもっと色々な人とコミュニケーションをとればよかったと思っています。 LIFULLのエンジニアは飲みに誘ってくれたり、誘ったら来てくれる人が多いので、よくものづくりの人たちと外でもコミュニケーションをとっています。 コミュニケーションする中で人の考えを学べたり、自分の中の考えが明らかになったり、新しい興味を発見できますね。 将来のビジョン 冨: 直近取り組みたいことは? 中: 直近で取り組みたいことは2つあって ひとつは社外に自分が持っているノウハウを論文や資料に起こして発表できるように準備していて、 具体的には、自分のテスト設計のテクニックをまとめています。 もうひとつは、社内で新しいコンセプトのテストツールを作ろうと試行錯誤しています。 冨: そのテストツールができるとどんなことが実現できるんですか? 中: 回帰テストのコストが圧縮できたり、精度の高い検証ができるようになります。 冨: 今後どのようなエンジニアを目指していますか? 中: 社内でのQAの業務も幅広くなっていて、例えば今期からユーザビリティの評価プロセスが強化されてますが、今後も開発プロジェクトに向けてそういったメニューをたくさん作って色んな品質の向上に貢献できるようになれば良いなと考えています。 外部の発表にも興味があるので引き続き継続できたら良いなと考えています。 次回予告 冨: この人のスキルアップ術を聞いてみたい、またはお薦めなエンジニアはいらっしゃいますか? 中: AIを担当されている林さんのことを知りたいですね。 データサイエンティスト的なこともされていますが、今までの経緯と今後どのようなことを取り組んでいくのかに興味があります。 編集後記 シンポジウムで得た知識を発展させ業界へ循環させるという姿勢が素晴らしいと感じました。 意外な経歴をお持ちの中野さんでしたが、エンジニアになれるチャンスは色々あるのだなと感じました。 お知らせ LIFULLではQAエンジニアをはじめ各職種で採用を行っております。 こんなエンジニアと働きたい! という方は弊社の採用サイトもご覧ください! recruit.lifull.com
アバター
こんにちは!そして初めまして!LIFULL HOME'SのiOSアプリチームの又来です。新卒1年目の新米エンジニアです。入社して早くも3ヶ月が経ちますが、ようやく社会人生活にも慣れてきたところです。 さて、6/5-9にCA, San Joseで行われたWWDC 2017では、iOS11の発表やARKitなどをはじめとする新技術の発表がありましたね。 今回はその新技術の共有会ということで、「WWDC - Developer’s Living」を開催しました! 発表 Core ML / Vision Frameworkを使ってできること @shingt さんの発表です。 Core MLを用いてiOS上で画像解析技術の利用をするための知識やできることについて発表していただきました。 画像解析技術の利用ハードルが低下した Core MLは学習済みのモデルを扱うことができるので、Vision Frameworkと組み合わせることで精度が高い画像解析が行えるようになります。また、取り込んだ学習モデルを使って、物体検出などのTracking(物体の追跡)が可能になります。 今回新技術の発表があったARKitと組み合わせることで空間上に検出した物体を追跡しながら投影するなんてこともできそうですね。 iOS11からの位置情報アプリの立ち向かい方 @SatoTakeshi さんの発表です。 iOS11から変更があった、位置情報について発表していただきました。 常に許可から「このAppの使用中のみ許可」に iOS10までの位置情報の認証は、「常に許可」と、「このAppの使用中のみ許可」のどちらかをユーザーに問い合わせれば良いだけでした。しかし、今回からは常に許可しか問い合わせていないアプリも「このAppの使用中のみ許可」を 強制的に出すようになりました。 今回はその認証に対する変更点だけでなく、細かい変更部分など位置情報アプリを作るなら欠かせない変更点とその対策について紹介していただきました。 WWDCに学ぶライブコーディング+CoreNFC @fromkk さんの発表です。 WWDCでの発表はプログラムをリアルタイムに実行しながらコーディング行う、ライブコーディングが多いです。 そんなライブコーディングの良さをCoreNFCのデモ共に発表していただきました。 Xcodeのコードスニペット(入力補完)を使う コードを書きながら発表するのは緊張したり、書くべきコードを忘れたりしますよね。そんな時はXcodeの入力保管を使って、まとめたいコードを簡単にショートカットに登録すると、発表中にど忘れしたりすることがなくいつでも呼び出しが可能になります。また、コメントを記述することもできるのでわかりやすそうです。 発表では、コードスニペットを用いてNFCタグの認証のデモを披露していただきました。 映像出力機器の不備でテレビのモニタに映しております。この度はご迷惑をおかけしました。 iOS 11からのアプリ間ファイル共有 @ktanaka117 さんの発表です。 iOS11からアプリ間でファイルのやりとりができるようになり、アプリ側で実装するためのやり方について発表していただきました。 ファイル共有には送信側、受取側どちらも対応する必要がある 渡したい画像などのファイルを送信するためには自身のアプリ側でファイル共有の対応をすれば良いですが、アプリ間で共有をする場合は受け取る側も共有の実装が必要になります。 この機能を使ったアプリがこれからたくさん出てくることがカギになりそうです。 Dictionary for Swift4 Dictionary for Swift4 from Takuro Hanawa 弊社の 塙 拓朗 の発表です。 Swift4.0でDictionaryの機能が便利になりました。 Dictionaryが扱いやすくなった Swift4.0での変更点をいくつか挙げると、 Key-ValueのペアになったSequeneタイプからDictionaryを生成できるようになった 重複したKey(Sequenceタイプ)に対して処理が可能 初期化だけでなく既にあるDictionaryに対しても行えるmergingとmergeが追加 FilterとMapの扱いが簡単になった 取り出しの際にデフォルトが指定できる Sequeneをグルーピングしやすくなった あらかじめ容量を確保できるようになった などなど、痒い所に手が届くようにパワーアップしました。 直接的な新機能ではありませんが、開発者としては嬉しいアップデートですね。 PDFKit @kishikawa katsumi さんの発表です。 Macでは使うことができていたPDFのプレビューですが、iOSでPDFKitが使えるようになったこと、簡単に実装できるようになったことをデモを交えて発表していただきました。 ページプレビューからスキップまで簡単に PDFKitを使うと簡単にビューワーが作成可能になります。文字検索をしたり、ヒットした文字にattributeを指定してマーカーを引いたりすることができるようになります。また、文字検索での機能について、行をまたぐなどをすると空白文字が入ってしまい、検索にマッチしない場合があるので、空白や空行を取り除く処理が必要になります。 これまでiBooksなどのビューワーアプリを開発してきた方はこのPDFKitを使ってみてはいかがでしょうか。 デモを拝見しましたが、とても簡単に実装できていたので今後のアプリ開発が楽になりそうですね。 ARKit 弊社の 池田 和洋 の発表です。 今回WWDCでの大注目を浴びたARKitの機能を用いたデモアプリについて紹介させていただきました。 拡張現実オブジェクトの合成を可能とするデモでは、平面を認識した位置にボールを出現させ、ボールが平面に衝突するとバウンドするようなものを実演しました。 特別なハードウェアはいらない 用意するのはiPhoneまたはiPadのみでARが使えるようになります。(厳密にいうと、A9以上のチップ内蔵のものなのでiPhoneは6s以上、iPadはProか第5世代のみ) ARKitでは机や床など平面を認識することが非常に得意で、空間上に出現させたオブジェクトもブレることがほとんどなく、精度が非常に高いものになっています。 最後に 共有会が終わった後はみなさんでワイワイ交流会! 懇親会ではじゃんけん大会を開催し、なんと景品は現地でしか買うことのできないWWDCのお土産です!(欲しい) グッズをゲットした方々、おめでとうございます!! WWDCで発表があってから数週間にも関わらずみなさん新機能を使った開発を既にスタートさせていました。 今回のアップデートで大幅にできることが増えているのは確かです。 最新の知見を共有する場にもなり非常にアツいイベントになったのではないかと思います。 これからのiOSアプリに期待です!
アバター
こんにちは、この記事の校正のために textlint 試しているLIFULL HOME'S事業本部 技術開発部 の冨田です。 LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを行っています。 前回の記事 も是非ご覧ください。 ゲスト紹介 本日のゲストは LIFULL HOME'S事業本部 新UX開発部 の高橋さんです。 iOSアプリのLIFULL HOME’S と そのバックエンドを担当しているエンジニアです。 目次 ゲスト紹介 目次 学生時代 LIFULL入社前 LIFULL入社後 家庭と趣味とスキルアップのバランス おうちハック 技術のキャッチアップ、好きな開発環境、言語など 若手に向けて 将来のビジョン 次回予告 編集後記 お知らせ 学生時代 冨田(以降 冨): 初めてPCを触り始めたのはいつごろですか? 高橋(以降 高):中学の時に父親が買ってきた Windows のペイントをちょっと触った程度ですね。 冨: いつ頃からプログラムに興味が? 高: 大学の課題でC言語に触れました。 自宅にLinuxのPCを用意して、さらに工夫したコードにしていましたね。 研究室時代は通信レイヤーからメタデータデータベースなど広く扱う研究室で、 私はWebアプリを作ってメタデータでレコメンドするような研究をしていました。 冨: エンジニアを目指した背景は? 高: もともと手を動かしてモノを作るのが好きで高校の頃から研究寄りのエンジニアになろうと思っていました。 LIFULL入社前 冨: LIFULLに入社される前はどのような仕事を? 高: 電機メーカーに5年ほど勤めていました。 最初の2年くらいは研究職で言語はC#、通信プロトコルからWebまで幅広いことをやっていました。 その後、AndroidやiOSアプリの開発を製品寄りの部署で担当することになったので、品質には気を配るようになりましたね。 iOSアプリは1から作ってリリースしました。 アプリを作ると言ってもシステムの設計が良いだけでもだめで、如何にユーザーにストレスなくするか、UIスレッドをブロックしない、ユーザーが使い易い設計、ビジュアルのアピアランスを含めてどうしたらいいんだろうって… すごい考えることが多くて総合的に力が付きましたね。 LIFULL入社後 冨: その後2015年にLIFULL(旧ネクスト)入社するわけですが、電機メーカーから自社サービスに転職したきっかけは? 高: 電機メーカーでアプリを作っていてユーザー向けのプロダクトが楽しいと感じて、研究よりそちらの方が向いてるなと感じました。 もっと高度なアプリを作りたいと思い、より最新の技術に触れられ、リリースサイクルが速い環境に身を置きたいと思って転職しました。 冨: スキルアップに一番インパクトがあったプロジェクトはありますか? 高: tvOS版のLIFULL HOME'Sアプリ はSwiftを使ってフルスクラッチで開発したので、新しいライブラリの選定もして、iOSアプリにつながる知見を貯めることが出来ました。 リーダーに近いこともやっていたのですが、メンバーが素晴らしく自主的に動いてくれたので順調に開発が進み、ストアの特集にも掲載されました。 iOS版のアプリだと「1人で家を探す」体験になりますが、tvOS版だと「家族で一緒に家を探す」という新しい、面白い体験を提供できたと思っています。 家は家族で住むものなので今後も「家族で一緒に家を探す」という体験を追求していきたいと思っています。 冨: tvOSの勉強会 も開催され、気付きはありましたか? 高:まだ、リリースされているアプリが少ないので基礎的な情報もまだ流通していないという印象ですね。 これから盛り上がっていきそうな雰囲気を感じました。 冨: 社内ツールとしてチャットワークに登録されているタスクの期限が近いとお知らせしてくれるチャットボットも作っていましたよね? 高:業務の効率化で情報共有の手段としてチャットボットは導入しました。 その機能や、バグチェック担当者を毎週ローテーションで割り振ってくれる機能があるのですが、後輩が自分の発想で実装してくれました。 その場を提供できたのは嬉しいですね。 元々はConfluenceやJIRAで集約された情報の更新が気づきにくいのでチャットワークで通知するために導入したのですが、まだ実現できていないですね。 冨: Jenkinsも導入していましたよね? 高: 前職では当時デブサミで自動UIテストやCIの話が盛んだったのでJenkinsを導入しました。 LIFULLではすでに導入されていたので使い倒そうと思いました。 JenkinsからGitのブランチを指定するとDeployGateからベータ配信し、Chatworkで通知するようにしました。 Jenkins + Deploygateを使った簡単ベータ配信 from 庸介 高橋 www.slideshare.net 家庭と趣味とスキルアップのバランス 冨: 前回の磯野さんも育児休暇を取得していましたが、高橋さんはどうでしたか? 高:社内では短い方ですが、妻と相談して一ヶ月にしました。 冨: 子どもが生まれた後どうやって技術のキャッチアップの時間を作っていますか? 高: 通勤時間と子どもが寝てからですね。 通勤は片道1時間くらいあるので、立ってる時はRSSリーダーで情報収集、気になる技術の調査、英語の勉強、Podcastを聞いていたりしますね。 電車で座れるとノートPCを持ち歩いているのでコードを結構書いてます。 冨: 趣味でテニスをされていますが、家庭、スキルアップとの時間配分ってどうされていますか? 高: 基本は家庭優先ですね。その次はスキルアップ。 テニスは中1では軟式、大学では硬式をしていました。 テニススクールに今も通っているのですが、子どもが寝てから行っています。 週末には試合が入ることもあるのでその埋め合わせが大変ですね。 冨: 体力づくりもエンジニアリングに影響してきたりします? 高: ストレス発散にはなりますね。 メンタルも鍛えられる、気持ちをコントロールできるような気がします。 おうちハック 冨: おうちハックで<家族の帰宅を通知してくれるキーホルダー>を作られていますがきっかけは? 高: 勉強会を運営している人が前職の先輩で、「次回発表してね」って言われて期限が決まっていてやらざるを得ない状況に追い込まれました。 期間は結構あったので構想を練ってRaspberry Piを買って、知り合いなどにセンサーは何買ったら良いか尋ねてから買いました。 電子回路はお手本を見て組みました。 冨: 家族の反応はどうでしたか? 高: 今まで作ったものは家族が使ってくれないものだったのですが、これは家族が喜んで使ってくれました。 家についたことをいちいち連絡するのは面倒だし、GPSで位置情報を共有するアプリもありますがプライバシーとかの問題もあるのでこの方法がベストだと思いました。 共働きのときは「ご飯作っておいて」、「外で食べてくるよ」とか連絡しやすい状況になりました。 冨: 勉強会での反響はありましたか? 高: 周りからアドバイスをもらえたり、コンクールに出してみませんかと言われたり、 本にも掲載されました 。 コンクールで賞は取れませんでしたが、その後登壇する機会がもらえたり、そこからネットワークができたり、発表を見た人から話しかけてもらえるので嬉しいですね。 ただ参加するだけとは比較にならないくらいの経験を得られましたね。 また、発表資料を作ることにより、試行錯誤しながら作っていた設計がセルフレビューでき、より洗練されました。 おうちハック発表会 #5 家族の「ただいま」を教えてくれるキーホルダー from 庸介 高橋 www.slideshare.net 技術のキャッチアップ、好きな開発環境、言語など 冨: どのような開発環境が好きですか? 高: アプリがメインなのでXcodeが中心ですが、サーバー上でコーディングしたり、設定ファイルを書き換えるシーンが増えているのでVimを勉強しています。 言語は好き嫌いなく雑食で生きています。 必要なら必要な言語をその都度覚えて使うというスタンスです。 冨: お薦めの本はありますか? 高: 詳解Swift、詳解Objective-Cは定番かつ鉄板ですね。 WEB+DB Press、Software Designはたまに読んでいます。 Effective Javaで設計や命名ルールなどのベストプラクティスを得られましたね。 Javaは歴史が深い言語なので書籍でしっかりと学べる気がしていて、Swiftなど最近の言語はWebから学ぶことが多いです。 冨: 技術のキャッチアップはどうしています? 高: feedly、Twitter、ポッドキャストのRebuildなどですね。 あとは本屋に行ってネタを探したり、iOS、Swift、IoTの勉強会やAWS、GCPなどの大きめなカンファレンスもいきますね。 冨: 最近興味のある技術はありますか? 高:IoTが気になっています。 ずっとアプリをやってきて楽しいですが、さらに高度で新しいことをやりたいですね。 通信周りも以前やっていたのでハードに関連するものもやりたいと思っています。 冨: 取捨選択はどうしています? 高: 以前は気になったら全て調べていましたが、最近は現在持っているスキルに隣接する分野を選んでが習得して隣接領域を徐々に増やしています。 冨: アウトプットはどうしています? 高: テニスの試合結果を管理するRailsでアプリを書いていて、あと少しでリリースしたいと思っています。 冨: Railsはこのために覚えたのですか? 高: 結構前から調べていました。このアプリを思いついた時にRailsがマッチすると思って選択しました。 その他にもテニスのフォームを繰り返し確認するためのアプリをまだ公開はできていませんが、作っています。 既存のアプリは繰り返すために指でシークしないとならないので不便でした。 冨: 時間のハックなどはしていますか? 高: 通勤時間などのスキマ時間を効率的に使っていますね。 調べ事したものはEvernoteに書き留めています。 散発的に調べてしまうと見つからなくなるので検索できるようにしています。 若手に向けて 冨: エンジニアとしてのこだわり、哲学的なものはありますか? 高: プロ意識を持って設計、実装しています。 判断に迷うときは「それはプロフェッショナルとしての判断なのか?」ということを意識しています。 あと新しいデバイスがでたら触ってみるというのを心がけています。 触ってみることによって新しい発想が出くることもありますし、引き出しが多いと実現できることも増えるので。 冨: 自分自身が若い頃にやっておけばよかったなと思うことはありますか? 高:アウトプットをもっと出す、コードを書いて成果をまとめて、リリースするなり、社外で発表するなり、OSSにするなりしておけば自分の価値を上げられたと思いました。 将来のビジョン 冨: 今後どのようなエンジニアを目指していますか? 高: ちょっとしたアイデアのサービスではなくて、いままで技術的な課題があってできなかった、世の中になかったサービス作れるようなエンジニアを目指しています。 冨: 取り組みはどのようなことをしていますか? 高: 今は引き出しを増やしている段階ですね。 色々技術を調べてみて触ってみています。 AWSやGCPなども触りつつ、IoTなどちょっとハード寄りも触っていますね。 次回予告 冨: この人のスキルアップ術を聞いてみたい、またはお薦めなエンジニアはいらっしゃいますか? 高: QAエンジニアの中野さんの話を聞いてみたいです。 品質に関して真摯な考えを持っているように感じるので。 品質を確保するという専門分野を選択したきっかけ、どのようなところで勉強しているのかが気になります。 作る側はどう意識して作って欲しいと思っているのかが気になりますね。 編集後記 おうちハックは家族にも利用され、コンクールで知り合いも増えて、スキルアップにもつながる良いアウトプットだなと感じました。 また、引き出しを増やして、色々なサービスを自力で作れるようになるという姿勢が印象的でした。 お知らせ LIFULLではエンジニアをはじめ各職種で採用を行っております。 こんなエンジニアと働きたい! という方は弊社の採用サイトもご覧ください! recruit.lifull.com
アバター
LIFULL HOME'S事業本部 技術開発部 の冨田です。 LIFULLエンジニアのインタビューを通して、なかで働くエンジニアはどんな人なのか、どんなことをしているのか、を知ってもらうきっかけになればと思い、このような取り組みを始めました。 ゲスト紹介 本日のゲストはおなじく LIFULL HOME'S事業本部 技術開発部 の磯野さんです。 過去には iOSアプリのLIFULL HOME’S やオンプレミスからクラウドへのサーバ移行、 Zipkinの導入 なども担当され、現在はLIFULL HOME’Sを支えるアーキテクチャの刷新を担当しているエンジニアです。 目次 ゲスト紹介 目次 学生時代 LIFULL入社前 LIFULL入社後 子どもが生まれてから 技術のキャッチアップ方法 育成と後輩エンジニアからの刺激 好きな開発環境、言語など 将来のビジョン 次回予告 編集後記 お知らせ 学生時代 冨田(以降 冨): 初めてパソコンを触り始めたのはいつごろですか? 磯野(以降 磯): 小6から中1くらいですかね。 父の仕事の関係でMS-DOSのPC9801やベーマガが家にあって、写経していました。 父からはプログラムは一切教わっていませんでした。 動かなくても理解していなかったのでデバッグも出来ずにただ間違いを探していた感じです。 冨: かなり小さいころからやっていますね。 中学から大学ではなにかやっていましたか? 磯: 中学、高校はゲームをやっていて、プログラミングはしていませんでした。 大学に入ってFortran、Cをちょっとだけやりましたが、情報処理に関してはあまりやっていなかったですね。 当時常時接続が出始めた時代で、自宅でサーバやルータをFreeBSDで構築したり、Movable TypeやWikiをサーバにいれていましたね。 NICの二枚刺しもしていました。 冨: 懐かしいですね(笑) プログラムの改造とかはしていたんですか? 磯: 設定ファイルを書く程度ですね。 社会人になっても自宅サーバは少しやっていましたが、電気代がかかったり、無線LAN 、VPSが出始めたのでやめてしまいました。 LIFULL入社前 冨: LIFULLに入社される前はどのような仕事を? 磯: プロバイダーのコールセンターでテクニカルサポートや料金案内などをしていました。 冨: IT関連ではありますけど、結構畑違いですね。 Excelでマクロとか組んだりはしていたんですか? 磯: 多少Excelでマクロ組んだり、PerlでかかれたCGIを改造したりはしていましたね。 0からは書けませんでしたが。 冨: やりはじめたきっかけは? 仕事上必要だったから? 楽しいから? 磯: 誰もやってくれなかったので自分で勝手にやりはじめました。 元々、昔プログラマだった方が管理していたんですが、一部権限をもらってやりはじめました。 LIFULL入社後 冨: その後LIFULL(旧ネクスト)に2007年にエンジニア職として入社するわけですが、エンジニアにキャリアチェンジされた理由は? 磯: プログラムの改造が楽しかったのと、もともとサーバに興味があったので、もうちょっとその辺をやっていきたいと思いました。 冨: LIFULLに入社して一番スキルアップを実感したところ、ブレイクスルーのきっかけは? 磯: 入社して LIFULL HOME'Sの賃貸のWEBサイト を担当していたのですが、その後すぐにリニューアルをメインで担当させてもらえたのが大きいですね。 Zend Frameworkベースの社内フレームワークと社内向け物件検索APIがあったのでコアな部分はそちらに任せつつ開発していました。 冨: 自由に出来る部分、裁量が合ったから伸びたのですか? 磯: 裁量もですが、「なんでこうするの?」としっかり考えながら開発したのが大きかったと思います。 子どもが生まれてから 冨: 弊社の男性技術者の6割が育休取得しているそうですが、磯野さんはどうでしたか? 磯: 子どもはもうすぐ4歳になりますが、育休期間は3ヶ月とりました。 育休はじまって2ヶ月経って妻に「子どもが2人いるような感じだからもう仕事行っていいよ」って言われました(笑) 冨: 私はまだ子どもがいないのでわからないのですが、子どもが生まれた後どうやって技術のキャッチアップの時間を作っていますか? 磯: 妻と交代で面倒みていたので時間は作れました。 ただ、最初の半年くらいは「おなかすいた!」と泣いてしまうので集中はできなかったですね。 最近は聞き分けがつくようになったので夜に多少時間が作れるようになりました。 また、3歳くらいになると出かける時に必要なおむつなどの荷物が減って妻だけで外出できるようになったり、子ども同士で遊ぶようになったので楽になりましたね。 技術のキャッチアップには家族の理解も必要なので、<妻のための時間>、<子どものための時間>それぞれの時間配分が必要ですね。 最近はレゴブーストに興味があるんですよ。 子どもと一緒にプログラムしたいですね。動くものを一緒につくるのが楽しいです。 冨: エンジニアの英才教育ですか? 磯: エンジニアになって欲しいわけではないですが、一緒に遊べる共通言語としてレゴブーストがある感じですね。 論理的思考につながるかはわかりませんが、つながるとよいと思っています。 www.lego.com 技術のキャッチアップ方法 冨: 技術のキャッチアップはどうしています? 磯: 昔はGoogle Readerやはてなブックマークで情報収集をしていましたが、最近はしていませんね。 自分がやりたいことがある時にどういうツールがあるかを調べています。 本を読むだけではなくアウトプットをだすことが重要ですね。 伸びている人たちはプライベートでもアウトプットだしていますね。 冨: お薦めの本はありますか? 磯: ケント・ベックがお薦めです。 Smalltalk best practice patterns、Implementation Patterns、メソッドレベルの書き方、例えば命名などに役に立ちます。 冨: 日本語版は絶版っぽいですね・・・ 原著を手に入れるしかないですね。 冨: 個人のOSSを公開してgolangを利用していますが、golangはどうやって覚えたのですか? 磯: 公式サイトで覚えました。 ブログや公式サイトの日本語版は情報が古かったりするので英語版の公式サイトを見たほうがよいですね。 冨: 気をつけます・・・ github.com 育成と後輩エンジニアからの刺激 冨: 2年目のエンジニアに対する研修のメンターやリクルーティングも担当していますが、刺激や学びはありますか? 磯: 入社してくる新卒や テクノロジーナイト に参加してくる人は意識高い、できる感じで焦燥感に駆られますね。 2年目研修で担当したエンジニアもVimやターミナルの操作が最近伸びていると感じますね。 冨: 2年目研修のメンターではどのように育成していましたか? 磯: ネットで調べただけでしっかり理解していないことがあるので、「なんでそうやったのか?」を意識して聞いていました。 捨てるコードとプロダクションコードでやっぱりスキルアップの差が違うので、できればプロダクションコードで機会を与えたほうが良いですね。 冨: 2年目研修やリクルーティングの担当を積極的に引き受ける理由あるんですか? 磯: エンジニアが人事に対してもっと協力しても良いんじゃないかと思ったので実践しています。 冨: そういう思いもあったんですね。 好きな開発環境、言語など 冨: どのような開発環境が好きですか? 磯: OSはMacですね。 エディタはAtomを使っていたのですが、golang書くのに楽なVisual Studio Codeを使っています。 最近はVSCodeじゃないと書けない体になってきました。 CTO *1 を筆頭にVim使いが多いですが、私は.vimrcはカスタマイズせずに使っています。 冨: 言語はどうですか? 磯: ここ数年だとNode.js, golangあたりです。 Node.jsはstream、golangはマルチプラットフォームなところがいいですね。 言語仕様もあるので難しいのですが、テストに関してやりづらいところもあるので、 LIFULLのメインの言語の一つであるRubyのテスティングフレームワークのRSpecを懐かしく思う日々です。 冨: ミドルウェアやライブラリとかはどうです? 磯: ログイン、認証、権限周りが好きでSTNS、Assume Role、OAuth周りも好きですね。 今後腰を据えてやっていきたいです。 冨: 社内でshell芸人って呼ばれていたりしますけどその辺は? 磯: あとで読み返すのが厳しいですね。 一時期はログを解析するのでやっていましたが最近は別のエンジニアがやってくれるようになったのでshell芸人力が下がってきました(笑) 将来のビジョン 冨: 今後どういうエンジニアを目指していますか? 磯: 社内のドメイン知識に寄りすぎているので、もっと技術的な部分を伸ばしていきたいですね。 冨: 社歴が長いとそうなることが多いですよね。 磯: 仕事、プライベートともにOSSにできるものを公開してきたいです。 冨: それはなぜですか? 磯: OSSを使うだけでなくて、もっと貢献していきたいですね。 他のメンバーのお手本になるように率先してやっていこうと思っています。 自分の技術力で社会に貢献ができるし、会社のプレゼンスもあがるので。 冨: 取り組みはどのようなことをしていますか? 磯: 今、社内のOSSのルールを策定中です。 また、社内で利用しているライブラリもOSSで公開できるようにしていきたいと思っています。 iOS黎明期のライブラリは洗練されていなかったので機能追加やバグ修正の手が出しやすかったのですが、いまは洗練されているので手を出しにくいですよね。 他のメンバーも手を出しやすいように、小さいものでも公開していきたいと思ってます。 冨: <git管理しているファイルを透過的に暗号化、復号化するためのフィルター>をOSSとして公開していますが、きっかけを教えていただけますか? 磯: 自分が純粋に欲しいものを作りました。 冨: これはgolangで書かれていますが、golangを先に勉強していたから選んだのですか? 磯: これをつくるためにgolangに手を出しました。 デーモンとして状態を保持できる言語であればなんでも良かったのですが、マルチプラットフォームで動くのと、ちょうどその頃golangの流行が落ち着いてきて、手を出そうと思いました。 環境構築の方法が固まっていなかったりするので、あまり流行りのものには手を出さないですね。 次回予告 冨: この人のスキルアップ術を聞いてみたい、またはお薦めなエンジニアはいらっしゃいますか? 磯: iOSアプリエンジニアの高橋庸介さんに聞いてみたいです。 交流がない人で聞いてみたい人の縛りにした方が良いんじゃないですか? 冨: それではその縛りでやってみましょう! 編集後記 アウトプットドリブンでインプットされている点が印象的ですね。 遅延評価勉強法 に近い感じでしょうか。 私はつい本から入ってしまい、わかった気になって結局アウトプットを出せていないので、アウトプットを出すためにはこの方法が良いのかもしれませんね。 お知らせ LIFULLではエンジニアをはじめ各職種で採用を行っております。 こんなエンジニアと働きたい!という方は弊社の採用サイトもご覧ください! recruit.lifull.com *1 : 2017年4月よりCxO職を新設
アバター
こんにちは。iOS開発Gの池田です。 本日はとうとうWWDC最終日! 今回は最終日の様子、セッションについての内容、最後に昨日の夜にあったBashの様子について書きます。 (前回の記事は こちら ) 出発 最終日!ということで、ちょっとした気合いを入れつつホテルを出たのですが、こんな日に限ってあいにくの雨模様。 ここ最近の晴れ具合であったり、UBERで乗せてもらった方から聞いた話からも雨降りはなかなかレアな気がします。 そんなレアな天候の中、VTA(Santa Clara Valley Transportation Authority)に乗って会場に向かいました。 会場の様子 WWDC最終日はセッションも少なく、ラボも早い時間で閉まってしまいます。 そんな事情もあるため今日はほとんど人いないんじゃ、、と思ってたのですが、全然そんなことなかったです。 多くの人で会場は賑わっています。 今日はアツく揺さぶられるセッションが午前中なかったため、作業スペースで開発作業を進めていました。 セッションの動画も流れています。 そうこうしているうちに午後のセッションの時間になり、セッションに参加してきました! セッション 今回参加したセッションは、「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が挙げられていました。 可能な限り標準のコントロールを利用する AutoLayoutのようなモダンなレイアウトプラクティスを利用する NSAttributedStringを利用している場合、確定しているattributesは明確に指定する 3.の具体例で挙がっていたのは、directionやlineBreakModeです。 確定しているなら指定しておいた方が推測のコストが省けるため、若干パフォーマンス改善するそうです。 The Bash WWDCでは毎年Apple公式の打ち上げのような形で The Bash が開催されます。 Bash の会場では食事やお酒が無料で提供されており、最中には有名なアーティストのライブもあります。 下の写真は会場に向かう橋です。 開場の20分ほど前に行ったのですが列ができており順々に数十人のグループで区切って通されます。 いっぱい乗ると落ちるぞ、みたいなことを言っています。怖いです。 この橋を超えて会場に入りました。 開場直後に入ったので、ぼちぼち人が人がいる程度です。 食事やお酒が提供されています。 そしてアーティストライブの時間がやってきました! 今年のゲストはFall Out Boy!!!! 前の方では飛び跳ねて盛り上がっている人たちも! すごくかっこいいライブでした! 徐々に日は落ち、お酒も入りみんなテンションが上がっています。 机の上で踊り出す人々も出てきました! 大勢の人で盛り上がった Bash も22時頃でクローズし、公式の打ち上げ(っぽいイベント)も終了です。 最後に 1週間に渡り様々な発表、ラボが開催されたWWDCも今日で最終日です。 ですがエンジニアにとっては、発表された技術をどう活かしてどうサービスに繋げていくか、それを考えて作っていく日々が始まったばかりです。 WWDCで発表された技術、情報を素早くキャッチアップして今後に繋げていきたいと思います! 私たちの会社でもWWDCの素早いキャッチアップに繋がるよう共有会を開催しますので、ぜひいらしてください! lifull.connpass.com WWDC最終日の記事は以上となります! ありがとうございました!
アバター
昨日の記事 に引き続きこんにちは。iOS開発Gの塙です。 4日目ともなると現地のエンジニアは今回発表された機能の実装をだいぶ進めているみたいです。 外のベンチにはただ空を眺めている方、俯く方、頭を抱える方。十人十色です。美しいですね。 皆さんも実装が詰まって何時間も考える時があると思います。 そんな時WWDCでは問題解決をしてくれるスペシャリストが待機している場所があるのです。 今回はその場所の話とセッションの話をメインで書きたいと思います。 これは通称"小田原"と呼ばれているオレンジジュースで、ほぼ毎年WWDCで配られています。ジョブスが好きだったとか。ではまずセッションのお話から。 Focus Interaction in tvOS 11 今回KeynoteではAmazon Prime Videoの話しかされなかったtvOSですが、API Referenceを見るとそれなりに変更があったので聴きに行きました。 セッションの席がガラガラですね、大丈夫でしょうか。 ※ LIFULL HOME’S アプリはtvOSにも対応しています。 最新バージョンでは CoreBluetooth や Flyover に対応しております。AppleTVをお持ちの方はぜひダウンロードしてみてください。 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 の継承クラスに SKNode と SCNode が追加されている。 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…などの開発者に相談できるんです。 そこで答えが出ないなら諦めがつきますもんね。頭を抱えて作業が進まない状況を無くせます。 ラボにも色々な種類があり、昨日の記事で紹介した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に行くときはぜひ質問を投げに行ってみてください。 では、最終日も楽しく元気に学びましょう。 今日はよくわからないファミレスのような場所で書いています。このタコスのようなポテト素敵な味がします。アディオス。
アバター
こんにちは。iOS開発Gの塙です。 本日でWWDCは3日目です。早いですね。イベントも中盤まで差し掛かり、デベロッパーの血と汗の結晶である技術情報がウェブ上にチラホラ出て来ていますね。感謝の気持ちを忘れずに根こそぎ吸い上げていきましょう。前日の記事は こちら です。 「What’s New in WatchOS4」と「What’s New in Foundation」のセッションがあったのでwatchOS4とSwift4について書きたいと思います。が、その前に今回も会場の様子をお伝えしたいと思います。 WWDCは期間中食事を無料で提供してくれます。今日のお昼ごはんはサラダです。野菜はいいぞ。味については触れませんが、日本って本当に食に恵まれているんだなあと思いました。味については触れませんよ。 もちろんドリンクも無料です。お財布が寂しい私は毎日歓喜してます。コーヒーは(おそらく)スターバックスでとっても美味しいです。一体何リットルのコーヒーがこの会場に運ばれているのでしょうか。なんとなく恐怖です。 物販もやっています。WWDC限定の商品があるので毎年1,2日目には品薄状態になってしまいます。iOSエンジニアはここのTシャツをドヤ顔で着るのがスマートだと思います。 毎年近場で行われているAltConfというApple製品のデベロッパーカンファレンスがあります。私は去年このイベントをメインで参加していました。なぜなら無料だからです。受付の方、お茶目ですね。 AltConfはスポンサーの企業が会場内にブースを作り、グッズや製品を置いて客寄せしています。このTシャツはもちろん無料です。寝巻きに最適です。 本日は User Interface Design Lab という予約制のラボ(相談に乗ってくれるブース)に行って来ました。近年では毎朝7時に当日の予約が開始されるのですが、1~2分で満席になるというとても貴重なラボなのです。WWDCに行く場合はぜひチャレンジしたほうがいいと思います。 なんとなくWWDCに行った時のイメージが湧きましたか?湧きましたね。ということでwatchOS4とSwift4(一部)を紹介したいと思います。 watchOS4 Core ML iOSと同様に機械学習モデルを扱えるようになるフレームワークが追加されました。 watchOSは近年スポーツや健康管理の機能強化をしているので、そのデータと機械学習を組み合わせて面白いことができそうですね。 SiriKit こちらもiOSと同様にSiriKitのIntent Domain(できること)に「List nad Notes」が追加されました。サードパーティ製アプリのメモやタスクをSiriから登録できます。 また下記のIntent Domainに追加された機能もiOSと同じですね。 Ride Booking : キャンセルとフィードバック機能 Payments : 送金とアカウント検索機能 HomeKit こちらもまたまたiOSと同様に下記のトリガーが追加されました。 HMSignificantTimeEvent : 日の出/日没時間 HMCalendarEvent : 特定の日時 HMDurationEvent : タイムインターバル(繰り返し時間) HMCharacteristicThresholdRangeEvent : 接続されたデバイスの出力する値の範囲(温度や明度など) HMPresenceEvent : ユーザーの有無 Apple Pay こちらもまたまたまたiOSと同様に支払い情報と認証エラーをハンドリングできるようになりました。 ここまで読んでいてがっかりされている方が多いと思います。私もアプリのストリーミングでセッションを聞いていて、途中でそっとスリープボタンを押そうとしてしまいました。ただ、次のアップデートは夢があると思います。 Core Bluetooth ついにwatchOSにCore Bluetoothが追加されました。Apple Watchから様々な機器を操作できるようになりますね。ただし下記の制限があります。 セントラル(見つけに行くデバイス)のみ可能 ペリフェラル(見つけて貰うデバイス)は2台まで 接続インターバルの時間は フォアグラウンド : 30ms / バックグラウンド : 120ms バックグラウンドでは接続のみ可能(スキャンはできない) ペリフェラル側はアプリが停止したら接続解除される Swift4 様々なアップデートがある中で、私のまわりで最もザワついた項目である Codable のみ取り上げたいと思います。 Codable Swiftのstructやenumを簡単にシリアライズ/デシリアライズできるようになりました。 struct Person : Codable { enum Child : String , Codable { case son, daughter } let name : String let age : Int let children : [Child] } let person = Person(name : "Foo" , age : 10 , children : [.son, .daughter] ) let data = try? JSONEncoder().encode(person) デコードもできます。JSONデータを外部ライブラリを使用してパースしなくて済みますね。 let person = try? JSONDecoder().decode(Person. self , from : data ) 少し詳しくQiitaに投稿したのでご確認いただければと思います。 qiita.com では残り2日間楽しみながらたくさん学んでいきたいと思います。アディオス。 宿泊先のホテルです。ちょっとカッコつけてみました。
アバター
こんにちは。iOS開発Gの池田です。 本日はWWDCの2日目です! 今日(6/6)から金曜日(6/9)まで新OS、新機能の技術的なセッションやラボが目白押しです。 今回は会場の様子を少しとセッションについて、最後おまけです。 (前回の記事は こちら ) 会場の様子 会場内の休憩&個人作業スペースです。 みんな思い思いにソファーや机に座って作業をしています。 この写真は人が少ない時間帯に撮りましたが、セッションの合間や昼の時間にはごった返します。 ちょっと見えづらいですが2枚目の写真の中央下部あたりではセッションのリアルタイムストリーミングも行われています。 セッションについて 私が参加したセッションは、以下3つです。 それぞれポイントになる内容を振り返ります。 Your Apps and Evolving Network Security Standards Introducing Core ML Introducing ARKit Your Apps and Evolving Network Security Standards ATSで「信頼されない」、「信用される」を分ける基準が話されていました。 具体的には以下のように信頼する・信頼しないの基準が分かれます。 [×] 信頼されない [○] 信頼される Encryption [×] RC4 3DES-CBC、AES-CBC [○] AES-GCM、ChaCha20-Poly1305 Cryptographic Hashes [×] MD5、SHA-1 [○] SHA-2 Family Public Key [×] < 2048-bit RSA [○] ≧ 2048-bit RSA、Elliptic Curves Protocols [×] httpプロトコル、SSLv3、TLS 1.0、TLS 1.1 [○] httpsプロトコル、TLS 1.2+ Revocation [×] No checking [○] OCSP Stapling Introducing Core ML Core MLでは様々な機械学習ライブラリで作成したモデルをアプリ内に統合して、ある入力に対する出力を予測する機能を提供できます。 対象OS macOS High Sierra以上、iOS11以上、watchOS4以上、tvOS11以上 Core MLの良いところ 機械学習の処理、データのやりとりがデバイス内で完結するため、以下のメリットがあります。 ユーザーのプライバシーを侵害しない データのコストが必要ない サーバーのコストが必要ない 通信環境等によらず、いつでも使える モデルについて モデルは入力を受けて予測の結果を出力するFunctionのようなものだ、という話でした。 入力には、画像やテキスト等が用いられ、出力として予測結果を得ます。 デモの中では花(バラ等)の画像をモデルに入力し、文字列として予測結果出力していました。 Core ML Tools pythonで作られているモデル変換ツールでオープンソースです。 有名な機械学習ライブラリのモデルをCore ML用のモデルに変換することができます。 Core ML導入の手順 デモの中でCore MLの導入手順を一通りやっていました。 導入手順は以下5手順です。 オープンソースの機械学習ライブラリでモデルを作成する Core ML ToolsでCore ML用のモデルにコンバートする できたモデルをプロジェクトにドラッグアンドドロップする Core ML用モデルのターゲットを設定する  (自動でSwiftファイルが生成される。) 生成されたモデルの結果出力メソッドを利用して実装する Introducing ARKit ARKitでは、iOSデバイスのカメラに写っている現実の映像とSceneKit、SpriteKit等で作成した仮想現実の物体を同時に表示し、あたかも現実に仮想現実の物体があるように見せることができます。 こちらのARKitは今回の発表の中でもなかなか興味深い新機能だと思います。 日本にいる弊社の新卒エンジニアがサンプルを使って早速試してました! 対象OS iOS11以上(A9プロセッサ以上) トラッキング iOSデバイスの移動、回転に伴って仮想現実の物体も移動、回転、縮小をします。 現実に物体があるのと同じような動作をするのでカメラを通した映像には実際物体があるかのように見えます。 平面の認識 カメラの映像を通して現実にある床等の平面を認識します。 仮想現実の物体は認識した平面の上に乗っているように見えるよう位置調整されます。 光の予測 現実の映像が暗いと仮想現実の物体が暗くなる、仮想現実の物体が光っていると現実の映像が明るくなる等、現実と仮想現実が相互に光の干渉を行います。 デモ デモは2つ行われていました。 1つ目は仮想のカップ、花瓶のような物体を現実の映像内に配置するデモです。 現実のテーブルの平面が仮想の物体に影響を及ぼし、テーブル上にカップや花瓶が乗る様子が見れました。 2つ目は仮想のカメレオンがテーブル上に乗っているデモです。 このデモでは、カメレオンの周りを回るようにカメラを操作すると、カメレオンの顔かリアルタイムでカメラの方を見る様子が見れました。 カメレオンがその場にいてまるでこっちを見ているかのように見えるデモです。 現実と仮想現実が繋がっているように感じられる感覚が強いデモで、それをたった1台のiPhoneでやっていると考えると、未来感があるデモでした。 おまけ 会場の前の広場でWWDC参加者限定のパーティがやっていたので、ちょろっと参加してきました。 バンドの演奏もやっており、バンド前ではダンスをしている方も♪ 多国籍な会で私はロシアの男性エンジニアの方と、元々日本にしばらく住んでいた女性エンジニアの方などちょこちょこ交流してきました。 1時間弱の短い時間でしたが大変楽しい夜でした! 本日は以上です!それでは!
アバター
こんにちは。iOS開発Gの塙 is in California です。 本日から開催されたWWDC 2017ですが、みなさんKeynoteはご覧になったでしょうか?まだですよね?はい、では開演までの流れと共にKeynoteの内容をお送りしたいと思います。 7:30AM 同じホテルの参加者は5:00AMから会場に並んでいる中、我々はゆっくり起床して優雅にVTA(Santa Clara Valley Transportation Authority: 路面電車)に揺られながら会場に向かいました。 8:30AM 会場に着くとそこには長蛇の列が…と思いましたがそこまで待つこともなくスムーズに入場口まで行けました。 9:00AM 会場内に入れました。中にも長蛇の列が続いており、なかなか前に進まなくなってきました。きっとみんな無料提供の朝食にガッついていたのだと思います。ちなみに私は出遅れてしまい朝食が品切れになってしまったのでりんごをひとつだけ頂きました。ひもじい。 9:30AM ついに公演の行われるホール内に到着しました。すごい、すごい熱気です。開発者も報道陣も皆鼻息が荒いです。私も先ほど頂いたりんごを食べながら鼻息荒くしてました。 10:00AM ついにKeynoteが始まりました。大きな発表としては以下のようになりましたね。 macOS High Sierra Apple File System(APFS)を採用したことによりファイルの読み書きがかなり早くなりました。 Metal VRに対応したことでVRコンテンツを開発/プレイすることができます。 iOS11 コントロールセンターが1画面になり、操作性が向上しました。 MusicアプリにSNS要素が加わり、友人などのプレイリスト/再生履歴の閲覧が可能になりました。 ARKitでARコンテンツの開発が可能になりました。 Core MLで機械学習モデルを利用した開発が可能になりました。 MusicKitでAppleMusicのおすすめ情報やランキングなどを取得できるようになりました。 ApplePayで個人間の支払い機能が追加されました。 Siriの翻訳機能が追加されました。(日本は未対応) AppStoreのデザインが刷新、新たにToday/Games/Appタブが追加されました。 watchOS4 Siriがメインの時計盤インタフェースが追加されました。 映画トイストーリーに出てくるキャラクターの時計盤インタフェースが追加されました。 Workoutがトレーニングマシンと連携、よりパーソナライズされたデータを扱えるようになりました。 tvOS11 沈黙状態だった、Amazon Prime Videoがついに見られるようになりました。 iMac Pro GraphicにはRadeon Vega graphics、プロセッサは最大18コア、メモリは最大128GB、27inchで5Kとなりとてもハイスペックです。 HomePod Siriを搭載した高性能スピーカー、音楽だけでなく天気やカレンダーの情報などAIとして機能します。 HomeKitと連帯しているためiPhoneでの操作も簡単に行えます。 特に音の良さを公演中は推していて、かなりの時間力説していました。 魅力的なデバイスやAPIが盛りだくさんですね。特にARKitはゲームだけでなくライフスタイルアプリにも親和性が高いので開発者の心を擽ります。ただ、HomePodが蚕のマユにしか見えないです… また、デベロッパーサイトの「What’s New iOS11」を読んでLIFULL HOME'Sだけでなく、様々なアプリに活用できるのではないかなと思った、気になる機能追加をまとめたのでこちらに載せたいと思います。 What’s New iOS11 気になる機能追加まとめ バーコードの生成と読み取りをサポート バーコードの検出や作成をサポートするAPIを追加 iOSでドラッグ&ドロップをサポート PCのカーソルで行うようなアイテムのドラッグ&ドロップ移動が可能になった 異なるアプリ間のドラッグ&ドロップも可能(iPadのみ) ドキュメントブラウザ クラウドまたはローカルに保存されたドキュメントファイルを表示できる 画像認識 顔、バーコード、テキスト、画像の水平線や長方形の領域を検出できる 機械学習用のフレームワークを使用して任意の学習モデルを使用できる ビデオ内のオブジェクトを認識して追尾できる SiriKit QRコードを使用して支払いや連絡先の交換が可能になった メモの追加、予定やリマインダーの追加が可能になった 乗車キャンセルとフィードバック機能が追加された アカウント検索と送金機能が追加された ライブメッセージ 動的なメッセージ表示できる機能が追加された High Efficiency Video Coding(HEVC)対応 とっても綺麗な動画エンコーディング High Efficiency Image Format(HEIF) とっても綺麗な画像エンコーディング Live Photoの編集 Live Photoにループやバウンスなどのエフェクトが追加された Live Photoなどの特定の種類のメディアライブラリを提示できるようになった Core Bluetooth frameworkの改良 L2CAPチャンネルをサポート Bluetoothのリセットと再起動時にセッションの復元ができるようになった Core NFC NFCタグを検出/読み込みが行える 少し技術的なことも追記したものをQiitaにアップロードしたので合わせてこちらもよろしくお願いいたします。では二日目も元気に頑張りたいと思います。アディオス。 qiita.com
アバター
こんにちは。iOS版LIFULL HOME'Sアプリ開発を担当している高橋です。 今年の3月にtvOS版LIFULL HOME'Sアプリをリリースすることができました。 そこで得たノウハウを他の開発者の方々に共有したく、「Developer’s Living - tvOSアプリ開発 -」を開催しました! 今回はその内容についてレポートしたいと思います。 発表 AppleTV Best2016にノミネートされたけどそれほどビジネスインパクトない件 speakerdeck.com jumbOS5 さんの発表です。 Apple TVアプリ「LandSkip」を開発された際に感じたApple TVビジネスの難しさと、 開発する場合に意識すべきことを発表していただきました。 Apple TVアプリビジネスの難しさ LandSkipは2016年のベストアプリにノミネートされたものの、あまりビジネスメリットがなかったそうです。 ブラウザのないApple TVはWebとの連携が弱く、アプリからWebへの流入やWeb広告でのユーザ獲得といったことができません。 そのため当初期待したプロモーション効果等はあまりなかったそうです。 それでもApple TVに挑戦する場合に意識すべきこと、 やるかやらないかを判断する条件について解説いただいています。 HomeKit on tvOS speakerdeck.com @alligator_tama さんの発表です。tvOSでHomeKitを使ってできることや、 アプリを開発して苦戦したことについてご紹介いただきました。 Origamiアプリ 最初はtvOS版 Origamiアプリのご紹介でした。 TVMLで実装されているとのことで、Live Updateでリリースの手間を削減されているとのことです。 tvOSのHomeKitアプリを作る tvOSアプリでもHomeKitを使って宅内のアクセサリを発見して操作できるそうです。 ただしiOSと違いホームの編集等はできないそうです。 今回デモ用のtvOSアプリを開発した際にハマった点についても共有いただきました。 フォーカスの制御のために使ったプロパティやプロトコル、デバッグツールについて紹介していただきました。 L知っているか tvOSアプリは iOSアプリと全く異なることを L知っているか tvOSアプリは iOSアプリと全く異なることを from Takuro Hanawa www.slideshare.net 弊社の 塙 拓朗 の発表です。 tvOS版LIFULL HOME'S開発で得たいろんなノウハウ フォーカス 画面デザイン カスタムトランジション 画像のプリフェッチ エッジスワイプ など様々な内容を紹介させてさせていただきました。 特に後半のRemoteのエッジスワイプの実装方法については、 Gesture RecognizerだとRemoteにおけるタップ位置の絶対座標が取得できないため、 代わりにGameControllerを用いるという意外な手法となっています。 tvOS版LIFULL HOME'Sでは、このエッジスワイプを用いることで、 Mapと同じ操作感で画像を拡大表示する機能を実現しました。 tvOS開発前に確認すべきこと tvOS開発前に確認すべきこと from 庸介 高橋 www.slideshare.net 私( @yousan )も発表させていただきました。 今回リリースに向けて開発することになり、直面した2つの問題についての共有でした。 SDK問題とUniversal Purchase問題 iOS開発の際AWS、Google、Firebaseなどが公開しているSDKを使うことは多いと思いますが、 その多くがtvOSをサポートしていません。今回LIFULL HOME'Sでは自分でWeb APIを叩くよう実装しました。 Universal Purchaseでアプリを配信するとiOSデバイスとApple TVにアプリが同時にインストールされます。 これによりアプリに対するユーザの認知は向上しますが、tvOS版だけ配信停止することができなくなります。 今後のアプリの展開やリソース状況によってはUniversal Purchaseにしない選択も検討すべきです。 まとめと告知 tvOSアプリをリリースした人は少ないと思いますが、その分大変新鮮な勉強会になった気がします。 単純なアプリの実装方法だけではなくビジネスやHomeKitに関する発表があり、 いろんな角度から今のtvOSの状況を知ることができたと思います。 ビジネスとして展開するには現段階では難しいかもしれませんが、 WWDCではApple TVも進化して市場が活性化することを期待したいです! ちなみに弊社ではWWDC報告会を開催予定ですので奮ってご参加ください! lifull.connpass.com
アバター
こんにちは。LIFULLの池田です。 とうとう明日からAppleのWWDCがSan Joseで開催されます! 今回は、日本出国から現地でのWWDCチェックインまでです。 (前回の準備編は こちら 。 ) 成田空港〜サンフランシスコ国際空港(SFO) WWDC会場のSan Jose McEnery Convention Centerの最寄りの空港はノーマンY.ミネータサンノゼ空港ですが、今回は予約の際に安く航空券が手に入ったサンフランシスコ国際空港(SFO)を選びました。 成田空港で航空会社のチェックイン、出国審査を行いいざ飛行機へ。 今回はユナイテッド航空でサンフランシスコに向かいました。 9時間半のフライトの末、サンフランシスコ国際空港に到着。 サンフランシスコ国際空港ではイミグレーションに長蛇の列。。 普通にいくと1, 2時間はかかりそうな列。 その列に並びながら横を見ると「Returning ESTA」の看板が! ESTAをとって2度目以降のアメリカ入国だとイミグレーションの手続きが違うらしく、私たちは運良く2度目以降の入国だったため、そちらの方へ。 少しの列はありましたが、15〜20分くらいで手続きを終え先に進むことができました。 そんなこんなで入国完了! 時差ボケと戦いながらアメリカでの活動スタートです! WWDCのチェックイン WWDCのチェックインは開催前日のAM9:00から。 会場はSan Jose McEnery Convention Centerです。 会場の近くにはVTAのLight Railの駅(San Jose Convention Center Transfer Station)があり、$2で距離に関わらず1回の片道乗車ができます。 今回はこのLight Railを利用して会場に向かいました。 下の写真は路線図。 駅から降りるとすぐそこにはもう会場が! 建物全体にWWDCの装飾が施されています! だんだん実感が湧いてきました! 混んでいるというほど人はいないですが、それなりの人がいて賑わっています。 会場前の広場では参加者に対して食事と飲み物が無料で提供されています。 右奥のチェックインカウンターでWWDCのチェックインをします。 チェックインではWalletアプリに登録済みのWWDCパス内のバーコードを読み取ってもらいます。 この読み取りが完了するとパス、リストバンド、記念品のジャケット、ピンがもらえます。 これでチェックイン完了です! とうとう明日はWWDC初日! Keynoteで何が発表されるのか楽しみです!
アバター
こんにちは。iOS開発グループの塙です。 来週の6/5-9にCA, San JoseでWWDC 2017が開催されます。 WWDCとはAppleが毎年開催している開発者向けイベントで、 Appleの新しいデバイスやOSなどの発表が行われます。 developer.apple.com 今回はWWDCに参加するまでにはどんなことをすればいいかを書きたいと思います。 抽選に応募する 応募資格としてはApple Developer Programが必要です。 個人だと年間1万円くらいかかりますが、月額にすればたいしたことないので macOS,iOS,watchOS,tvOSの開発を考えている方は登録しましょう。 上記を満たしていれば1-2月辺りに突如Appleからメールが来ます。 このメールと共に募集が開始するのですぐに登録しましょう。 ただし当選した場合、自動でクレジット決済されてしまうのでお財布と相談してください。 入場チケットの料金は20万円弱くらいです。高い… 抽選に当選したら このようなメールが届くので、近所迷惑にならない程度に喜びましょう。 外れてしまった場合は、近所迷惑にならない程度に泣きましょう。 航空券とホテルを確保する まずやらなくてはいけないのが航空券とホテルの確保です。 この当選発表と共にWWDC会場近辺に到着する航空券、会場近辺のホテルの予約が殺到します。 (真のApple信者の方々は抽選結果がわからない内から予約をしています) 今回はAppleから当選者に向けた良さげなホテルの提供があったのですが、如何せん高い。 お金持ちでない限りはExpediaなどでそれなりの航空券とホテルを探しましょう。 日本人コミュニティに入る 次に必要なのは日本人の知り合いです。特に1人で初めて参加される方は必須です。 やはり土地勘のない場所で単独行動するのは心細いものです。 そんな時は国内で参加者同士のミートアップが行われるのでたくさん参加して仲良くなっておきましょう。 私は今年Timersさんのミートアップで去年自腹で行った時の内容を発表させていただきました。 詳しい方から有益な情報を聞き出せたりするのでおすすめです。 画像提供: Timers inc. さんありがとうございます。 お外に出たくない。もっと知り合い作りたい。という方向けにFacebookやSlackのコミュニティがあります。 毎年抽選結果がわかるころには作成されているので"WWDC"で検索して参加リクエストを送りましょう。 現地でのイベント情報の共有や、ご飯のお誘いなどに利用されています。 パスポートの期限を確認する アメリカの入国にはパスポートの期限が3ヶ月残っていることが望ましいので、 ギリギリの方は更新しましょう。まだ持ってない方は早く取りましょう。意外と面倒です。 ESTAを取得する ビザを取得せずに入国する外国人に対してESTAの事前申請が義務化されています。 取得自体はすぐできるので搭乗手続きまでには絶対に行なってください。絶対です。 (去年取り忘れていて倍以上の値段で航空券を再度購入した) 保険とWifiの準備 あとは任意になるのですが、保険とWifiはあった方がいいです。というか必須です。 保険: San Franciscoの時はかなり治安の悪い場所で開催されていたので必須でした。海外行く時は大体入りますよね。 Wifi: 去年は自腹でお金がなかったので借りなかったのですが、公共Wifiがない場所で迷子になります。 周辺イベントに参加申し込みする WWDCに参加する準備は大体整い、余裕が出て来た頃に周辺で行われるイベントを探してみましょう。 以下のアプリを使用するとたくさんの企業が開催するイベントが見れます。 Parties : Appleが提供していて、主に企業が開催する周辺イベントを管理できます。 Eventbrite : 現地に住む日本人エンジニアのミートアップなど小さなイベントも見つけられます。 AltConf : 毎年WWDCのセッションと同じ時間帯に行われている大きなイベントのスケジュールが見られます。 WWDC公式アプリをインストールしておく 現地で発表が始まるとスケジュールが公開されます。 通知が来たり、セッションの動画がストリーミングできたりする優れものなのでとりあえず入れておきましょう。 https://itunes.apple.com/jp/app/wwdc/id640199958 Uber/Lyftアプリをアクティベートしておく 向こうの電車は味があって好きですが、本数も少なく時間も曖昧なのでUber/Lyftを使いましょう。 ただしアプリのアクティベートには電話番号が必要なので、現地でアクティベートが困難になる場合があります。 なので国内にいる内にクレジット登録とアクティベートを済ましておきましょう。 Uber : 日本ではまだドライバーが少ないですが、アメリカはわんさかいます。 Lyft : 知らない人と相乗りができるUberです。私は楽しいのでこっちをメインで使ってました。 身体を大事にする 私は健康管理が下手くそなのでこれが一番大事だと思っています。最近は野菜ばかり食べてます。野菜はいいぞ。 あとは参加するだけです。では現地で会いましょう、アディオス。 宣伝をする 弊社でWWDCの報告会を開催予定ですので奮ってご参加ください。 lifull.connpass.com
アバター