カテゴリー別アーカイブ: Android

Zenfone4(ZE554KL)を買いました


周りがiPhone Xで騒いでいる中、Zenfone4を購入しました。

今まで使用していたNexus5Xが再起動ループを発症してしまい、復旧の見込みはないので新しいのを探していました。
つなぎに更に前に使用していたXperiaAでなんとかしのぎつつ、Pixel2を待ってみたものの日本の発売はなし。。。
もうどうにもならないので新調した次第です。
ファーウェイのP10 liteも候補にしましたがバックドア問題がまだ気になるのでASUSのZenfone4にしました。
Android8にも上がる予定になっているので楽しみですね。

箱の中身を全部出しました。

左上から

  • 充電器
  • USB Type-Cケーブル
  • イヤホン
  • イヤーピース
  • SIMピン
  • 外箱
  • 本体
  • スマホケース

スマホケースがついてくるなんて珍しいですね。

Zenfone4は、Snapdragon660・メモリが6GBのモデルとSnapdragon630・メモリ4GBの2つモデルがあります。
購入したのは前者のSnapdragon660・メモリが6GBです。
性能が良いのでしばらくは使えそうです。
手に持った感じはでかいですね。親指がバックキーに届かないですw
最近のスマホは大きいサイズばかりなので慣れるしかないですね。

すこし使った感じではキビキビ動いています。タップしたらすぐ動く感じです。
ゆったりとアニメーションして動くというよりかはすぐ、キビキビと動くイメージです。

スマホ交換と一緒にMVNOも変更しました。
iijmioを使っていましたが、スマホセットで購入すると安くなるのとキャッシュバックにひかれてBIGLOBEモバイルです。
ググった感じではまぁ悪くはなさそうなのかなと。すごい回線速度が早いわけではないけど、極端に遅くもならないのかなぁと。
それよりはキャッシュバック額の影響が大きいです。

以上です。


GCM(Google Cloud Messaging)を始めて見る


はじめに

GCM(Google Cloud Messaging)のGet Startedをやってみました。
基本的には公式ページをそのままやれば動きますが、とこどころそのままではダメでした。

公式サイト:https://developers.google.com/cloud-messaging/

必要なもの

  • Google Developers Console

大まかな流れ

  1. サンプルアプリの取得
  2. 設定ファイルの取得と設置
  3. サンプルアプリのビルド、実行

サンプルアプリの取得

まずは、公式サイトの”TRY IT ON ANDROID”のリンクをクリックし上から順にやっていきます。

サンプルアプリを取得します。

$ git clone https://github.com/googlesamples/google-services.git

GCM以外にもAdMob、Analytics、App Index、App Invites、Sign Inのサンプルを含んでいます。
今回はGCMのサンプルを使用します。
とりあえずcloneしてくれば大丈夫です。

Android Studioでプロジェクトを取り込むには、
google-services/android/gcm
をインポートするのですが、
AndroidStudio用のインポート(Open an existing Android Studio project)ではなく、
Gradle用のインポート(Import project(Eclipse ADT, Gradle, etc.))を使用します。
しかし、インポートしてもAndroidStudioがビルド構成を理解してくれず、
そのままではビルド、実行ができません。
後述するサンプルアプリのビルド、実行を先にしておく必要がありました。
(これは別のやり方があるのかもしれません)

設定ファイルの取得と設置

さっそくプロジェクトのビルドをしたいのですが、その前にGCM用の設定ファイルの作成が必要です。
公式ページに”GET A CONFIGURATION FILE”とあるボタンをクリックします。
Google Developer ConsoleのAPIマネージャーを使用するので、
Googleアカウントでログインが必要なります。
ログインすると設定ファイル作成画面になります。
今回はサンプルプロジェクトで試すので設定の変更の必要がなく、
App Name・・・Default Demo App
Android package name・・・gcm.play.android.samples.com.gcmquickstart
のままで、次に進みます。
CloudMessageの項目にAPI Key、Sender IDが発行されます。
そのまま次に進みます。
ファイルが生成されるとダウンロードページになるので、”google-service.json”をダウンロードします。

次にダウンロードしたファイルをサンプルプロジェクトに設置します。
google-service.jsonをサンプルプロジェクトのapp/下に置きます。

サンプルアプリのビルド、実行

サンプルプロジェクトをcloneした直後ではAndroidStudioがプロジェクト構成を
認識してくれないので手動でビルドします。

