heihei blog

Write once, recall anytime. 自分のために書く 📝

2018年11月を振り返る

2018年もあと8%弱らしいです |←2019年| ┗(^o^ )┓三

それでは11月を振り返ります。

11月やったこと

Matching Dev Meetupを開催した

11/14(水)にMatching Dev Meetup#1 - iOS / Androidを開催しました。当日の写真などはぜひ弊社ブログにて。ブログにも記載しましたが、このイベントはsatoshin21さんとpotatotipsにてお話した際に盛り上がって開催に至ったものです。アットホームなイベントにできたらなーと思っていたので、開始前から懇親が盛り上がっていて楽しめて何よりでした。今後も継続的にやっていけたらと思っています。

弊社ブログには記載し忘れましたが、満足率は20件の回答中95%と嬉しい結果でした!

f:id:shaunkawano:20181203004117p:plain

ご参加していただいた皆様、改めてありがとうございました!

「Androidテスト全書」を読み始めた

もともと本読むのが苦手なのですが、少しずつ読んでいます。今、3章まで読み終わりました。

一章の「テスト大事」という文字から溢れんばかりのメッセージがズシンときました。引き続き読む。

「The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change」を読み始めた

弊社のエンジニアリングマネージャーがtimesチャンネルで勧めていたのをポチったもの。(少なくともAmazonには日本語電書籍版がなかったです。)まだ2章目入ったくらい。いまのところ真新しいことがたくさん!というよりは、どちらかというと、「そうだよね、意識しなきゃだよな。。」ということがたくさんある。すでに買ってよかった。言われてみると当たり前ってことでも意識して行動できないことたくさん。下記とかも。

Developing a sense of ownership and authority for your own experiences at work, and not relying on your manager to set the entire tone for your relationship, is an important step in owning your career and workplace happiness.


※12/3(月)追記

O'Reilly Japanのウェブサイトにて電子版が販売されているとのことです!@takasfzさん教えていただき、ありがとうございました!

www.oreilly.co.jp

その他

DroidKaigiのプロポーザルが採択された

エモ枠でがんばります!(「技術戦略」がテーマです。こういう内容ききたい!などがあればぜひお気軽にDM等でご連絡ください!!🙏)

明治神宮の銀杏並木を散策した

1−2週間前にいってきました。人がたくさんいた。。今くらいの時期が色が一番綺麗かも!

f:id:shaunkawano:20181203010630p:plain

それでは、11月もお疲れ様でした〜ヽ('∀')ノ

Notes - Modern Android Notifications (Android Dev Summit '18)

Notes - Modern Android Notifications (Android Dev Summit '18)

f:id:shaunkawano:20181203014407p:plain

はじめに

Notes記事では、英語のセッション動画やポッドキャストの内容を(雑に)英語でメモに書き残すことを行っています。本記事は、あくまで動画を見ながら、参考程度に読んでいただくことを想定しています。Notes記事には雑メモ程度のものだったり、書き起こしのようなものもあります。これから実際の動画を見る際には、本記事の内容が少しでもお役に立てば幸いです。(内容において不備、誤字脱字等ありましたら気軽にご連絡いただけると嬉しいです!m(__)m)

本記事は、Modern Android Notifications (Android Dev Summit '18)のNotes記事です。

——

  • Respect user's settings
  • Send well-structured notification
  • Send relevant and timely notification
  • Make use of Auto-cancelling
  • Make use of Timeouts
  • No notifications that are not actionable

Notification Channels

  • Used to empower users
  • Help user categorize the notification
  • Help user customize the setting

Tips

  • Don't use only one channel
  • Don't use wrong/blocked channel

What's new in Notifications

  • API 28: New person class
// create new Person
val sender = Person.Builder().setName(name)
  .setUri(uri)
  .setIcon(icon)
  .build()

// create message with image
val message = Notification.MessagingStyle.Message("Picture", time, sender)
  .setData("image/", imageUri)

val style = Notification.MessagingStyle(sender)
  .addMessage("Check this out!", time, sender)
  .addMessage(message)
  .build()
...

val builder = Notification.Builder(this, CHANNEL_ID)
  .setSmallIcon(R.drawable.notification_icon)
  .setStyle(style) 

Tips

  • Do not auto-cancel messaging notification after sending
    • Let user swipe the notification when they finish their conversation

Digital Wellbeing

  • Overview of app usage
  • Dashboard for notification received, time spending on apps
  • To manage notifications, reduce interruptions

How are notifications counted?

=> If notifications were sent to blocked channel they are not counted, otherwise counted.

Reduce interruptions

  • Empower user

Work with Do not Disturb

  • Set category
  • Tag people
    • Add person
    • Set the URI associated with the person

Summary

Don't annoy the user. Respect them. Empower them. Delight them.

Connect them to the people they care about.

2018年10月を振り返る

2018年も85%くらいが終わったようですキャ━━━━(#゚ロ゚#)━━━━ッ!! 11/6(火)時点

10月もさくさっくと振り返ります。

10月やったこと

Android Weekend復活した

去年ごろから、海外出身の社内の先輩Androidエンジニアと二人でほっそり開催していたミートアップイベントを10月再開しました。(自分はAndroidXとはなにかについて発表しました)

もともと月1で定期的に開催できたら良いよね、と言っていたのですがお互いチームが変わったりと変化が起こるうちにいつのまにか開催できていない月が続いていました。ですが、10月から改めて再開することに。ロゴも知人のデザイナーの方が作ってくださり、かっこよい感じに。今は、多くても10人いかないくらいの小規模なミートアップという感じで、英語での先輩エンジニアと自分のLTを行ってあとは雑談だったりネットワーキングの場となっています。

ゆるく、気軽に参加できる形になっていますので、興味のある方はお気軽にご参加いただければと思います。(イベント参加についてはこちらをどうぞ)

特に下記の方にお勧めです:

  • Androidアプリ開発の知識を広げたい方
  • Androidアプリ開発の知見を共有したい方
  • 英語のリスニング・スピーキングを練習したい方(LTじゃなくても、まずは参加するだけでも多少は練習になりますよ〜)

技術書典#5にてiOS / Android本を出した

f:id:shaunkawano:20181106003646j:plain:w400

サイバーエージェントグループ所属の有志のiOS / Androidアプリエンジニアのメンバー6人で本を執筆しました。無事に完売できて嬉しかったです!技術書典自体は二回目の参加で、毎回、いつの間にかスケジュールに追われているという状況です。(決起会の際とかには本当にスケジュール的に余裕あるのにね〜)

前回はOkioについて、今回はPicassoについて内部実装だったりもうじきリリースされそうなPicasso 3のことについて執筆しました。

次回また応募するかはわかりませんが、もしまた執筆するとしたら、次こそはスケジュールどおりに書きたい( *゚Д゚)・;'.、グハッ!!

DroidKaigi 2019プロポーザルを提出した

「アプリをさらに成長させるための技術戦略(振り返りとこれから)」というタイトルのプロポーザルを提出しました。今、(未熟ながら)Androidチームのリーダーを任せてもらっています。もし採択された場合には、自分がAndroidチーム内で「これやってみたらいいのでは」と思って実践したことや工夫したことだったり、事業部全体で取り決めをした技術戦略などについて弊社ではこういうふうにやっていますというようなシンプルに共有だったりをできればと思っております。

また、このセッションではAndroidの技術についてメインで話すつもりはないのですが、Androidチーム内でアプリの成長を特に加速させる(させた)ような技術的な取り組み・選定・実装などについても、もし共有に値しそうなものがあれば、ぜひ共有できればと思っています。

その他

  • 秩父に旅行に行ってきた

西武秩父駅から自転車で山を駆け上りました。なお、電動自転車を選択しました。(無難)こちらの写真はその時立ち寄ったメイプルベースというおしゃれなカフェにて。

f:id:shaunkawano:20181106005359j:plain:w500

メイプルシロップどばーなフレンチトーストがとてもとても美味しかったです。

  • 引っ越しをした

今までは新宿寄りだったのですが、渋谷寄りのほうに転居。歩いて会社に出社しています。運動。会社でも最近は階段を使って移動するように意識しています。筋肉ほしい。(甘い)

10月は新しい期の始まりで、新しくジョインしたメンバーが目まぐるしく改善をしてくれていたり、チーム内の施策チームががらっと変わったり、いろんな変化があった月だったかなと思います。

11月は、11日にAndroid Weekend、そして14日にはMatching Dev Meetupという株式会社エウレカや株式会社Diverseといったマッチング業界に携わるエンジニアを集めたイベントの第一回目を開催予定!今回はiOS / Androidの会となっています。興味のある方はぜひ奮ってご参加ください!

matching-dev-group.connpass.com

(イベントロゴは弊社デザイナーの@Dhon40作)

それでは、10月もお疲れ様でしたヽ('∀')ノ

BuildConfigを生成しないようにする方法

TL;DR

android {
  ...
  libraryVariants.all {
    it.generateBuildConfig.enabled = false
  }
}

自動生成されるBuildConfig.javaについて

Androidアプリ開発等において、プロジェクト構成をマルチモジュールの形にすることで得られるメリットは大きくなってきています。 通常、AndroidプロジェクトををビルドするとBuildConfig.javaというファイルが自動で生成されます。(R.javaというリソースIDの一覧を保持するファイルも生成されます。)

BuildConfig.javaには、通常下記のような記述がされています。

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.shaunkawano.blog.sample";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";

BuildConfigを生成しないようにする方法

BuildConfigファイルには設定によって独自の定数を追加することができます。が、そのような定数を保持するBuildConfigファイルはプロジェクト内で一つ存在すれば良さそうです。また、マルチモジュールを構成するようなライブラリモジュール内のBuildConfigファイルに動的な定数値が定義されていることも稀です。つまり大半の場合はライブラリモジュールのBuildConfigファイルは不要であることが多いです。

ライブラリモジュールのBuildConfigファイルを生成しないようにするには、ライブラリモジュールのbuild.gradleに下記の設定を記述します:

android {
  ...

  libraryVariants.all {
    it.generateBuildConfig.enabled = false
  }
}

参考

メモ程度ですが、以上です。

2018年9月を振り返る

2018年も約75%が終わったようです┣¨━━━━(゚Д゚)━━━━ン!!!! 10/1(月)時点

さくさくと9月を振り返ります。

9月やったこと

DevFestTokyo 2018に参加した

https://potatotips.connpass.com/event/95391/

弊社の他エンジニアの方に勧めていただき、Androidのパネルディスカッションに参加させていただきました。Android Architecture Componentsの中で何を導入しているかといった話や、それらのハマりポイント、今後導入を検討しているライブラリなどについて、数社のエンジニアの方々と一緒に、話をさせていただきました。

今のAndroidアプリ開発において、Android Architecture Componentsもアツいですが、今後はandroid.supportパッケージの開発終了、そしてこれらのパッケージのリファクタリング版であるandroidxの1.0.0リリースに伴い、AndroidXへの移行が急務となってくると思われます。規模の多いアプリほどハマりどころが多そうです。

AndroidXへの移行って何?どうするの?という方は、まずこちらの移行に関する公式サイトの記事を読むことをお勧めいたします。

マッチング業界のネイティブエンジニアで集まって交流した

先月、potatotips #54に参加した際、Eureka, Inc.のエンジニアの方々とマッチング業界のエンジニアのtips共有会してみたらどうでしょう!とご提案させていただき、さっそくEureka, Inc.含め、複数のマッチング業界のエンジニアの方々と酒を交わしながらおしゃべりできる機会が得られました!また今回はお声がけできなかった会社の方々も、ぜひ11月に開催予定の勉強会にてお話等できればと思っています。(こちらの勉強会については11月半ば開催を予定しています。)

その他

  • 家族旅行にいってきた

初めて企画して旅行に行きました。波乱万丈感、否めなかったですが、着地楽しんでくれたようでよかった・・!またいきたい。

  • 「カメラを止めるな!」を観てきた

笑いました。もう一度観たい・・!

会社のことでいうと、旅立つメンバーや新しいメンバーが入ったりと変化が生まれそうな10月です。弊社としては新しい期となるため、改めて初心忘れず気を引き締めます。

雑ですが、9月はこのような感じでした。

9月もお疲れ様でしたヽ('∀')ノ

Layout XMLファイル内でData Bindingを用いてプレースホルダー付きStringリソースにアクセスする

公式リファレンスに記載されている通りですが、

<string name="self_introduction">My name is %1$s</string>

というstringリソースが定義されているとします。これをData Bindingを使ってLayout XML内部にて、たとえばTextViewtextフィールドにバインドしたい場合、

以前だと下記のような記述方法のみ有効だったような気がしたのですが、

android:text="@{String.format(@string/self_introduction, user.name)}"

改めて確認したところ、

android:text="@{@string/self_introduction(user.name)}"

と記述できます。

メモ程度に。

参考リンク

2018年8月を振り返る

2018年も約70%が終わったようです(´ε`;)ウーン…

今回は8月をさらりと振り返ります。

8月やったこと

potatotips#54に参加してきた

https://potatotips.connpass.com/event/95391/

uberが最近OSS化したmotif(読み:モチーフ)というDIライブラリについて発表してきました。Daggerの拡張性を削った代わりに、より簡潔にスコーピングのネストを表現することができるライブラリで、内部ではDI周りのコード生成はDaggerを使って行われます。

詳細はこちら

Mobile CI/CD Meetupに参加した

https://mobile-ci-cd.connpass.com/event/95864/

Bitriseにてビルドごとのキャッシュをどのように実装するかについて発表してきました。BitriseにはCache-pushとCache-pullというstepsが事前に用意されていて、こちらを利用すると簡単にキャッシング機能を利用することができます。また、このキャッシュ機能を用いてビルドさせていると、時折キャッシュではなくフルビルドを走らせたいという場合が時折あります。その場合にどのように工夫したかについて発表してきました。

詳細はこちら

Androidチームでペアプロを始めた

毎週水曜と金曜日に30分ずつ、お試しでやってみています。今のところ、いろいろな発見や学びがありとても良いと感じています。このへんはまたブログ等で共有できればと思います。

その他

  • タイに行ってきた

いつもの親友グループで行ってきました。

ナイトマーケット行ったり島いったりしました。

f:id:shaunkawano:20180910234355j:plain

そしてパッタイがおいしかったです!

f:id:shaunkawano:20180910234409j:plain

  • この他にも優秀なインターンの子とお仕事したり、KotlinFest行ったりといろいろありましたが、「Done is better than perfect」の精神で一旦投稿しきるところまで。

もっと小出しにしてブログ記事書いていきたい所存です。

そんなこんなですが、8月もお疲れ様でした!(`・ω・´)ゞ