CoinCheck APIをJava+OKHttp3の組み合わせで呼び出してみる
仮想通貨はBitcoinなどの取引所はいくつかありますがcoincheckは多くの仮想通貨を取り扱っているのが特徴です。 そして公開されているAPIがあり、注文やレートなどの取得などを取得やコントロールすることができます。
そこで今回はcoincheckをGAEで利用するために導入にJavaのサンプルコードを分解し一番簡単な内容に抽出し説明します。
続きを読むFirebase Cloud Messagingを使ってみる 後編
前回はFirebaseSDKを設定し、実際にPush通知を受信するところまで実施しました。
今回はメッセージをアプリでハンドリングする方法についてみていきます。
FirebaseMessagingServiceを設定する
受信したメッセージをアプリで処理するためにはFIrebaseMessagingServiceを継承したクラスを定義し、onReceiveMessageをオーバーライドする必要があります。
受信から10秒間の処理は実行が保証されますが、10秒以上かかる処理の場合、実行が保証されないため、FirebaseJobSchedulerを使用してください。
@Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); if (/* 長い処理が必要な場合 */ true) { // 10秒以上かかる処理の場合 Firebase Job Dispatcherを使用する scheduleJob(); } else { // 10秒未満の場合はすぐに処理する handleNow(); } } // Notificationメッセージの場合 if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } }
メッセージの種類
- 通知メッセージ
受信すると自動的にNotificationを表示してくれます。 - データメッセージ
受信したメッセージをアプリにて処理します。 - 両方が含まれるメッセージ
通知とデータが両方含まれたメッセージで、基本は通知メッセージと同様の動作となります。
詳しくは以下を確認ください。
About FCM Messages | Firebase
フォアグラウンドとバックグラウンドの動作の違い
ここではメッセージの送信にNotifications Composerを使用しています。
メッセージの種別は、通知とデータ両方が含まれるメッセージについて記載します。
フォアグラウンドでの受信 FIrebaseMessagingService#onMessageReceivedメソッドが呼び出されます。
Notificationは自動的に表示されませんので、アプリ自身がRemoteMessageの内容から適切に処理する必要があります。 データペイロードもRemoteMessageに含まれています。バックグラウンドでの受信 FIrebaseMessagingService#onMessageReceivedメソッドが呼び出されません。 Notificationは自動的表示され、ユーザーに通知されます。
メッセージに含まれるデータペイロードは、Notificationをタッチしてアプリを開いた時のIntentに付与されます。 Activityの起動時にIntentを確認し、Notificationからの起動を判断してください。
まとめ
通知メッセージはフォアグラウンドの場合のみonMessageReceivedが呼ばれ、バックグラウンドの場合はNotificationが自動的に表示され、起動Intentにデータペイロードが付与される。
データメッセージの場合は、フォアグラウンド、バックグラウンド関係なくonMessageReceivedが呼ばれ、Notificationの表示はアプリ自身が行う。
両方が含まれる場合は通知メッセージと同じ動作となる。
参考
Set Up a Firebase Cloud Messaging Client App on Android | Firebase Receive Messages in an Android App | Firebase
Python で配布用モジュールの作成
Python で配布用モジュールの作成
Python で、pip install
でインストール可能なモジュールを作成する。
Python 3.6.3 (v3.6.3:2c5fed86e0, Oct 3 2017, 00:32:08)
バージョンは3.6.3。
3.4 以降 setuptools
が簡単に使えるようになっている。
準備
とりあえず書いたコードが PEP 8 準拠できているか確認する。
やらなくてもモジュール作成はできるので特にこのタイミングでやる意味はない。
(むしろコーディング中からマメに確認しておくべし)
PEP とは
PEP は Python Enhancement Protocol の略称。
コードフォーマットについてのベストプラクティス集がPEP 8。
ちなみに PEP 8 はStyle Guide for Python Codeで、PEP 257 は docstring のフォーマットについて触れている。どちらも一読すべし。
pytest/pep8
PEP 8 準拠できているかは pytest を使って確認できる。
pytest と pep8 プラグインのインストール
pip を使ってインストール可能。
これはグローバルに入れるべきか仮想環境に入れるかよくわからん。定石はあるのだろうか。
とりあえず仮想環境に入れる。
$ python3 -m venv . $ source ./bin/activate $ pip install pytest $ pip install pytest-pep8
実行
上記インストールで py.test が使えるようになる。
$ pytest --pep8 ./panic.py ============================= test session starts ============================== platform darwin -- Python 3.6.3, pytest-3.2.3, py-1.4.34, pluggy-0.4.0 rootdir: /Users/kazuhirofurue/work/hfpython, inifile: plugins: pep8-1.0.6 collected 1 item panic.py . =========================== 1 passed in 0.02 seconds ===========================
違反がなければパスする。
違反箇所は丁寧に指摘してくれるので一つずつ修正していく。
ディストリビューションパッケージの作成
setuptools を使用する。
モジュール作成したいファイルと同じディレクトリに以下を用意する。
- README.txt
- setup.py
$ mkdir mymodules $ cp panic.py mymodules $ cd mymodules $ touch README.txt $ touch setup.py
setup.py
from setuptools import setup setup( name='hoge', version='1.0', description='Hoge hoge tools', author='fuga', author_email='fuga@example.com', url='example.com', py_modules=['panic'], )
最後にカンマあるのすごい違和感あったけど Python ではこれ許容だそうな。もちろん無くてもいい。
README.txt はひとまずファイルだけあればモジュール作成は可能。内容はまた今度。
setup.py を実行する。
$ python3 setup.py sdist running sdist running egg_info writing panic.egg-info/PKG-INFO writing dependency_links to panic.egg-info/dependency_links.txt writing top-level names to panic.egg-info/top_level.txt reading manifest file 'panic.egg-info/SOURCES.txt' writing manifest file 'panic.egg-info/SOURCES.txt' running check creating panic-1.0 creating panic-1.0/panic.egg-info copying files to panic-1.0... copying README.txt -> panic-1.0 copying setup.py -> panic-1.0 copying panic.py -> panic-1.0 copying panic.egg-info/PKG-INFO -> panic-1.0/panic.egg-info copying panic.egg-info/SOURCES.txt -> panic-1.0/panic.egg-info copying panic.egg-info/dependency_links.txt -> panic-1.0/panic.egg-info copying panic.egg-info/top_level.txt -> panic-1.0/panic.egg-info Writing panic-1.0/setup.cfg Creating tar archive removing 'panic-1.0' (and everything under it)
これで tar.gz ファイルが出来上がる。
このファイルを配布すれば、以下のように pip でインストール可能。
$ pip install panic-1.0.tar.gz
その他
Download Python for Other Platforms にて紹介されている
Python for iOS
Pythonista is a complete development environment for writing Python scripts on your iPad or iPhone.
気になったので購入。
試しに Flask とか描いてみたら普通に iPad ローカル上で動いちゃってますな。
面白そうだけど多機能過ぎて使いこなせるかは怪しい。しかし面白い
Firebase Remote Configを使ってみる
Firebase Reote Configとは
アプリのアップデートを公開しなくても、アプリの動作と外観を変更することができます。
Firebase Remote Config は、アプリのアップデートをユーザーにダウンロードしてもらわなくても、アプリの動作と外観を変更できるクラウド サービスです。Remote Config を使用する場合は、アプリの動作や外観を制御するアプリ内デフォルト値を作成します。後から Firebase コンソールを使用して、すべてのアプリユーザーまたはユーザー層のセグメントに対してアプリ内デフォルト値をオーバーライドすることができます。アップデートを適用するタイミングはアプリ側で制御できます。アプリはアップデートの有無を頻繁にチェックし、パフォーマンスにほとんど影響をおよぼすことなくアップデートを適用することができます。
- Firebase Reote Configとは
- セットアップ
- FirebaseRemoteConfigのインスタンスを取得する
- デフォルト値を設定する
- 値を取得する
- RemoteConfigに値を設定する
- RemoteConfigの値を取得する
- まとめ
- 参考
Firebase Cloud Messagingを使ってみる 前編
Firebase Cloud Messaging(FCM)は、メッセージを無料で確実に配信するためのクロスプラットフォーム メッセージング ソリューションです。
FCM を使用すると、同期可能な新しいメールやその他のデータがあることをクライアント アプリに通知することができます。通知メッセージを送信することで、ユーザーにアプリを再度アピールし、定着率の向上へとつなげられます。インスタント メッセージなどの用途では、メッセージで最大 4 KB のペイロードをクライアント アプリに転送することも可能です。
- Firebaseプロジェクトの設定
- コンソールからメッセージを送信する。
- 参考サイト
BottomNavigationViewのテスト
以前の記事でBottomNavigationViewについて書きましたが、今日はそのテストについて書きます。 blog.techium.jp
続きを読むPython 仮想環境の作成
Python 仮想環境の作成
新しく Python 環境構築をする。
3.4 までは pyvenv 推奨だったが、3.6 では venv が推奨となっていた(知らんかった)ので venv を使う。
続きを読む