$ ./gradlew clean assembleDebug

しばらくすればビルドが終わりますので、

$ adb install app-debug-unaligned.apk

でアプリをインストールします。

ビルドするとAndroidStudioがビルド構成を認識してくれるので、AndroidStudioからビルド実行が可能になります。

サンプルアプリを実行すると最初GCMへの登録処理が行われます。
登録処理後にサンプルプロジェクトからメッセージを送信します。
サンプルプロジェクトで、メッセージ送信用のプログラムを動かします。
$ ./gradlew run -Pmsg=”test”
サンプルプログラムのビルド後に実行されます。
ちょっと待つと端末にメッセージが着信します。

以上です。


ABC2016Springに行ってきました


ABC2016Springに行ってきました。

今回はAndroidメインではなくて、IoTに関わる事、機械学習が多いようでした。

Google TensorFlowとAndroidが繋がる未来

有山圭二さん
有限会社シーリス 代表

好みの画像を自動で収集したいという内容で、TensorFlowを触ってみようと思わせる素晴らしいものでした。
動機が明確なのが一番ですね。

Cloud Vision API and TensorFlow

佐藤 一憲さん
Google Cloud Platform Developer Advocate

Google Cloud Platform == The Datacenter as a Computer
データセンターまるごとを一つのコンピュータとしていて、
何千台のコンピュータをコマンド1つで使えるというすごい話だなと。

Cloud Vision APIが面白そうで、学習させる必要が無いというのがお手軽だし、
画像によっては緯度経度まで出るそうです。ストリートビューのデータを使っているそう。
カスタマイズが出来ないので、その場合は、TensorFlowを使いましょうとの事。

ビッグデータと機械学習が変えるソフトウェア開発

Microsoft 田丸さん

Skype Translatorが、英語、ラテン系の言葉ならほぼリアルタイムで変換できて、品質も良いとの事。
昔は、アルゴリズムを作って結果を出したが、
今は、ハードとかコストが下がっていてデータと機械学習で結果を出すのもあり。
HoloLensもアルゴリズムより機械学習を使っている。
Cortana APIというのがあるようです。

Androidを中心に紐解くIoT

Amazon 西谷さん

講演者のブログです。

デバイスとクラウドの接続パターン

  1. AndroidをBLEで繋いでゲートウェイとして使用
  2. Android自身をセンサーデバイスとなる(GPSとか)
  3. 収集、分析したデータを可視化などビューアとして使用。通知受ける。

AWS Mobile Hubを使うのが一番手っ取り早いのかなと思いました。
mBaaSではないので、それぞれのサービスを理解しどう組み合わせるか、
色々試してみたいです。

モバイル通信をプログラマブルに活用IoT通信プラットフォーム”SORACOM”

SORACOM 江木さん

IoTの課題

  • モノの接続方法
  • セキュリティ、通信プロトコル

上記課題をSORACOM SIM使うと解決しましょうという内容でした。
モノの接続方法には、Air。
セキュリティ、通信プロトコルには、Beam。
SORACOMの詳しい説明を初めて聞きましたが、
ネットワークに繋げる必要があるなら使ってみたいと思いました。
1年間の無料枠あり、詳しくはWebへとの事。

以上です。


AWS S3のSDKを使ってみる3 実践編


前回までは環境構築でした。
今回は実際にプログラムを書いて動かしてみます。

ソースはGitHubにアップしました。
https://github.com/macchan-dev/AmazonS3Sample

以下の動作をします。

  • Bucketにあるオブジェクト一覧をListViewに表示
  • 右下のボタン押下でカメラ起動(動画)
  • 動画撮影完了後、動画ファイルをS3にアップロード

TransferUtilityを使った組み込み方が公式ドキュメントにまとまっているので分かりやすいと思います。
Amazon Simple Storage Service (S3)

大まか流れとしては、以下のとおりです。

  1. CognitoのSample codeにあるCognitoCachingCredentialsProviderを作成します。
  2. CognitoCachingCredentialsProviderインスタンスを引数にAmazonS3Clientを作成します。
  3. AmazonS3Clientインスタンスを引数にTransferUtilityを作成します。
  4. TransferUtility#uploadを使用しファイルをアップロードします。

注意点としては、AndroidManifest.xmlにTransferServiceの記述がないとうんともすんとも言いません。
エラーにもならないので何故動かないのか悩ますw

使用したTransferUtilityは、upload、downloadを簡単にすることができ、
進捗状況も取得できるので使いやすいと思いました。
細かいこと(オブジェクトの権限変更等)は出来ないので、別途SDKのAPIを叩く必要があります。

今回は、オブジェクトのリスト取得にRxJavaを使いました。
RxJavaについては以下が詳しかったです。

RxJava学習のベストプラクティスっぽいもの
分かった気になるはじめてのRxJava
7つのサンプルプログラムで学ぶRxJavaの挙動

以上です。


AWS S3のSDKを使ってみる2 AndroidStudio編


前回はAmazon Cognitoの設定までやりましたので、
今回AndroidStudioの準備をしてみます。

AndroidStudioでBlankActivityを作った状態から始めます。

まずbuild.gradleに以下を追記します。
これはSet Up the AWS Mobile SDK for Androidに記載されていました。
S3だけに絞って見ると下記3点です。

  • ‘com.amazonaws:aws-android-sdk-core:2.+’
  • ‘com.amazonaws:aws-android-sdk-cognito:2.+’
  • ‘com.amazonaws:aws-android-sdk-s3:2.+’

次にAndroidManifest.xmlにINTERNETのパーミションを設定します。

AndroidStudio自体の設定は以上です。

今後SDKを使う上で必ずCognitoの認証が必要になり、そのサンプルコードがCognitoのコンソールから取得可能です。
Cognitoのコンソールから作成したidentity poolを選択し、その左側のフレームのSample codeをクリックします。
「Get AWS Credentials」にサンプルコードが表示されるので、コピペします。
CognitoCachingCredentialsProvider型のインスタンスを使います。

今回は以上です。


AWS S3のSDKを使ってみる1 前準備編


AWS S3をAndroidアプリから操作をしたくてS3のSDKを使ってみました。
まず、S3用のSDKがあるわけではなくて、AWS Mobile SDKの機能の一部になります。

SDK(Android以外も)はここにまとまってあります。
アマゾン ウェブ サービスのツール

Androidのインストールのリンクからzipをダウンロードできますが、
AndroidStudioのGradleからでも設定可能です。
Gradleの方が楽だと思います。

S3をアプリから使うにはいろいろ前準備が必要ですので、順番に見ていきたいと思います。

AWS Mobile SDKについてのページにはざっくりとSDKについて記載があります。
AWS Mobile SDK

この中からAndroidの開発者ガイドを見てみます。
開発者ガイド

What is the AWS SDK for Android?にはSDKで何ができるのか記載されています。
AWS全部をSDKから触れる訳ではなさそうです。

次にSDKを使うためのセットアップを見てみます。
Set Up the AWS Mobile SDK for Android

事前に必要なもの

  • AWS アカウント
  • Android 2.3.3 (API Level 10) 以上
  • AndroidStudioもしくはADT

特に変わったものはありません。

始めるにあたって必要なもの

  • AWS Mobile SDK for Androidを取得する
  • AndroidManifest.xmlにINTERNETのパーミッションを設定する
  • Amazon Cognitoを使ってAWSの資格情報を取得する

最後のAmazon Cognitoというのを使って何かする必要がありそうです。

Identity and Access Management(IAM)でアカウントの作成

※ 2015/10/23 追記
Amazon Cognitoでの作業の前にIdentity and Access Management(IAM)でアカウントを作成した方が良いです。
すでに作成済みであればとばしてください。

AWSにメールアドレスで登録したアカウントはルートアカウントと呼ばれていて、
請求等なんでも出来るアカウントなので普段使うアカウントでは権限が強すぎると思います。
そこでIAMアカウントを新たに作成します。
下記サイトで勉強させてもらいました。

AWSのアカウント開設後にすべき事をまとめてみた

グループの作成 –> ユーザの作成 –> ユーザをグループに登録の順番です。

グループの作成

管理者権限のグループを作成します。

  1. コンソールのサービス一覧からIAMを選びます。
  2. グループを選択し、新しいグループの作成ボタンをクリックします。
  3. グループ名に名前をつけ次のステップに進みます。今回はAdministratorsとします。
  4. ポリシーの一覧からAdministratorAccessを選択し、次のステップに進みます。
  5. グループの作成をクリックします。

ユーザの作成

  1. ユーザーを選択し、新規ユーザーの作成ボタンをクリックします。
  2. ユーザー名を入力します。
  3. ユーザーごとにアクセスキーを生成のチェックを外し、作成ボタンをクリックします。チェックを付けとくとアクセスキーとシークレットキーを作成できますが、次のCognitoを使ってアクセスするので不要です。

グループへ登録

  1. ユーザ一覧の画面に戻っていると思いますので、一覧から作成したユーザをクリックします。
  2. グループ欄にグループにユーザーを追加ボタンがありますので、クリックします。
  3. 作成したAdministratorsを選択し、グループに追加ボタンをクリックします。
  4. ついでにサインイン認証情報からパスワードの管理ボタンをクリックし、パスワードを設定しておきます。

ついでにパスワードの設定を行いましたが、MFAと呼ばれるものを使ったほうがセキュリティ的には良いようです。

作成したユーザでログインし直す

IAMのダッシュボードに戻るとIAM ユーザーのサインインリンクというのがあります。
一旦サインアウトして、リンクのURLにアクセスしてください。
作成したアカウントでログインします。

Amazon Cognito

Amazon Cognitoはアカウント管理の機能です。
下記のサイトで勉強させてもらいました。
Amazon Cognitoについて – AWSが提案するモバイル時代のアカウント管理
[Amazon Cognito] Cognito の導入方法がより簡単になりました!

Cognitoのコンソールからidentity poolを作っていきます。

  1. リージョンを選びます。今回は東京を選びます
  2. Get Startedをクリックしウィザードを開始します
  3. Identity pool nameに名前を入れます
  4. Enable access to unauthenticated identitiesのチェックを入れます
  5. Create Poolをクリックします
  6. IAMのロール追加画面になりますが、そのまま許可をクリックします

Cognitoの設定は以上です。

この後はAndroidStudioを立ち上げ、AWS Mobile SDKをGradleに設定しSDKを使っていきます。
次回へ続く。


Android6.0でAndroid File Transfer(AFT)が繋がらない


MacとAndroidをUSB接続してファイル転送するときにはAndroid File Transfer(AFT)を使いますが、
Android6.0にしたら繋がらなくなってしまったので、その対応方法です。

AFTで繋がらない

Android File Transferで繋がらない

エラー内容

Can’t access device storage
If your devices’s screen is locked, disconnect its USB
cable, Unlock your screen, and then reconnect the
USB cable.

画面ロックが掛かっていてUSB接続出来ないとの内容ですが、
ロック解除しているので、別に原因がありそうです。

対応

このエラー内容でググるとオフィシャルのヘルプページが見つかりました。
パソコンと Android 搭載端末間のファイル転送

USB 経由でファイルを転送できないの項目を見ると、
接続する方式を「メディアデバイス(MTP)」にすれば良さそうです。
しかし、Android6.0では設定場所が変わったようなので、設定場所を探しました。

※2015/10/23 追記
もっと簡単な方法がありましたので追記します。
USBを接続するとステータスバーには何も出ていませんが、
“USBを充電に使用”と通知が出ています。
この通知をタップすると下記のダイアログが表示されます。

USBの使用

ここから”ファイルの転送(MTP)”を選択するとAndroid File Transferでフォルダが開きます。

しかし、再度USBを接続するとまたエラーが出るので、上記手順をやり直します。。。

————下記、手順は不要でした。————

  1. 開発者オプションを有効にします。
    1. 端末情報 > ビルド番号を開発者オプションが有効になるまで連打
  2. 開発者オプション > USB設定の選択
    1. 元々、MTPが選択されていますが、一度、PTP等、他のものを選んでからMTPに戻します。

Android File Transferが動いていれば端末を認識してフォルダが開きます。

以上です。


Galaxy Nexus(SC-04D)のLollipop化


Lollipopの端末が欲しかったので、
使わなくなったGalxy Nexus(SC-04D)をLollipopにしてみました。

このGalaxy Nexusは標準ROMをずっと使っていたので、
カスタムROM導入は初になります。
やったことを順番に書いていきます。

Android SDKは導入済みで、必要なパスは通ってる前提です。

使用したもの

1. ブートローダーのアンロック

ターミナルから以下のコマンドを実行します。

$ adb reboot bootloader
$ fastboot oem unlock

アプリや写真等のデータはすべて消えて、初期の状態になります。

