AndroidアプリのCI/CD – Google Play Developer APIs

Apple StoreにXcode Cloudが登場してから、iOS / macOSの世界ではアプリのCI/CDのハードルが一気に下がった。一度その快適さが当たり前になってしまうと、Androidアプリのリリースを手動で行うのが余計にストレスに感じられるようになってしまったので、CI/CD環境を作った。

残念ながらGoogle PlayにはまだXcode CloudにあたるようなマネージドなCI/CD環境はないが、公式APIが用意されているのでGitHub Actionsなどと組み合わせれば自力でCI/CD環境を作ることはできる。ただし、CI/CD環境を構築するにあたって押さえておかなければいけない使い方・仕組みが色々ある。一度に説明しようとすると多少ハードルが高いので、まずはAPIから。

“AndroidアプリのCI/CD – Google Play Developer APIs” の続きを読む

AndroidのData Binding Libraryが便利だ

Android Plugin for Gradle 1.5.0-alpha1から使えるようになったData Binding Libraryが便利だ。
Data Binding Libraryを使うメリットはData Bindingの概念がもたらす本来的なメリット(宣言的プログラミングが可能になる)と、Data Binding Libraryが備えている便利な機能がもたらす副次的なメリット(諸々の箇所で実装が短くなる)があるが、その内容は下記の記事でとてもわかりやすくまとめられている。
http://angelolloqui.com/blog/35-Improving-your-Android-apps-with-Data-Bindings
Data Binding LibraryをButterKnifeの代替になる、と紹介している記事も多く見かけるが、実際に使ってみるとそれ以上の有り難みを多く感じる。

  1. 表現に関するより多くのコードをレイアウト(XML)側の記述だけで実現できる場面が増え、FragmentやActivityがすっきりする。
  2. 自然と宣言型プログラミングになり、プレゼンテーションに関する処理とそれ以外の処理がFragmentやActivityの中に混在する、といったようなケースが減る。宣言型プログラミングを強く意識しなくても、半自動的にそうなるし、誰が書いてもそのようになる、というのは良いことだ。

具体的な導入手順を説明している記事はすでに多く出ているので、それらを参照されたい。最後に、凡ミスも多いがAndroid Data Binding Libraryを導入してすぐの頃にはまってしまったミスを列挙しておく。

  1. プロパティに違う型のデータを渡してしまっていた
    1. ProgressBarのprogressには本来intを渡すべきだが、Data Objectからはfloatを渡していた
    2. TextViewに数値の値を表示する時には、Stringで指定する。intを渡すとstringsのリソースのIDとして処理されてしまう。
  2. Data ObjectにパブリックなGetterを定義していなかった
  3. Importのし忘れ
    1. android:visibilityをセットする場合にdataセクションに<import type=”android.view.View” />を定義していなかった

参考情報

  1. Data Bindingとアニメーションの組み合わせについて

2014年のアプリ開発: 気になった記事

2014年に入り、技術書を購入する機会が大きく減り、有用な情報をウェブから入手することが多くなった。その中で、個人的に価値が高いと感じた記事をリストしておく。今年はAndroidアプリ開発に本腰を入れていたので、Android関連の記事が多くなった。
“2014年のアプリ開発: 気になった記事” の続きを読む

2014年のアプリ開発: マルチプラットフォーム対応

2014年の非ゲームアプリのマルチプラットフォーム対応の大本命はXamarinだったと思う。Xamarinのアプローチにはとても共感できる。しかし、2014年僕がXamarinを選択することはなかった。 “2014年のアプリ開発: マルチプラットフォーム対応” の続きを読む

Androidアプリ開発のすすめ

新しく買ったiPad Air 2はとても快適で素晴らしい。今この記事もiPadから書いている。それくらいユーザとしてはiOS製品が気に入っている。だけど、アプリ開発者としては今はiOSアプリ開発よりもAndroidアプリ開発の方に魅力を感じている。この魅力を、とくにAndroidアプリ開発を敬遠してきたエンジニアの人にも伝えたい。
これから書くのはネイティブアプリ(VM上で動くので厳密には「ネイティブ」ではないが)を開発する場合についての話となる。作るアプリの内容によっては、各OS用のアプリを個別に作るより、UnityとかXamarinを使ったほうがいい場合もあると思うし、それらを否定するつもりは無い。一方で、各OSを個別に開発したほうが良いケースもまだまだあると思っているが、そこについては本題から離れてしまうので省略する。
“Androidアプリ開発のすすめ” の続きを読む

Jenkinsを使ったiOSアプリビルド自動化11 GitHubとJenkinsの連携

Hookの機構を使うと、GitHubに変更がプッシュされたタイミングで自動的にJenkinsのジョブが走るようにすることができます。ポーリングに比べて、プッシュからビルドまでの時差が減り、無駄な通信も減りますが、アクセス制御が有効になっている場合の設定で少しはまってしまったので方法を書いておきます。 “Jenkinsを使ったiOSアプリビルド自動化11 GitHubとJenkinsの連携” の続きを読む