エムスリーエンジニアリンググループ マルチデバイスチーム所属の荒谷(@_a_akira)です。 弊社では、昨年の12月に医師向けの新規アプリをAndroid, iOS向けにネイティブ実装しリリースしました。 今回は、その際Kotlin Multiplatform Projectを用いてユーザの行動ログ送信部分を共通化した話をしたいと思います。 Kotlin Multiplatform Projectとは Kotlin Multiplatform Project(以後MPP)とは、 Kotlinで書かれた単一のコードを Kotlin/JVM,(Android, Server等) Kotlin/Native(iOS, Windows, Linux等) Kotlin/JS の各プラットフォーム向けにトランスパイル可能なプロジェクトのことです もっと詳しく知りたい方は 公式ドキュメントだったり、私
October 24, 2018Kotlin/Nativeチュートリアル Android, iOS編 2019/01/30 Kotlinのアップデートによりいくつか変更点があります。 一応追記していますが、追いきれない部分もありますので各自確認お願いします。 個人的にKotlin/Nativeはマルチプラットフォームの銀の弾丸になり得るポテンシャルを持っていると思っています。 しかし、まだKotlin/Nativeはβ版のため実用段階には至っていませんが、ついに先日1.0のtagが切られました! 2018年10月12日にも1.0でタグが切られていたのですが、正式リリースではないので23日に入れ替わっていました。 運用次第なので、どうなるかわかりませんが1.0の正式リリースが近いのは間違いありません。 この記事では、普段AndroidかiOSのどちらかを開発している方がほとんどだと思いますの
認定バイヤーでは、モバイルアプリ広告枠の入札リクエストでの広告掲載 ID(IDFA)または Google 広告 ID(AAID)の受け渡しがサポートされています。 iOS デバイス用の広告掲載 ID(IDFA) iOS デバイスでは、アプリの App Tracking Transparency(ATT)プロンプトに同意したユーザーごとに、デベロッパーやマーケティング担当者がユーザー行動をトラッキングし、その情報を広告掲載に活用できるようにする識別子が提供されます。デベロッパーやマーケティング担当者は、ユーザー行動をトラッキングし、その情報をターゲティング、フリークエンシー キャップ、コンバージョン アトリビューションなど、広告掲載に活用できます。 IDFA の主な機能は次の 2 つです。 ユーザーがいつでも自由にリセットできます。 ユーザーは以下の方法で、IDFA を利用したリマーケティン
関連記事 この記事も古くなりましたね。執筆時の実装バージョンKotlin 0.12から1.0.2へのアップグレード対応をした際の知見を記事にしました。 Kotlinを実案件で使いました 先日、僕の勤め先のQonceptは『リアル鬼ごっこ』×富士急ハイランド 巨大遊園地からの逃走を開発、リリースしました。 富士急ハイランドで実際に鬼ごっこをする企画で、一般のお客さんがスマホで専用アプリを使いながらクリアを目指します。園内には鬼役のスタッフや、ゲーム進行に関わる設備などがあり、これらとスマホがiBeacon(BluetoothLE)を用いて連動することで、ダメージを受けたり、アイテムを使用したり、クイズを解いたりなどします。 Qonceptの開発範囲は、iOSアプリ(とAppleWatchアプリ)、Androidアプリ、サーバサイドでした。 受注確定となった時点で、残り日数と開発者リソースに対
Chrome 32以上 Android SDK SDKが必要というよりはadbが必要なので、既にSDKが入っている場合はadbにパスを通しておくだけで良いです。 ※ Chrome拡張で「adb」というものがありますが、現在は非推奨になっているため、ここでは使いません。 Android SDKをインストールする 手元にWindowsが無いため、今回はMacの説明のみ書きます。 既にAndroid SDKが入っている場合は、この手順は必要無いです。 Android SDKをダウンロードする ここから、自分の環境のAndroid SDKをダウンロードします。 今回はadbのみ必要なため、SDKのみのダウンロードをします。 ダウンロードしたzipを任意の場所に置き、zipを解凍する ターミナルでダウンロードしたSDKのディレクトリ配下のtoolsディレクトリを開く
アクションバーに「リフレッシュ」ボタンをつけようとして、次のようなメニューリソースを書いた。 <item android:id="@+id/action_refresh" android:icon="@android:drawable/ic_menu_refresh" android:showAsAction="always" android:title="@string/action_refresh"/> すると "error: Error: Resource is not public. (at 'icon' with value '@android:drawable/ic_menu_refresh')." というエラーがでてリソースをコンパイルできない。 SDK の res/drawable-hdpi/ などの下に画像はあるけれど、どうやら OS のバージョンなどによって存在したりし
今回はAndroidライブラリを作る手順と利用時に困らないためのチェックポイントを紹介していきます。 AndroidライブラリはAAR(Android Archive)ファイルにコンパイルできるモジュールです。JARファイルはJavaのクラスやメソッドをもつライブラリリソースですが、Androidライブラリでは加えてAndroid特有のAndroidリソース(ActivityやAndroidManifestファイル)、レイアウトやドローアブル、Strings.xmlといった共有リソースも内包できます。 リファレンス、サンプルコードはこちらに用意しています。 https://developer.android.com/studio/projects/android-library.html https://github.com/TechBooster/AndroidSamples/tree/
With iOS 11.3, Apple has silently added support for the basic set of new technologies behind the idea of “Progressive Web Apps” (PWAs). It’s time to see how they work, what are their abilities and challenges, and what do you need to know if you already have a published PWA. ⚠️ Updated version of this article ⏩ firt.dev This App is a PWA and it appears full screen -offline capable- on an iPad. It a
コールバック、よく使いますよね。 非同期処理の結果を受け取るには、必ずと言っていいほど付き合うことになるコールバックですが、UI のようにライフサイクルを持つオブジェクトと共存するには、考慮すべきことがいくつかあります。 ここでは、おおまかに、上手にコールバックと付き合う方法を見ていきます。 基本となるポイント なんといってもまず抑えなければいけないポイントは、ライフサイクルを持つオブジェクトとの共存です。世に出回っている様々なコールバック管理のためのライブラリは、このライフサイクルを持つオブジェクトとの共存をいかに楽に、あるいは直感的にするか、ということをもとに作られています。 ライフサイクルとはつまり、オブジェクトが生成されてから消滅するまでの一連の流れのことです。 newしたりallocしたりしたタイミングでオブジェクトが生成され、GC に回収されたりdeallocしたりするタイミン
今までのサンプルコードにも散々使ってるけど、少し複雑なものになると書くのが結構大変なので、テンプレ用にまとめてみようと思った。調べてみたら意外と使われていない(?)んだよね。ただし、あくまで値をあらかじめセットしておくグローバルな初期化のみでやってみる。ローカルの場合はブロック表記「{~}」が不要なだけで、基本的には同じ。 よく使う例として、リスト(List) と リストを配列化したもの(List[])、連想配列(Map)もついでにやってみよう。 ●1次元配列の初期化 : int[] public class ArrayInitTest { int[] arr = {1, 2, 3}; public static void main(String[] args) throws Exception { new ArrayInitTest(); } public ArrayInitTest()
そんなに難しくないよ 以前紹介した XML のパース と同様、JSON のパースも大したことないです。 それでは早速、簡単な JSON をパースしてみましょう。 使用する JSON は こちら。 Twitter API を叩いた時のエラーレスポンスです。 (Twitter API は認証が必要なため、エラーレスポンスが返ってきます) 整形したものはこちら。 { "errors" : [ { "code" : 215, "message" : "Bad Authentication data." } ] } この JSON の構造は以下のとおりです。 トップレベルに 辞書 がある その 辞書 の キー errors の値は 配列 である その 配列 の要素数は 1 である その 配列の要素 は以下のキーをもつ 辞書 である code message iOS iOS で JSON をパースする
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く