SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【Android Studioアップデート解説】ABCシリーズの新機能まとめ

Android StudioのABCシリーズとは? プロジェクトテンプレート、デバイスマネージャとエミュレータ、LogCatを解説

【Android Studioアップデート解説】ABCシリーズの新機能まとめ 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Electric Eelで新しくなったLogCat

 本項の後半は、新しいLogCatの紹介です。

新しいLogCatの特徴

 Androidアプリ開発でデバッグを行う際、LogCatは大活躍する機能です。アプリの動作において何か不具合がある場合、LogCatにて例外出力の確認などを行います。そのLogCatが刷新され、Dolphinにて試験実装されました。ただし、Dolphinでは、デフォルトのLogCatは旧来のものであり、新しいLogCatを利用する場合は切り替え処理が必要でした。これが、Electric Eelで、新しいLogCatがデフォルトとなりました。その新しいLogCatは、図11の画面となっています。

図11:新しいLogCatの画面
図11:新しいLogCatの画面

 この新しいLogCatの特徴をまとめると、以下の内容になります。

  • より見やすいレイアウトの採用
  • 複数ウィンドウでの表示
  • ビューモードの切り替えが容易
  • アプリの終了でログがクリアされない
  • キーバリューによる検索

 以下、順に解説していきます。

より見やすいレイアウトの採用

 以前のLogCatでは、一続きの文字列になっており、ログの内容を読み取るのが簡単ではありませんでした。例えば、図11の一番下のログが、以前のLogCatでは、以下のような文字列でした。

2024-01-26 12:10:25.258 5362-5438/com...oid.databindingobservablejava D/ProfileInstaller: Installing profile for com.websarva.wings.android.databindingobservablejava

 この状態では、最初のログの発生日時はわかるとしても、そのほかの情報をすぐに読み取りにくいです。カラーリングに関しても、ログレベルがWARINGとERRORの場合に文字色が変わるぐらいでした。それと比べると、新しいLogCatは、図12の1〜6の表示内容ごとにセクションに分かれており、非常に見やすくなっています。

図12:新しいLogCat表示の各セクション
図12:新しいLogCat表示の各セクション

 それぞれのセクション内容は、以下の通りです。

  1. ログ発生日時
  2. プロセスとスレッドID
  3. タグ文字列
  4. パッケージ名
  5. ログレベル
  6. ログ内容

複数ウィンドウでの表示

 新しいLogCatは、複数のログウィンドウを表示させることができ、同一デバイスの複数のアプリ、あるいは、複数のデバイスのログを表示させることができます。これは、LogCatツールウィンドウ上部の+ボタンをクリックします。すると、図13のように新たなLogCatタブが表示され、複数のログを切り替えて確認できるようになります。

図13:LogCatタブが2個になった画面
図13:LogCatタブが2個になった画面

 また、LogCat画面左側のアイコン(LogCatの画面サイズによってはアイコン内に格納されている)をクリックすると、[Split Right][Split Down][Close]のメニューが表示されます。このうち[Split Right]、あるいは[Split Down]を選択すると、LogCat画面が図14のように分割され、[Close]を選択すると元の1画面に戻ります。

図14:[Split Right]によって横に分割されたLogCat画面
図14:[Split Right]によって横に分割されたLogCat画面

ビューモードの切り替えが容易

 画面を分割するだけではありません。画面左側のアイコンをクリックすると、ソフトラップが有効になり、図15のように、画面幅での改行表示となります。

図15:ソフトラップが有効になったLogCatの画面
図15:ソフトラップが有効になったLogCatの画面

 また、アイコン(アイコン同様LogCatの画面サイズによっては アイコン内に格納されている)をクリックすると、[Standard View][Compact View][Modify View]のメニューが表示されます。このうち、[Compact View]を選択すると、図16のように、ログ発生時刻、ログレベル、ログ内容という、そのメニュー名の通りコンパクトな表示になります。

図16:コンパクト表示になったLogCatの画面
図16:コンパクト表示になったLogCatの画面

 この画面は、[Standard View]を選択すると、元の画面に戻ります。また、[Modify View]のメニューから、独自の見え方を設定することも可能です。

アプリの終了でログがクリアされない

 以前のLogCatでは、接続端末先で例外発生などでアプリが終了し、その後、再起動した場合、ログがクリアされていました。これが、新しいLogCatでは、クリアされず、図17のように、PROCESS ENDEDとPROCESS STARTEDの区切りが入るようになりました。これにより、終了以前の例外内容など、問題点を追跡できるようになりました。

図17:アプリの終了・再起動を表すログ上の区切り
図17:アプリの終了・再起動を表すログ上の区切り

