SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2017】セッションレポート(AD)

より良いアプリを開発するためのYahoo! JAPANの取り組み~ホットパッチングのススメ【デブサミ2017】

【16-A-6】ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術

  • X ポスト
  • このエントリーをはてなブックマークに追加

リリースサイクルの改善、古いOSのサポートなどに効果的なホットパッチング

 一方で、ネイティブアプリならではの課題もある。アプリ開発では、企画、開発、テスト、リリースを行い、計測した効果をもとに再び企画を立てるという形で回すのが理想的だ。しかし、実際にはテスト後、審査や部分リリースなどの段階を経るため、完全リリースまでに時間がかかってしまう。ヤフオク!では2週間に一度のペースでリリースを行っているが、2週間たってもそのバージョンの普及率が100%にならないという問題が発生する。また、部分リリース期間中に大きな不具合が発生すると、リリースを中断して不具合の修正を優先するため、完全リリースが遅れてしまう。

 こういった問題の回避策として、アプリをアップデートせずにパッチを配信して適用するホットパッチングが有効だ。ホットパッチングによってリリースサイクルを維持でき、さらに重大な不具合が発生したときもユーザーがアプリを使用できない期間を最小限に抑えられる。

 Androidアプリでは、古いバージョンのOSをサポートするケースで活用可能である。Androidの最新バージョンは7.xだが、約3割のユーザーはバージョン4.xを利用している。バージョンの古いOSをサポートする場合、非推奨になった機能や不具合に対応するためにコードが複雑になり、生産性が低下する。しかし、3割のユーザーも無視できない。そこで、古いOSにはアップデートによる新機能は配信しないが、不具合の修正をホットパッチで配信するという形で、ユーザーへのサポートを継続できる。

 これらのメリットから、モバイルアプリ開発ではホットパッチングが一般化しつつあり、さまざまなライブラリが提供されている。

 Android用のtinkerは、既存のapkファイルと新しいapkファイルの差分から作成したパッチをアプリ内のdexファイルと合わせて、アプリの起動時に読み込んで反映する。メソッド、クラス単位でのコードの置き換えが可能だ。AndFixは、apkファイルの差分をパッチとして読み込ませる。置き換えはメソッド単位のみだが、起動中のアプリにも適用できる。JSONデータからレイアウトを動的に作成することで、デザインを置き換えるjson2viewというライブラリもある。Androidでは、Classオブジェクトのメソッドテーブルを書き換える、外部のjarファイルから動的にクラスをロードする、あらかじめスクリプトを実行可能にするといった方法でホットパッチングを実行できる。

Androidでtinkerを使ったホットパッチング
Androidでtinkerを使ったホットパッチング

 ホットパッチングの実施にあたって注意しなければならないこともある。まず、セキュリティだ。パッチは配信サーバーからユーザーのデバイスに配信されるが、その通信経路上で中間者攻撃による盗聴や改ざんのリスクがある。そのため、パッチファイルの暗号化、HTTPSなどセキュアな通信方法、電子署名のチェック等の措置が必要となる。また、iOSやAndroidのアプリ開発のガイドラインに抵触しないように注意する必要がある。アプリの主要な目的や機能を変更するような改修は行うべきではない。

 最後に森氏はAndroidでスクリプトを使ったホットパッチングの方法を紹介し、デモを行った。競争が激化するモバイルアプリ市場ではアプリの改善速度を上げて差別化を図る必要があり、そのためにはホットパッチングが効果的であると述べてセッションを締めくくった。

お問い合わせ

 ヤフー株式会社

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2017】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10052 2017/04/14 21:35

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング