AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

カテゴリー: イベント

iOSDC Japan 2017で東急ハンズのiOSデバイス管理手法について話しました


こんにちは。
きんちゃん。(Yusuke Kuroiwa)です。

少しだけ、自己紹介します。
東急ハンズで利用している、HandsPOSと呼ばれる自社のiPad POSレジシステムを、Swiftで1から開発してきました。
普段はiOSエンジニアですが、2015年6月頃から東急ハンズの要件にマッチした、デバイス管理も模索しました。

9月17日に、iOSDC Japan 2017東急ハンズのデバイス管理についてお話してきました。
私は、昨年もiOSDCにて、お話をさせて頂きました。
時間がない、スライドだけみたい人は一番下に貼ってます。
スライドの補足もしてるので、ぜひ読んでほしいです。

iOSDC Japanとは

iOSDC (iOS Developers Conference Japan) は、iOSとその周辺技術に関するエンジニアのためのカンファレンスです。

昨年から始まり、今年が二度目のカンファレンスです。
会場も大きくなり、参加者も増え、セッション数も増大しました!
勉強になるようなセッションが多く、懇親会含め非常に楽しかったです。
スタッフの皆様お疲れ様でした。

発表概要

東急ハンズでは、現在3500台超えのiOS端末を管理しています。
主となるのは、PDAとPOSレジです。
弊社はPDAとPOSを、それぞれiPod touch(iPhone)、iPadに自社アプリを組み込み店舗へ配布しています。
今後、POSの展開が進む中、最終的な管理台数は、4600枚ほどに登る予定です。
さて、このような大量のiOS端末はどのように管理するべきなんでしょうか。
iOSDC Japan 2017では、これらの端末を管理するための実際に得た知見、問題点&ハンズラボが実践するエンタープライズ的対処方法についてお話致しました。

iOSのデバイス管理するための課題と解決

実際に大量のデバイスを管理するとなると、下記のような要件が出てきます。

  • キッティングの問題: 開梱してちまちま設定する必要があり、作業を簡略化してして楽にしたい
  • 業務アプリ(In-House app)配布・管理
  • AppStoreにあるようなアプリを配布・管理
  • 社内ネットワークに接続するためのWi-Fiの設定情報の配布
  • デバイスの紛失時の対処をどうするか

上記のような課題は、MDM(Mobile Device Management)やその他の周辺のサービス、合計4つのサービスを利用することで解決ができます。
4つのサービスの詳細は、スライドを参照を。

MDMから端末へアプリインストール通知が届かない問題

MDMを使えば、管理が簡単になり、キッティングも簡単になり、ハッピーになりました。
ですが、サービス仕様的に回避しようがない問題がたまに現れます。

その1つが、MDMから端末へアプリインストール通知が届かない問題です。
MDMからの端末へコマンド発火はすべてプッシュ通知と同じ原理(APNS)を利用しています。
その為、プッシュ通知が届かない端末へは、デバイスの各種情報、アプリのインストール情報、アプリインストール等ができなくなります。

この中でも特にアプリインストールに関しては、自社のPOSレジ(HandsPOS.app)を配布運用している弊社には大問題です。
プッシュ通知がとどないと、アップデート出来ないのです。
アップデートに失敗すると店舗内で隣のPOSレジはある機能が乗ってるけど、また隣のPOSレジはその機能がないというような問題が発生します。

プッシュ通知が届かないのは、デバイスを再起動を行えば、一時的にプッシュ通知が届くようになりなりますが、数日経てばまた届かなくなります。
根本的な、解決に随分の時間を割いてきました、ポートを開けたり、Wi-Fiを切れないようにしたり、、、根本の解決できず諦めました。
ようわからん。

弊社は、Harakiri-Updater(切腹アップデート、自社でのアプリアップデート手法の呼称)で回避しています。
CrashlyticsのAd-Hoc配信でも同じような方法が利用されていました。

下記に貼っつけているのが、実際にHarakiri-Updaterを行ってみた動画です。

  1. アプリが起動した瞬間に、サーバへ必要なバージョン情報を取得
  2. 必要なバージョンより自分のアプリのバージョンが下回っていれば画面にアラート
  3. 従業員の了解を得たら、スライドに乗ってあるURLスキームを開きます( UIApplication.shared.openURL(plistURL) )
  4. アプリを自爆します。※
  5. URL scheme契機で、システムアラートが表示されます。これはたとえ、アプリが死んでも死ぬ前に発火しておけば表示可能です。
  6. 「インストール」ボタンを押してインストールを続行します。

※ iOS 10以下であれば、自爆は不要です。iOS 11では5番で出て来る「インストール」ボタンを押しても自爆しません。
if #available(iOS 11.0, *) 等で対応しておけば良いでしょう。

他にも

上記で紹介した問題にもエンプラのiOSアプリを運用するにはたくさんの課題と解決をしてきました。
昨年のiOSDCでは下記のような内容もお話しました。

  • iPadを有線化する
  • プッシュ通知でアプリを殺して自動アップデートする
  • iPadがスリープ状態でもお行儀とか考えず、バックグランドで音声流して大量のデータを裏でさばく
  • キッティングが問題ないかを確認するために LibMobileGestalt.dylib の利用

バッドノウハウを駆使してでも業務要件に答えなければなりません。
ですが、安定性が一番大事です。そこも考慮しつつ実装・導入は欠かせません。
HandsPOSに関しては、Crash freeは98%-99%です。

iOSの話ししながら手羽先食べます

【iOSエンジニア向け】ハンズラボようこそiOS手羽の会
2017/09/27(水) 19:30 〜 21:30、東新宿で行います。
うまい手羽先食べながら、弊社のことはもちろんですが、iOSについても話しましょう!

スライド公開

スライド公開しているのでぜひ見てください。

nsnextstep.fmにて

先日のnextstep.fmで、今回のiOSDCの中で面白かった発表と評価いただけました!
ありがとうございます!


iOSDC Japan 2017にブースを出展してきました


こんにちは!POSチームの渡邉です。
新卒として2017年春に入社し、7月からPOSチームでえっちらおっちら頑張ってます。
頑張ってブログも書いていきます!よろしくお願いします!

さて、iOSDC Japan 2017、盛り上がりましたね〜!

弊社はダイヤモンドスポンサー、Tシャツスポンサー、ブース出展、エンジニア2名登壇と
気合が入ったイベントになりました!

登壇した黒岩の資料駒場の資料も合わせてご覧ください。
今回はブース出展にスポットを当てて書いていきますよー!

ブースの様子

イベントといえば、ブース出展といえば、
やっぱりノベルティグッズですよね!
ブースでなにか配っていたらとりあえずもらっちゃうのは私だけではないはず。

弊社はロゴステッカーと公式キャラクター「らぼたん」のステッカー、

そして新しく製作したラバーコースターを準備しました。

 

弊社黒岩が飲んでいたビールを奪って撮った使用イメージはこちら。

ラバー製だから結露してもこぼしても大丈夫なんです!

そしてブースの目玉は、
東急ハンズで実際に使われているiPadPOS「HandsPOS」の展示&デモです!

じゃーん

HandsPOSはiPadを2台使っています。
1台はお客さん用ですが、もう1台は店員さんが操作するものなので
店舗でも滅多に見られない画面を見ることができ、
バーコードを読み込ませて店員さん体験もできるという優れもの!

明日東急ハンズでアルバイトすることになってもなんとかなります。

実際にデモをしていただいた方からは
「すごーい」「おおおー!」といった嬉しい反応をたくさんいただきました。

中には5億円のお釣りのレシートを作った方(!)や、
そのツイートをみて5億円を超えるためにブースにいらっしゃった方(!!)、
クレジット決済のサイン欄にお絵描きする方(!!!)もいて
セッションだけでなく、ブースも盛り上がりました!ありがとうございました!

(POS一式を頑張って運んだ甲斐があった・・・隣の駅だから近いけど・・・)

iOSDCの後は、iOS手羽だ!!

迷えるiOSエンジニアのみなさん!
ハンズラボでHandsPOSを一緒に作りませんか?

・エンプラの世界でゴリゴリiOSと向き合いたい!
・とにかくiOSが好きだ!
・手羽先が好きだ!
・ハンズラボのiOSエンジニアと話してみたい!

こんな方は、ぜひ「ハンズラボようこそiOS手羽の会」に来てみてください!
お酒を飲みながら、絶品の手羽先を食べながら、iOSの話をしましょう!

ご応募はこちらから↓
ハンズラボようこそiOS手羽の会


MBSハッカソン2017 参加レポート


はじめまして!AWSチームの百木田(からきた)です。2月からハンズラボに入社しました。
前職はインフラエンジニアとして、主にAWSを使ったインフラ環境の設計・構築・運用を行っていました。
また、それ以前は大学でやり投げを頑張っていました。やり投げる系のエンジニアです。

よろしくお願いします。これからエンジニアブログ頑張ります。

初回は技術系のお話ではなく参加レポートです。
2月11日に大阪で開催されたMBS主催のMBSハッカソンに参加してきました。

入社して最初の大仕事。気合入れて大阪へ。

弊社、昨年に引き続き協賛させていただいておりました。

当日の発表によると参加者数は131名!エンジニアだけでなく、プランナー、デザイナーも結構いました。
弊社からは5名。協賛とは関係なく一般応募で戦います。オールエンジニアです。
このMBSハッカソン、参加者全員がHackできるというわけではなく、今回のアイデアソンで8組に選ばれて初めて来週開催されるハッカソンに出場できるというもの。
1組5-7人なので決勝まですすめる確率は30-40%というなかなかな狭き門。

今回はアイデアソンの流れや思ったことを中心に書いてみようと思います。

会場入り

会場についたらまず着席します。チーム参加・個人参加関係なくバラバラに座るように言われ、各テーブルはじめまして状態になります。

スタート!