キーバリューによる検索

 新しいLogCatを紹介する本節の最後に、検索機能について紹介します。この機能が今回の新しいLogCatで一番の変化といえます。以前のLogCatでは、パッケージやログレベルなどで絞り込む場合、ドロップダウンリストから選択していました。さらに、キーワードによる絞り込み機能もあります。この複数の入力コントロールによるログの絞り込み機能を一新し、接続先デバイスを選択するドロップダウンリスト以外は、テキスト入力欄ひとつのみとなっています。このテキスト入力欄には、もちろんフリーワードを入力でき、入力されたキーワードで検索を行います。

 一方、「キー:値」の形式で入力すると、該当キーでログを絞り込んで表示してくれます。例えば、デフォルトでは、「package:mine」というクエリが記述されており、この内容で絞り込まれています。このクエリは、アプリのパッケージ(キーがpackage)が現在Android Studioで開いているプロジェクト(値がmine)、というのを意味しており、実際、そのようなログのみに絞られて表示されています。このpackageキーに、例えば、com.google.android.apps.mapsのような別の値を指定すると、そのパッケージに該当するアプリのログが参照できます。

 このように、新しいLogCatでは、キーに対して任意の値を指定するクエリを記述することで、そのログを絞り込んで表示してくれます。そのようなキーとして利用できるものを、表2にまとめておきます。

表2:LogCatの絞り込みクエリのキー
キー 内容
tag タグ文字列による絞り込み tag:openglrenderer
package パッケージ名による絞り込み package:com.google.android
process プロセス番号による絞り込み process:9862
message ログ内容による絞り込み message:success
level ログレベルによる絞り込み level:error
age ログ発生日時に対する絞り込み age:3m

ログ検索クエリ各キーの使い方

 これらのキーの使い方に関して、以下簡単に補足しておきます。

  • 値は一部のみの指定が可能
    tag、package、process、messageに対して指定した値は、その値を含むものを検索します。例えば、表2のpackageの例では、アプリのパッケージに、com.google.android.gmsやcom.google.android.apps.messagingなどが表示されます。
  • 値に正規表現の指定も可能
    値部分に正規表現を利用することもできます。ただし、その場合は、キー末尾に「~」をつけます。例えば、package~:com.*.androidとすると、アプリのパッケージにcom.google.android.apps.messagingやcom.android.systemuiなどのログが表示されます。
  • 値の除外指定も可能
    値に対して、「含まない」を指定することもできます。ただし、その場合は、キーの前に「-」をつけます。例えば、-message:networkとすると、ログ内容にnetworkという単語を含むものを除外します。もちろん、-package~:com.*.androidのように、正規表現の「~」と併用できます。
  • levelは指定したログレベル以上のものを表示
    levelキーに対しては、ログレベルを指定するため、verbose、debug、info、warn、error、assertのどれかを指定します。そして、指定したログレベル以上のものが表示されます。例えば、warnを指定すると、warn、error、assertのログレベルのものが表示されます。
  • ageは現在からどれくらいの範囲かを指定
    ageは、ログ発生日時をもとに、現在からどれくらいの範囲のものを表示させるかを指定します。指定する書式は、数値と単位の組み合わせです。単位としては、秒のs、分のm、時のh、日のdの中から選びます。例えば、3mとすると、現在から3分以内に発生したログを表示します。
  • 特殊なクエリ
    これまで紹介したもの以外に、特殊なクエリとして、先述のpackage:mine、アプリの障害発生のログのみを表示するis:crash、例外スタックトレースのみを表示するis:stacktraceがあります。

 なお、クエリ入力欄は、図18のように入力補完が利用できます。

図18:検索クエリの入力補完
図18:検索クエリの入力補完

複数のログ検索クエリ

 これらの検索クエリは、もちろん、複数指定できます。その場合は、&(AND)や|(OR)、さらには、演算の優先を表す()を使って、複雑な条件を指定できます。例えば、以下のような指定が可能です。このクエリでは、パッケージが現在のプロジェクトのものであり、かつ、ログレベルがWARN以上、または、タグに「open」を含むログが表示されます。

package:mine & (level:warn | tag:open)

 &や|の演算子と()を使わずに、単にクエリを列挙した場合は、違うキーの場合はANDで、同一キーの場合はORで演算されます。例えば、以下のクエリの場合は、キーが違うため、全ての条件をANDで演算した結果、すなわち、パッケージが現在のプロジェクトのものであり、かつ、ログレベルがWARN以上であり、かつ、タグに「open」を含むログが表示します。

package:mine level:warn tag:open

 以下のように、同一キーが存在する場合は、そのキーをORで演算します。

package:mine message:fail message:success

 この場合は、以下と同じ内容のログが表示されます。

package:mine & (message:fail | message:success)

まとめ

 Android StudioのABCシリーズの新機能を紹介する本稿は、いかがでしたでしょうか。次回は、新機能リストの4以降のインスペクタやプロファイラに関して紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【Android Studioアップデート解説】ABCシリーズの新機能まとめ連載記事一覧
この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19042 2024/02/27 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング