麦芽を支える技術

麦芽(ばくが、英語:malt)とは、麦、特に大麦の種子を発芽させたもので、ビール、ウイスキー、水飴の原料となる。(Wikipediaより)

tvOSアプリのIn-App Purchaseで購入・リストア要求時にAppStore側からの応答が受け取れない問題

実際のところこの問題が発生するのは動作環境にも寄る気もするけど、tvOSアプリの実機デバッグで2台のAppleTV端末で同事象が発生したので、tvOSだと起こりやすいとかあるのかもしれない。

概要

In-App Purchaseで購入やリストアをする場合、ざっくり書くと以下のような流れでAppStoreとやりとりしながら処理する。

購入時

  1. プロダクトIDで初期化したSKProductsRequestインスタンス(要求オブジェクト)を生成
  2. その要求オブジェクトのstart()メソッドを実行し、指定したプロダクトIDが有効なプロダクトかAppStoreに問い合わせ
  3. SKProductsRequestDelegateプロトコルを実装した処理でそのAppStoreからの応答を受け取る
  4. 応答に問題なければトランザクションキュー(SKPaymentQueue)に支払い要求を追加し、AppStoreに送信
  5. SKPaymentTransactionObserverプロトコルを実装したトランザクションキューのオブザーバで応答を受け取る
  6. 応答結果に応じた購入処理を行う
続きを読む

iPhoneXから表示されるHome Indicatorの表示/非表示をViewController毎に設定したい

ちょいとこのHome Indicatorを隠したい要件があって、まだ世の中にHome Indicatorの記事出回ってないようなのでメモ。

Home Indicatorとは

iPhoneXの画面下部に表示されるバー。この辺のiPhoneX画像見てもらうとありますよねー。

https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/

iPhoneXからは物理ホームボタンがなくなって、画面下部からのスワイプ操作でホーム画面に戻すので、その操作を連想させるための画面コントロールらしい。

続きを読む

fastlane matchを使ったiOS証明書、Provisioning Profileの導入管理

前の会社の技術ブログに書いたやつだけど、技術ブログ閉鎖されたっぽいんで、前もってバックアップしといたやつを転記。


iOSアプリ開発に必要な証明書とProvisioning Profile

さて、iOSアプリ開発の鬼門とも言われるCode Signing&Provisioning。最近はXcodeが改修されてきて、多くの処理が自動で行ってくれるようにはなってきたので、個人開発ではさほど大きな問題が発生しにくくなってきたようですが、証明書・秘密鍵の管理が個人のMacに依存したり、そもそも先述したXcodeの自動処理によって他の開発者に予期せぬ影響を与えたりと、相変わらず組織開発ではやりづらさがあります。

というわけで今回のエントリでは、この開発に必要な証明書やProvisioning Profileを一元管理し、複数の開発者でシェアできるようにするツールをご紹介します!

続きを読む

AppliveryのDistribution sitesで開発中のiOS/Androidアプリをお手軽にテスター配布

前の会社の技術ブログに書いたやつだけど、技術ブログ閉鎖されたっぽいんで、前もってバックアップしといたやつを転記。


アプリ開発でこんなことありませんか?

iOS/Androidアプリの開発をしていて、こういうことってありませんか?ありますよね?今は無くても今後はあるかもしれませんよね?

  • ちょっとしたお試しアプリを作ってみたので、身内の人に使ってもらいたい
  • 外注先からの納品アプリを社内のテスターに配布したい
  • ↑の逆で、現在受託開発をしていて、納品先に開発中のアプリをちょっと使ってもらいたい

ちなみに弊社のアプリ開発では先のエントリで書いた通り、基本的にテスター配布は「Crashlytics Beta」を利用しています。

asmz.hatenablog.jp

なので、「じゃあ、それで開発中のアプリも配布できんじゃん(、何言ってんのこの呑んだくれが!)」と言われそうですが、まぁちょっと落ち着いてください。。。

Crashlyticsでテスター配布するためには、CrashlyticsのSDKをアプリに導入する必要があります。 でも例えば、「ちょっとしたお試しアプリ」だと、まだSDKを組み込む必要があるレベルでなかったり、「外注先からの納品アプリ」とかだと、成果物としてipaファイルで納品されたりしてそもそもSDKを組み込む余地すらない場合もあります。

で、Androidアプリなんかは基本的にapkファイルをメールなり何なりで送れば、受け取った側がそのままインストールできるのでほとんど問題にならないのですが、iOSアプリだとそうはいきません。

  • iOS Dev CenterへのUDID登録は必須
  • ipaファイルをそのまま開いてインストールできず、iTunesからUSB経由で実機インストール
  • Webからダウンロードさせたいなら、規定のplistとそれを参照するhtmlを置いた自前のWebページを用意し、配布したい人に見えるような場所に公開

複数名分の端末を借りてちまちまUSBインストールとかやってられませんし、Web公開もやや手間ですよねー。

そんな時、お手軽に開発中アプリを複数名に配布する方法を今回ご紹介いたします。

続きを読む

試行錯誤してたどり着いた現在のiOSアプリ自動デプロイ環境(Bitrise、fastlane、Crashlytics、たまにbuddybuild)

前の会社の技術ブログに書いたやつだけど、技術ブログ閉鎖されたっぽいんで、前もってバックアップしといたやつを転記。


仙台iOS開発者勉強会へ参加

実は私、東北出身ということもあり、新卒から十数年ほど過ごした首都圏を離れて仙台にJターンしてきたわけですが、仙台に引っ越してきたのは2016年8月なので、まだ仙台で住んで1年にも満たないのですよ。

で、社内もWeb系メインだし、まだ仙台に知り合いの社外エンジニアも多くなく、iOSアプリの開発話や苦労話などする相手がいないなぁと思っていたこともあって、先日「SWWDC - 仙台iOS開発者勉強会#30」に参加してきました!

いざ参加してみると、仙台の敏腕エンジニアの方々が揃っており発表のレベルも高く、(懇親会も飲みすぎて二日酔いになるほど)とても楽しかったです!

atnd.org

今回のエントリはその勉強会で発表した内容の紹介となります。

続きを読む

BartyCrouchでiOSアプリの多言語化(Localization)用stringsファイルを自動更新

結構前から便利そうだと思って使ってるんだけど、案外紹介されてる記事が少ないのでとりあえず書く。

BartyCrouchとは

これ。

github.com

iOSアプリを多言語対応する際に必要になる以下のファイルを、CLIから更新してくれるツールです。

続きを読む

GoogleAppsのGmail設定「デフォルトの転送」を用いたメール転送

Gmailでメール転送というと、Gmail画面より「設定」-「メール転送と POP/IMAP」で転送先アドレスを追加することで行うのが一般的ですが、この方法だと転送元・転送先双方の実アカウントが必要だったり、転送先アドレスの方では転送を許可するかどうかを確認するメールを受信する必要があったりするので、以下のような状況のときは、ちょっと都合悪かったりします。

  • 退職者宛メールの後任転送や、一時的なスタッフ用のメールアドレス
    • GoogleAppsのライセンスはアカウント数によるので、恒久的でないアカウントは極力削除したい
  • メール受信目的ではなくシステム都合で特定アドレスへ転送
    • 例えば、IFTTTはtrigger@ifttt.com宛にメールを送るとそのタイミングでトリガー発動とかできますが、Gmail標準の転送のように転送先アドレス側で転送許可メール受信とか必要だと転送設定できない

GoogleApps for Workだと、管理者権限があれば以下のGmail設定を使って、割と強制的に(一方的に)メール転送を行うことが出来ます。

管理コンソールでの設定

続きを読む