macOSアプリのCI事情4 – ビルドからアップロードまでの流れ

テストに成功したので、今度はリリース用のビルドをxcodebuildを使って作成し、App Storeにアップロードするところまでをスクリプト化したい。しかし、この手順は設定が多く、サードパーティツールが必要になり、仕様変更などがあった場合に都度確認・調整が必要になることもある難所だ。スクリプト化をする前に、XcodeとApplication Loaderを使って、申請までの流れの確認をしておこう。 “macOSアプリのCI事情4 – ビルドからアップロードまでの流れ” の続きを読む

macOSアプリのCI事情3 – xcodebuildを使ってテストする

macアプリのCIを構築していく上で、xcodebuildの基本的な使い方を押さえておく必要がある。

xcodebuildはXcodeをインストールすると使えるようになるコマンドで、プロジェクトのビルドやテストの実行などに使われる。JenkinsのXcodeプラグインや、fastlaneのgymなどのサードパーティ製のビルド補助ツールも、基本的には内部的にはxcodebuildを使っている。macOSアプリ、iOSアプリ、tvOSアプリなど、Xcodeが対応している各種プロジェクトは共通してxcodebuildを使ってビルド・テストできる。まずは、テストを実行してみよう。 “macOSアプリのCI事情3 – xcodebuildを使ってテストする” の続きを読む

macOSアプリのCI事情2 – 使うツール群とサービス

まず、macOSアプリのCIを実現する上で必要なツール・サービスについて。

macOSアプリのCIでは、主に下記のツール・サービスを使用していくことになる。あらかじめ、各ツールの役割・立ち位置について頭に入れておくと、色々と理解しやすくなり、思い通りに動かない時にも対応しやすくなる。 “macOSアプリのCI事情2 – 使うツール群とサービス” の続きを読む

macOSアプリのCI事情1 – 概要

デベロッパ・市場規模のせいか、iOSアプリのCI(継続的インテグレーション)に関する情報は簡単に見つかるが、macOSアプリやtvOSアプリのCIに関する情報はなかなか見つけにくい。長いこと苦戦してきたが、macOSアプリに関しては、ようやく良さげな解決策を見つけるところまで至ったので、ここに共有しておく。 “macOSアプリのCI事情1 – 概要” の続きを読む

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とアニメーションの組み合わせについて

Parse亡き後、我々はどこに向かえば良いのだろうか

2017年1月28日にParseがシャットダウンすることが発表された。残念ながら、BaaSを使う上で懸念される最も大きいリスク・デメリットが具現化される形になってしまった。Parseの何が良くなかったのか、今後BaaSがどうなっていくのかを考えたいところだが、終了までの期間が限られているため、Parseに依存しているプロジェクトをどうするかを考え始めなければいけない。

なお、このポストの内容は新しい動きがあり次第、適宜追記していく予定だ。 “Parse亡き後、我々はどこに向かえば良いのだろうか” の続きを読む

色弱だと写真の現像・加工(特にポートレート)が難しいので、チートツールを作った

写真の現像・加工の作業は、音楽のミキシング/マスタリングと似ているなと感じることが多い。調整に時間をかけるほど、正しい方向に調整されているのか自信がなくなってくる。特に、僕の場合は色弱で、健常な人に比べて元々色味が少し違って見えているので、調整した結果が正しい色になっているのか、しばし不安になる。

“色弱だと写真の現像・加工(特にポートレート)が難しいので、チートツールを作った” の続きを読む

Ruby on RailsではなくParseという選択肢

長いこと、Ruby on Railsを使って様々なサービスやアプリのバックエンドを作ってきたが、今年に入ってからRailsの代わりにParseを使う場面が増えてきた。機能面や拡張性の問題など何かと不安があったのだが、半年以上実際に稼働しているサービスで使用してみた結果、期待以上の好印象を持っている。 “Ruby on RailsではなくParseという選択肢” の続きを読む

SIGMA 30mm F1.4 DC HSM Art

所謂撒き餌レンズのEF 50mm F1.8 IIを買ってから、すっかり明るい単焦点レンズの魅力にはまってしまった。EF 50mm F1.8 IIの写りには非常に満足しているが、X7につけると35mm換算で80mm相当になってしまうので、画角が狭いと感じることが増えてきた。悩んだ挙句、SIGMA 30mm F1.4 DC HSM Artを買った。 “SIGMA 30mm F1.4 DC HSM Art” の続きを読む