まずはじめにゲスト紹介があり、その後API提供していただいた各社からそれぞれのサービスについてご説明いただきました。
個人的にはcoineyというサービスがすごいなあと思いました。

アイスブレイク 「うろ覚えお絵かき」

自分の知っているテクノロジーについて事例なども含めチームメンバーに絵で説明します。

好きなMBSのコンテンツを共有

このハッカソン、テーマとして「今が旬の6つのテクノロジーを使ってMBSの番組・イベントをもっと面白くするITサービスを開発しよう!」ということを掲げているので、まずはMBSのコンテンツについてチーム内で共有し理解を深めます。

まずは好きなテレビ・ラジオ番組(のコーナー)、イベント、Webコンテンツなどを各個人がリストアップ。
それをチーム内で出し合い

  • 好きな番組
  • あまり他の人が出さなそうな番組

に分けてランク付け。
↑ここでチーム内で番組に関しての紹介やディスカッションをし合うことでそれぞれの番組に対する理解が深まる

ちなみに私は関東に住んでいるのでMBSを見る機会はほぼなく、情熱大陸しか知らなかったため、チームメンバーの方にそれぞれどんな内容か丁寧に説明していただきました。(ありがとうございました!)

コンテンツとテクノロジーを好きなように組み合わせてアイデアを出していく。

今回テクノロジーとしてテーマとなっていたものは以下の6つです。

  • 人工知能(AI)
  • 仮想現実(VR/AR)
  • 位置情報
  • IoT
  • ロボット
  • フィンテック

これらとMBSのコンテンツを組み合わせてアイデアを放出します。
組み合わせの例としては

  • 「情熱大陸」✕「フィンテック」 とか、
  • 「ちちんぷいぷい(MBSの情報番組)」✕「人工知能」とか。

とにかく組み合わせてからどんなものができるか考える。5秒考えて思い浮かばなかったら次!
というように頭の中のなにか溜まったものをどばどばと放出していくような作業。

私、とにかくこれが楽しくて快感でした。
この段階では、どう実現するの?とか、誰得よ?とか言わない約束。だめ、絶対。

こうして1人4つほどアイデアを出し、チーム内で紹介し合います。
ここもとてもおもしろかったです。自分以外の人の、しかも別業界の人のリミッターが外れたアイデアなんて聞ける機会はそうそう無いですからね。

お披露目会

その後、自分が出した4つのアイデアの中から本命として1つ絞り込み、1枚の画用紙にまとめて参加者全員でお披露目会です。
いいね!と思ったアイデアにシールを貼っていきます。うろ覚えですが多い人で40枚以上、いわゆる「モテアイデア」というらしい。ちなみに私はシール6枚・・・。認定・非モテアイデアでした。

チームビルディング

お披露目会の後はいよいよチームビルディングです。自分のアイデアとシールの枚数を提げてナンパし合いされ合います。
自分のアイデアと近い人と組んだり、面白いアイデアを持っている人と組んだり、そうして徐々にチームが組まれていきます。
そんな中、周りでチームビルドをしている人たちを見ていると何やらみなさん困っている様子。

「深刻なエンジニア不足!」

エンジニア、引っ張りだこでした。
いくらプランナーやデザイナーがチームにいて夢を語り合ってもエンジニアがいないと実現は難しい。
「Engineer First」
ファシリテータの伴野さんが何度かおっしゃっていました。アイデアソン・ハッカソンではものを作れる人が一番偉いですよーと。
そんなエンジニア不足が嘆かれるなか、我々のチームは全員エンジニアのチームで挑むことになりました。
この時は思っていました。勝つる!

チーム内でアイデアを育て、発表

チームビルドしてからチーム内でアイデアの発散→具体化→収束を2時間半ほどかけて行い、その後チームごとに舞台で発表です。
どのチームもコントを入れたりして工夫した発表。
そうして全25チームによる発表が終わり、審査員によるハッカソン進出チームが発表されました。

・・・負けました。

敗因(自己分析)

  • エンジニアしかいないのでアイデアを育てる段階で、フィージビリティとか工数ありきの考えになっていた。
  • プランナーのようなエンジニア以外の目線で考えるメンバーがいないのでいまいち斬新性に欠けたものになった。
  • デザイナーがいないので発表資料が残念。

まとめ

アイデアソン・ハッカソンではEngineer FirstだがEngineer Onlyが強いということでもないということを身をもって経験しました。
バランス大事。
また、運営面の話ですがチームビルド前の発散の段階ではそれぞれの作業時間がとても短く区切られていて(長くても5分とか)、深く考える時間を与えない、パっと浮かんだアイデアを大事にする、みたいな部分はなるほど勉強になりました。
こうやって自分の脳ミソをフル回転させて発散させるという作業をすることで、凝り固まった頭が少し柔らかくなる気がしました。
あと、普段接しない人たちとリミッターを外して意見を交わすのって大事だなと思いました。
これからもアイデアソンに参加し、こういった機会を積極的に持ちたいです。

負けてとっても悔しかったので再挑戦したいと思います!

ありがとうございました。