Galaxy Nexusを再起動し、アカウントの設定等を行います。

アンロック後すぐにTWRPのバックアップを行うと下記エラーが発生し、
バックアップが取れませんでした。
“Could not mount /data and unable to find crypto footer”

2. TWRPの起動

TWRPのGalaxy Nexus用のイメージを取得します。

  1. 公式サイトにアクセスします。
  2. 右上の”Devices”リンクから”Galaxy Nexus”で検索します。
  3. “Samsung Galaxy Nexus (GSM) (maguro)”のリンクをクリックします。
  4. “Download Links:”の”Primary (Recommended)”のリンクをクリックします。
  5. 最新のイメージをダウンロードします。
  6. TWRPを起動します。
    1. $ fastboot boot twrp-2.8.7.0-maguro.img

3. 標準ROMのバックアップ

  1. TWRPが起動したら”Backup”ボタンをタップします。
  2. system等全部のチェックボックをONにしてバックアップを始めます。
  3. バックアップが終わったらGalaxy Nexusを再起動します。
  4. 端末ストレージ内にあるTWRPのディレクトリをPCにコピーしておきます。

TWRPから再起動するとSuperSUのインストールをするか聞かれますが、
不要だったのでインストールはしませんでした。

4.カスタムROMの入手

http://forum.xda-developers.com/galaxy-nexus/development/rom-euphoria-os-1-1-t3075221

Euphoria-OSの非公式ですが、Galaxy Nexusのイメージがあったので、
これを使用しました。

“Download:”にあるカスタムROMのファイルをダウンロードします。

GAPPSのリンクもありますが、このGAPPSを使用したら、
Android起動直後の設定で先に進まなかったので、別物を使用しました。

5. GAPPSの入手

上記のカスタムROMと一緒に記載されていたGAPPSではうまくいかなかったので、
別のGAPPSを使用しました。

http://forum.xda-developers.com/android/software/tk-gapps-t3116347

いくつかパッケージがありますが、”MICRO MODULAR PACKAGE”を使用しました。
最初は”MINI MODULAR PACKAGE”を使用しましたが、
ROM焼き時にファイルが大きすぎてエラーが出たため、”MINI”の方を使用しました。

6. インストール

6.1. コピーとTWRPの起動

上記4、5でダウンロードしたファイルをGalaxy Nexusのストレージにコピーします。
ストレージのルートにコピーしました。

Galaxy NexusとMacをUSBケーブルで接続し、下記コマンドでTWRPを起動します。

$ adb reboot bootloader
$ fastboot boot twrp-2.8.7.0-maguro.img

6.2.Wipe

次にインストール先を消去します。

  1. “Wipe”をタップします。
  2. – “Advanced Wipe”をタップします。
  3. “System”、”Data”、”Cache”を選択します。
  4. “Swipe to Wipe”でデータを消去します。

これはやらなくても良いのかもしれませんが、消しといたほうがキレイなかと思ってのことです。

6.3. Install

次にインストールをします。

  1. “Install” をタップします。
  2. “Euphoria-OS-1.1-maguro-UNOFFICIAL-20150601.zip”をタップします。
  3. “Add More Zips”をタップします。
  4. “tk_gapps-modular-micro-5.1.1-20150705-signed.zip”をタップします。
  5. “Swipe to Confirm Flash”をスワイプします。
  6. “Successful”が表示されたら”Wipe cache/dalvik”をタップしワイプしておきます。
  7. “Reboot System”で再起動します。

これで完了です。

GalaxyNexus5.1.1


OkHttpとRetrofitとGsonのサンプル


使ったことのないライブラリを使ってみました。

GitHubにソースを置きました。

https://github.com/macchan-dev/LibrarySample

OkHttp

Square製の通信ライブラリ。
AsyncTask+HttpClientで書いていたのが嘘のように簡単に使えました。

参考サイト

公式サイト
OkHttp 2.0 を使ってみた

基本的に書いてあるとおりに実装すれば動きます。
executeメソッドは同期、enqueueメソッドは非同期で呼び出されます。
UIスレッドでexecuteを呼ぶと例外が発生するので注意です。

Gson

Google製のJSONとJavaオブジェクトの変換ライブラリです。
JSONObjectを使っていた部分を置き換えられます。

参考サイト

公式サイト
GSONの基本的な使い方

