はじめに ZOZOTOWN開発本部 ZOZOTOWNアプリ部 Android2ブロックの高橋です。 ZOZOTOWN Androidチームでは、リファクタリングやビルド速度改善の取り組みを継続的に行なっています。本記事では、それらの取り組みの効果を可視化するために導入した、コードメトリクスやビルド時間計測の方法について紹介します。 はじめに ZOZOTOWN Androidチームにおけるリファクタリングやビルド速度改善の取り組み コードメトリクスの計測 メトリクス Cyclomatic Complexity(循環的複雑度) LOC(ファイルのコード行数) Author数 計測方法 Cyclomatic Complexityの計測方法 Java Kotlin LOCの計測方法 Author数の計測方法 ビルド時間の計測 計測方法 計測結果の可視化 コードメトリクスの計測結果 計測結果のパース
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 個人的に驚いたところを太字にしておきます。 AndroidのエンジニアなのでAndroidに関するものが多めです。専門領域外のものはかなり素人目線のただの感想が多いです。なにか大きな間違などがあればご指摘お願いします。修正いたします。 またまだ見ていきますが、一旦、 Keynote Developer Keynote What's new in Android What's new in Jetpack What's new in Development tool Lazy layouts in Compose Fragments: T
metroがstableに、Jetpack Composeのパフォーマンス改善Agent Skill集、Jetpack Composeアニメーションを触りながら学ぶ、など
Application startup is the first thing our users experience after they install an app and then again every single time they launch it. A simple and snappy application brings users a lot more joy than an application that has a ton of features but takes an eternity to load. Realizing this, Dropbox Android team has invested in measuring, identifying, and fixing the issues that were affecting our app
こんにちは、モバイル基盤部の加藤です。普段はモバイルアプリの基盤技術の整備や品質管理の業務に携わっています。 今回はクックパッドAndroidアプリ(以後クックパッドアプリ)の2020年時点でのアーキテクチャの紹介をしたいと思います。 アーキテクチャ導入以前のクックパッドアプリ 2017年以前クックパッドアプリにはアーキテクチャと呼べるようなものが存在していませんでした。大まかに API 通信や DB 操作等のデータ取得箇所を分離し、複雑なロジックを持つ場合は Manager, Util 等の強いオブジェクトが生成されていましたが、それ以外は Activity / Fragment に処理を直接記述することがほとんどでした。 そういった状況の中で今後もアプリを継続的に開発可能にすることを目的にアーキテクチャの導入が始まりました。クックパッドアプリでは iOS/Android 両プラットフォ
Kotlin Coroutines Flow Kotlin Coroutines 1.2.0からFlowというCold Streamを実現する仕組みが導入されました。これまではChannelというHot Streamの仕組みがあったのでRxにだいぶ近づいてきた感じがあります。 この記事では、FlowとLiveData、双方向データバインディングを使っていい感じにUIのイベントを処理してみます。 LiveData as Flow まずは、LiveDataにセットされた値をFlowとして扱うための拡張関数を作ります。Channelを作るときはchannelやproduceといったChannel Builderで作っていましたが、FlowではflowやflowViaChannelというFlow Builderが用意されています。 flowではFlowに値を流す処理emitがsuspend関数にな
Androidの話。 MVVMアーキテクチャで開発をしていると、ViewModelにクリックメソッドを実装する事が多い。 その際、 fun onClickHoge(view: View) { someThing() } のように定義するんだけど、このviewというパラメータはそこまで使わない。 使わないパラメータで警告を出さないようにしようと fun onClickHoge(@SuppressWarnings("unused") view: View) { someThing() } としてたんだけど、これでは警告が抑えられていなかった。 調べてみると、これはJavaの書き方のようで、Kotlinだと@Suppressを使うらしい。 そこで、 fun onClickHoge(@Suppress("unused") view: View) { someThing() } としたんだけど、これ
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。 ヤフー株式会社メディアカンパニー スタートページ事業本部 エントリーポイント開発部でAndroidアプリの開発を行っている毛受(めんじゅ) (takahirom)です。 皆さんはChromeやGoogle Playアプリなどで、アプリ内でスクロールした時にツールバーが見え隠れするのを見たことがあるでしょうか? 現在自分の担当しているアプリでそのようなレイアウトを検討しているので詳細を調べてみました。 はじめに Google I/O 2015でAndroid Design Support Libraryが発表されました。Android Design Support Libraryには、Material Designを実
ACRA(Application Crash Report for Android)とは、Androidアプリがクラッシュしたときに、アプリがどのような環境と状況でクラッシュしてしまったかというレポートを開発者に知らせるためのライブラリです。 ACRAを利用することで開発者はAndroid Marketに公開後、ユーザがアプリを利用中に発生したクラッシュの原因を詳細に得ることができるようになります。 ACRAでは開発者に知らせる手段として幾つか選択肢が用意されています。 [table “216” not found /] 今回はGoogle Docsへクラッシュレポートを送信する手順について解説したいと思います。 詳しい解説は続きからご覧下さい。 ライブラリはRCRAのプロジェクトサイトに公開されています。 利用までの手順としては以下の通りです。 ライブラリの入手 Google Docsの
プロフィール写真やアイコン画像の設定画面なんかでよくある「写真を選んで→トリミングして」ってやつです。 あんまり日本語の情報がなかったので書きます。 ギャラリーを呼び出して写真を選ぶ public void onChangePhotoClick(View view) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, REQUEST_GET_CONTENT); } トリミング機能(アプリ)を呼び出す 写真が選ばれたらonActivityResult()が呼び出されるので、選ばれた写真のUriを使ってトリミング機能(アプリ)を呼び出します。 @Override protecte
とある外注さんが書いてきたコードがひどかった。 バックグラウンドでのオーディオ再生を、Activityから作成したワーカースレッドで行う。キャンセル処理は全く考慮していない。 UIスレッド上でばんばんHTTPリクエストを投げる。応答を読み終わるまでループを回す。 アプリケーションの起動中にずっと保持する必要のある情報をIntentに書く。それを読むのはonStart()ではなくonCreate()。 Activityの初期化は全部onCreate()に書く。onStart()もonStop()も全く使ってない。 アプリケーションの起動中にずっと保持する必要のある情報をstaticメンバに持たせる。 どう悪いか説明しておこう。 Activityから起動されるワーカースレッドの寿命 たとえば画面上で表示する情報をHTTPリクエストで取得する等の処理はワーカスレッドを使うと応答性を失わずに欠くこ
今回は、フルスクリーンモードにする方法について書きます。 通常ですと、タイトルバー、ステータスバーが表示されており、スクリーンが若干隠れてしまいます。 今回は、タイトルバー、ステータスバーを消す方法を紹介します。 方法は2種類あります。 1.ソース上から変更する ソース上から変更する場合、以下のように書きます。 package jp.co.techfirm.android.fullscreendemo; import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; public class MainTate extends Activity{ /** Called when the activity is fi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く