heihei blog

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

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月もお疲れ様でした!(`・ω・´)ゞ

2018年7月を振り返る

2018年も60%が終わったようです┗(^o^ )┓三ファアァアア ※8/8(水)時点

今回は7月を振り返ります。

7月やったこと

社員旅行に行った

初めて社員旅行に行きました。沖縄!琉球ガラス体験をしたり、歴史を感じたりと、とにかく楽しかったです。

「レビュー」という作業について社内で発表した

タップルでは週に一度、朝会にて技術者がチーム全体に技術やエンジニアリングなどの話を共有する会を定例として入れています。(「マジテックトーク」という名前の会です) 今回この会にて発表させてもらえる機会があったので、「プルリクエストに対するレビュー」というエンジニアの大事なシゴトについて共有しました。

資料はこちら

みんなレビューやっているとおもうけど、引き続きやってこうな!

技術書典#5にて本を出すことが決まった

前回はカップリングユニオンという組織のAndroidエンジニア数名で執筆させていただいたのですが、 今回は他部署のiOSとAndroidエンジニア合計6人で書くことが決定しました。

がんばります!(自分が前回担当した内容は、Okioの概要や内部実装の話だったのですが、今回も多分特定のライブラリについての内容を執筆しようと考えています。)

ズサーッε=ε=ε=c⌒っ゚Д゚)っ

技術書典

業務ではレイヤーごとのモジュール化が一段落し、Feature Moduleごとに分けていっている段階です。こちらも一段落したらどこかでアウトプットしたい。

その他

  • 映画「セラヴィ!」を二回観た

http://cestlavie-movie.jp/cestlavie-movie.jp

めちゃくちゃ笑い、感動できる映画です。こちらは映画館の雰囲気とかによっても笑いが大きかったりしたところが印象的でした。二回目のほうが面白かったw

さっくりですが、以上です!

7月もお疲れ様でした!(`・ω・´)ゞ

2018年6月を振り返る

2018年も約54%が終わったようです...━━━━━━(´Д`|||)━━━━━━!!!! ※7/11(水)時点

6月を振り返ります。

6月やったこと

Kyash Meetup #1 iOS & Androidに参加した

アプリ開発の現場の話やiOS、Androidアプリの設計や、どのようなフロー(手順)で機能実装をしているか、という話をLTで聞くことができました。「席替え頻繁にやっている」、「KPTに対するKPTやったりしてる」に関してはいいな!弊社でも真似したい、と個人的に思いました。そしてLTだけではなく懇親会でもじゃんじゃんKyashメンバーに質問できたりして、中のことがより知ることができて楽しかった。

余談

リアルカードもらいましたლ(´ڡ`ლ)

PotatotipsにてBitriseについて発表した

もともとCircle CI 2.0を使っていたのですが、Bitriseに移行してFastlaneも導入して自動化したことについて発表してきました。

OperandoOSさんのご指摘どおり、多分お金積んでresource_class設定することでも解決できたけど、勢いで移行した感が強いです。他社ではCircle CIの並列タスク実行を利用することでCIの時間を10分短縮したという事例もあるらしいので引き続きどういうCIツールが一番使い勝手良いのか等はチェックしていきたいですね。

主に発表内容は下記です:

  • git tagのプッシュ検知ができなかったのをどう解決したか
  • bitrise file-downloader機能の使い方
  • 作ったfastlaneのactionのサンプル

本当はもっといろいろなことやりたくて仕込んでいる最中でもあります。

資料はこちら:

speakerdeck.com

Shibuya.apkに参加した

兎にも角にもGoogle荒木さんの発表が面白かった。どのようにバックポートAPIを作っているか、という話。

その他

社内では、

  • ペアプロ
  • モブプロ

を試したりとかしてます。うまく仕組み化したいけどどうするのが良いかまだ模索中感ありますが、考えるより先にやるほうが良さそう。

あとはアプリの画像等のリソースファイルのみを持つモジュールを作成して少しずつモジュール化を進めています。引き続きここらへんは粛々とやっていく。

以上になります。6月もお疲れ様でした!