JSONデータに合わせてJavaクラスを作っていくのが面倒ですが、
それさえ出来てしまえば変換は楽でした。

Retrofit

Square製の通信ライブラリ。
使い方がなかなか理解しづらかったですが、API毎にメソッドを作っていくの作りやすいのかなと思いました。

参考サイト

公式サイト
Retrofitを試してみる
RetroFitでAndroidのREST通信&JSON変換を幸せにする

レスポンスでJSONを受け取る時は、受け取るJavaクラスを指定するだけで良かったのですがはまりました。。。


DroidKaigiの感想


DroidKaigiに参加してきましたので感想を。

感想

  • 知らないことが多かった。ライブラリとか。
    • AsyncTaskを使っているところを見直そう。
    • AnCole
    • Retrofit
    • RxJava
    • Picasso
    • EventBus
  • Fragmentを色々と使ってみよう。
  • 時間配分がうまく出来てる発表者はすごいなと思った。
    • 特にFrilさんのスライドは本編+おまけという構成で時間配分がぴったりでした。
  • 開発熱が上がる。
    • ざっくりした話ではなくて具体的な話ばかりだったので、調べてみよう、試してみようという気持ちになりました。
  • 別セッションのブログ報告があると嬉しいな。
  • 反対側のセッションも気になる。録画があればなぁ。
  • Aルームで前の方の席が確保出来たのでBルームに移動しなかった。。。
  • 圧倒的当事者意識
    • せっかく参加枠に入れたので感想を書きます。何かの足しになれば。

運営の皆様、登壇者の皆様、楽しい一日をありがとうございましたm(_ _)m

聞いてきたセッション毎

代表あいさつ

  • 8分で最初の200枠が埋まった
  • 21session 64の公募があった。
  • 400人の席を用意。ぴったり入った。

注目度が高かったのと、みんなこの日を楽しみしていたというのが伝わってきました。

基調講演

Activity、Fragment、CustomViewの使い分け。

それぞれについて出来ること、出来ないこと一覧を見て、使い分けることを意識していこう。

開発を効率的に進めるられるまでの道程

テストをしましょうという話でした。

DIが気になりました。如何にしてモック化できるか?がテストのやりやすさに繋がる。

./gradlew createCoverageReport
コマンドを試してみようと思いました。

絶対に落ちないアプリの作り方

>そんなものはない<

Crashlyticsを使ったほうが良さそう。

開発者向けオプションで「アクティビティを保持しない」をオンにして動作確認しましょう。

AsyncTaskは長くて2,3秒の処理に使うもの。
→今、使っている箇所を見なおしたほうが良さそうだなと思いました。

アプリの企画、プロトタイプからリリースに至るまで

プロトタイプは捨てる前提なのが潔いなと思いました。

「アプリが成り立たないもの以外は実装しない」
「機能の多さよりクオリティを担保したい」
→改めて心がけようと思いました。。。

大容量データのダウンロード戦略

アプリ内で独自にダウンロードマネージャー的な仕組みを作るお話。

DownloadManagerのソースを参考に作成されたとのことで、
ここまでやらないとダメなのかと驚愕しました。

進化するランタイムART

一番記憶に残ったのは、登壇者の「Androidの仮想マシン Dalvik編」達人出版会から出版中。
でしたw
あとは、Linux上で動く共有ライブラリ(.so)であること。

ARTのメモリ管理

Dalvik VMでガバガバだったのがARTでまともになってきたということでした。

つかえるGradleプロジェクトの作り方

build.gradleの{}で囲ってあるのはクロージャであること。
項目の設定は、メソッド呼び出しであること。
と聞いて、おぉってなりました。

自分では、ライブラリープロジェクトでjarをエクスポートしたいときに
Gradleのスクリプトを書いている程度なので、もっと使いたいと思いました。

アプリを公開する前に、最低限知っておきたいセキュリティ事項

以下2冊を読めばとりあえず大丈夫とのこと。

  • Android Security
  • Android アプリのセキュア設計・セキュアコーディングガイド

アンドロイダー公認広告モジュールのお話がありましたが、
どれくらいの人が使っているのか気になりました。

Material Designを取り入れたデザインリニューアル

デザイナーとエンジニアがどうやったらうまく付き合っていけるのかが気になります。。

「“>”記号はGoogleに怒られる。」と言っていたのが面白かったです。
Flat UIで使う記号だからでしょうか。

以上です。