2025年3月30日日曜日

Android Studio VCS Operations Popupをカスタマイズする方法を解説

どうも。どっことです。今回はAndroid StudioにあるVCS Operations Popupにカスタマイズ方法ついて解説します。

VCS Operations Popopとは

VCS Operations PopupはAndroid Studioでバージョン管理ツールの操作するときのポップアップです。control+vのショートカットで表示することができます。メニューから操作する手間が省けるので、多用している人もいるかと思いますが、今回はこのポップアップをカスタマイズする方法を解説します。

VCS Operations Popopのカスタマイズ

カスタマイズですが、実はAndroid Studioがカスタマイズするための設定項目を用意してくれています。なので謎の設定ファイルの書き換えや、ターミナルなどでの謎のコマンド操作は不要です。(地味に嬉しい)

Android StudioのSettings | Appearance & Behavior | Menus and Toolbarsにアクセスしてください。プロジェクトにGitを利用している場合は以下のようなポップアップが表示されると思います。

この画面で項目をカスタマイズすることができます。一覧の中にあるVCS Operations PopupからVCS.Operations.Popup.VcsAwareを選択している状態で+ボタンをクリックしましょう。

ここから項目を追加することができます。たとえば、Update projectをリストに追加してみましょう。一覧からUpdate projectを探してOKをクリックしてください。それで完了です。

それではVCS Operations Popupを表示してみましょう。control+vを入力すると...


追加したUpdate projectがポップアップに追加されていることを確認できました!これでいちいちVCSメニューまでマウス移動させる手間が省けますね!

まとめ

今回はAndroid StudioにあるVCS Operations Popupのカスタマイズ方法について解説しました。Android Studioや、そのベースとなっているIntellij IDEAでは、このポップアップに限らず、さまざまな項目をカスタマイズする設定画面を提供しているので、作業効率がより良くなるようどんどんカスタマイズしていきたいですね。

参考

2025年3月29日土曜日

GitHub ライブラリをGithubに公開する方法を解説(GitHub Packages)

どうも。どっことです。今回はGitHub Packagesを使って自作ライブラリを簡単に公開する方法を解説したいと思います。

プライベートで資格試験などに向けた問題集アプリを不定期に作るのですが、毎回データクラスや画面を一から作っているので「そろそろ標準化しよう。。。」と思いました。ただ標準化したはいいものの、いい感じに使い回すためにはどうしたらいいか、というところで調べた結果、GitHub Packagesのサービスに行き着いたので今回はこちらを紹介し、実際に公開する方法を解説したいと思います。

GitHubPackagesとは

GitHubPackagesはGitHubのサービスの一つで、まさに今回のようなライブラリや、パッケージなどを共有するためのものだそうです。mavenやnpm、NuGetなどの形式で公開することができます。しかも嬉しいことに公開範囲も指定できるようで、一般公開からプライベートやTeam限定など、制御することができるとのこと。とても便利。

今回はJava向けのライブラリを公開するために、Gradleプラグインを使った手順を紹介したいと思います。

GitHubPackagesにライブラリを公開する設定手順

以下の手順で進めます。

  1. app/build.gradleに設定を追加する。
  2. Gradleタスクを実行する。
  3. (任意)GitHub Actionで自動的に更新する。

順番に解説していきます。

app/build.gradleに設定を追加する

app/build.gradleに以下を追加します。

plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/mkt120/sample_repository"
      credentials {
        username = System.getenv("USER_NAME")
        password = System.getenv("ACCESS_TOKEN")
      }
    }
  }
}
  • pluginmaven-publishを追加。ライブラリ公開を簡単に実行してくれるプラグインを組み込む。
  • urlはGitHubのリポジトリURL。
    • GitHubのリポジトリに対応したURLを設定。
  • usernamepasswordはログイン情報。
    • 特にpasswordはログインパスワードだと警告orエラーが発生するので、Githubからアクセストークンを取得しそれを設定する。直書きだとセキュリティ観点でリスクがあるので、Githubの secret and variables に設定しておいて、それを参照するようにしておくのが無難。

Gradleタスクを実行する

前項の設定を追加し、sync gradle を実行すると以下のタスクが追加されます。

publishGprPublicationToGitHubPackagesRepository

これをコマンドラインやGradleペインから実行することで、 GithubPackagesへの登録が行われます。

./gradlew publishGprPublicationToGitHubPackagesRepository

(GithubPackageによると)以下のタスクはGithubPackagesへの登録だけでなく、その前段階のライブラリのビルドなども一緒に実行してくれるようなので、こちらを利用するのが良さそうです。

./gradlew publish

(任意)GitHub Actionで自動的に更新する

ここまでだけでGitHubPackagesにパッケージを登録することができますが、GitHubにコミットをプッシュしたことを契機に、GitHubPackagesに更新を入れるようGitHub Actionで自動登録できるようにしておきます。

#masterブランチにプッシュされたら実行
on:
  push:
    branches: [ "master" ]
  ...

jobs:
  build:
  ...
  
  # name. githubAction のコンソール上で実行内容がわかりやすいように名前付けしておく
  - name: publish library 
    run: ./gradlew publish
    env:
      USER_NAME: ${{ secrets.USER_NAME }}
      ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}

まとめ

今回はGitHubPackagesにライブラリを公開する方法を解説しました。似たようなデータ形式・UIのアプリケーションをたくさん開発している方は、こういった機能を活用することで開発作業の効率化を図りたいですね。また、ライブラリ化したはいいけど、maven repository に登録するほどのものではないんだよなぁ...という方にも、GitHubPackagesという公開範囲を管理できる領域に登録することで適切にスケーリングすることもできるのではないかと思います。

参考

2025年3月22日土曜日

Android/Jetpack Compose Imageに関するパラメータを紹介

どうも。どっことです。今回はJetpack ComposeのImageコンポーサブルについてチートシートを紹介したいと思います。

Imageコンポーサブルとは

Imageコンポーサブルは、名前の通り画像やイメージを表示するコンポーサブルです。まずはAndroidViewのImageViewで実装していたことが、Jetpack Composeでも同様に実現できるのかが気になるところですが、結局ImageViewで重要な設定であったscaleType、つまりイメージの見せ方についての設定がそれに相当するcontentScaleで実現でき、それ以外はModifierを使えば済んでしまうようです。(つまりImageに関する紹介がほとんどない...)

このページではscaleTypeに相当するcontentScaleについて軽く触れ、その設定がどのような見え方をするのかは公式サイトの方にお任せしようと思います。

Imageコンポーサブルを使うときのパラメータチートシート

まずは、必要最小限で設定できるImageのパラメータです。

Image(
  painter = painterResource(id = R.drawable.dog), // リソースから画像表示
  contentDescription = stringResource(id = R.string.dog_content_description) // 説明文
)

contentScale

contentScaleにはいくつかの設定項目があるので、一覧で紹介します。

  • ContentScale.Fit
    • アスペクト比を維持しながら拡大・縮小
    • scaleTypeのfitCenter相当
  • ContentScale.Crop
    • 空きスペースがなくなるように画像を拡大表示(くり抜き)
  • ContentScale.FillHeight
    • アスペクト比を維持しながら、高さに合わせて拡大・縮小
  • ContentScale.FillWidth
    • アスペクト比を維持しながら、幅に合わせて拡大・縮小
  • ContentScale.FillBounds
    • Viewの大きさに合わせて拡大・縮小(画像が歪む)
    • scaleTypeのfitXY相当
  • ContentScale.Inside
    • アスペクト比を維持しながら、縮小(拡大はしない)
  • ContentScale.None
    • 画像に対して何もしない
    • scaleTypeのcenter相当

まとめ

今回はImageコンポーサブルについて紹介しました。正直Image自体には目新しいパラメータがなかったので、contentScaleに関する紹介程度となりましたが、アプリ開発においてイメージの表示は必須機能なので、contentScaleのパラメータについては理解を進ませておきたいところです。

参考


移行予定

どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。