- 0.1. グラフライブラリ 5. タッチ、インタラクション
- 0.2. グラフライブラリ 4. デザイン適用
- 0.3. グラフライブラリ 3. グラフデータの作成
- 0.4. グラフライブラリ 2. グラフ軸の作成
- 0.5. グラフライブラリ 1. カスタムビュー生成
- 0.6. グラフライブラリ 0. 企画、データ構造
- 0.7. iOSとAndroidでPWAをサポート
- 0.8. GitHub ActionsでMagisk Patchを自動化する
- 0.9. 【Flutter】Flutter 3.24.0にアップデートした際に発生したビルドエラーの解決方法
- 0.10. Google推奨アーキテクチャとClean Architectureの違い
- 0.11. Google Playからインストール数などの情報を取得
- 0.12. EC2とスマホをOpenVPNでつなげてみた。
- 1. はじめに
- 2. 1.EC2を立てる
- 3. 2.EC2側の設定。
- 3.1. easyrsaを使ってと証明書の生成。
- 3.2. Composeの副作用についての注意事項
- 3.3. AndroidStudioが重い時にやること
- 3.4. Android:SAFを利用してオブションメニューからファイル選択画面を呼び出し、txtファイルを表示してみた。
- 3.5. Jetpack Glanceでテキストサイズをdp単位で指定する方法
- 3.6. Flutterで別アプリ起動する手順(カスタムURLスキームだけ)
- 3.7. M1 Mac に .NET 8 の MAUI を入れて iOS と Android アプリを試してみた
- 3.8. WindowsPCでAndroid端末のレイアウトを確認
- 3.9. 【Android】.aabファイルから.apkファイルを書き出す
グラフライブラリ 5. タッチ、インタラクション
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-5.-%ED%84%B0%EC%B9%98,-%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9))*
グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でタッチやインタラクション処理部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
### 問題 1.グラフの軸ですべてのデータを
グラフライブラリ 4. デザイン適用
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://github.com/boostcampwm2023/and09-PriceGuard/wiki/%EA%B7%B8%EB%9E%98%ED%94%84-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EB%94%94%EC%9E%90%EC%9D%B8-%EC%9E%85%ED%9E%88%EA%B8%B0), 同じく私が作成しました。)*
グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデザインやテーマの部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
# 目標
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-3/), 同じく私が作成しました。)*
グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中でグラフデータを描画する部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
## グラフデザインモチーフ
まず、実装方法を説明する前になぜこのライブラリを実装することになったのか説明します。
ブーストキャンプグループのプロジェクトデザインをする時、Material Designを遵守するデザインで制作しようと思い、グラフのデザインもMaterial的に反映させ
グラフライブラリ 2. グラフ軸の作成
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-2/), 同じく私が作成しました。)*
グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。今回の記事ではその中で核心部分であるグラフ軸を描く部分について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
## 考慮すべきこと
実装する前、軸を描く時どのようなことを考慮する必要があるのか簡単に書いてみました。
– スケールの数
– スケールあたりの範囲
– 目盛ごとの間隔 (px)
– 軸の長さと余白最初はこのように考えて実装したのですが、テストをしていくうちに考慮しなければな
グラフライブラリ 1. カスタムビュー生成
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-1/), 同じく私が作成しました。)*
グループプロジェクトでグラフライブラリを実装する過程をまとめてみました。この記事ではプロジェクトの初期設定やカスタムビューを作る過程について説明します。([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
## プロジェクト初期設定
### プロジェクト構造
“`
Project Root
│
├───app
│ ├───src
│ └───build.gradle.kts
│
├───materialchart
│ ├───src
│ └───build
グラフライブラリ 0. 企画、データ構造
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/graph-library-0/), 同じく私が作成しました。)*
グラフライブラリを実装するために必要な企画と資料構造についてまとめてみました。 ([project repo](https://github.com/boostcampwm2023/and09-PriceGuard), [library repo](https://github.com/Taewan-P/material-android-chart))
## 企画
![graph_library_plan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896189/bba0a5cc-674b-fd7c-15dd-37bebead4fe2.png)
まず、私たちのプロジェクト企画に合うようにグラフライブラリを
iOSとAndroidでPWAをサポート
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/pwa-support/), 同じく私が作成しました。)*
今回、[バスハニャーンサービス](https://hybus.app)をリニューアルしながら、PWAをより良くサポートするための努力を書いてみたいと思います。
## PWAとは?
PWAとはProgressive Web Appの略です。
Web環境でのサービスは比較的発見されやすく、他の人にリンク一つで簡単に共有できる特徴があります。
一方、Nativeアプリのような場合には、システムにインストールする方式なので、ユーザーエクスペリエンスを最大化することができ、アプリドロワーからアプリアイコンをクリックして簡単にアクセスできるという特徴がある。また、Nativeはオフラインでも使用が可能です。
PWAはNativeのこのような長所をWeb環境でも同様にサポートすることができます。
バスハニャーンは
GitHub ActionsでMagisk Patchを自動化する
*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/magisk-automation/), 同じく私が作成しました。)*
GitHub Actionsを利用してMagiskパッチを自動化した経験を書いてみます。
## 既存の方法
Magiskをパッチする方法は下記の通りです。
1. Factory Imageをダウンロードします。
2.解凍後、boot.imgを抽出します。
3.boot.imgを携帯電話に移動した後、Magiskアプリでboot.imgを入れてパッチを適用します。
4.パッチを適用したboot.imgをコンピュータに戻し、携帯電話をfastbootモードにします。
5. `fastboot` コマンドを使ってboot領域にパッチを適用したboot.imgをフラッシュ(flashing)します。
6.再起動したら完了アンドロイドスマホは毎月セキュリティーアップデートが出ますが、root権限を
【Flutter】Flutter 3.24.0にアップデートした際に発生したビルドエラーの解決方法
## はじめに
この記事では、Flutter 3.24.0にアップデートした際に発生したビルドエラーの解決方法についてまとめます。これはあくまで私自身が直面したエラーとその解決方法ですので、他の環境で同様のエラーが解消出来るかは保証できません。また、パッケージ依存による他のエラーがある可能性もあります。
ここで紹介する方法以外に有効な解決策があるかもしれませんので、参考程度にご覧いただけると幸いです。
## 確認したエラー
### 1. Error: Type ‘UnmodifiableUint8ListView’ not found.
#### エラー文
“`
Error (Xcode): ../../../.pub-cache/hosted/pub.dev/win32-5.5.0/lib/src/guid.dart:32:9:
Error: Type ‘UnmodifiableUint8ListView’ not found.
“`
#### 原因
UnmodifiableUint8ListView クラスは、以前の Dart バージョンで利用されていましたが、Da
Google推奨アーキテクチャとClean Architectureの違い
# この記事で伝えたいこと
Now in Androidのドキュメントを読んでいて、興味深い議論を見つけたので、自分なりの解釈を加えつつピックアップしていこうと思います。:::note warn
アーキテクチャの解説を含みますが、私の個人的な解釈や大雑把な説明に留める箇所が多々あるので、正確な情報でない部分がありましたらご指摘ください。
また、今回は議論の一部のみを取り上げます。詳細な内容は、後述するリンク先のページでご確認ください。
:::# はじめに
最近アーキテクチャについて勉強していましたが、なかなか頭に入ってきませんでした。Clean Architectureについても理解が浅く、Google推奨アーキテクチャとの違いもなんだかよくわかっていませんでした。どうしたらアーキテクチャの全体像を掴めるんだろうと思い、まずはAndroidエンジニアには馴染み深いNow in Androidを参考にしてみることにしました。
[アーキテクチャの解説ドキュメント](https://github.com/android/nowinandroid/blob/main/docs/
Google Playからインストール数などの情報を取得
Google Playで公開している以下のアプリが最近10万ダウンロードを突破したのですが、Play Consoleで確認できる統計情報や、ダッシュボードのKPIで表示される 合計インストール数 とGoogle Playの数値とは乖離があるようでした。
https://play.google.com/store/apps/details?id=com.hnimrod.loancalc&hl=ja
具体的にはダッシュボードの合計インストール数(新規デバイス獲得数(累計))は10万を超えていますが、Google Playのページでは50,000+の表示となっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59203/8f775106-0344-6425-3901-1e64a713ece7.png)
## 実際のインストール数を取得する方法
Google Playの実際のインストール数を確認したい場合、Pythonのライブラリgoogle-play-scraperを使う
EC2とスマホをOpenVPNでつなげてみた。
はじめに
今回はEC2を立てるところから、スマホからOpenVPNを使って接続するところまでの解説です。といっても初学者なので、至らぬところがあればご指摘ください。
1.EC2を立てる
グローバルIPを固定させる必要がある
VPNをつかってクライアントからアクセスするときに、宛先グローバルアドレスIPアドレスが必要です。この宛先グローバルアドレスがコロコロ変わるとそのたびに設定を書き換えないといけません。それは面倒なので今回はグローバルIPを固定させます。固定IPを契約するか、EC2をつけっぱなしにするとグローバルIPを固定できます。今回は安い個人開発用の安いEC2なので、つけっぱなしにしてIPを固定させます。
EC2を立てる
下記記事で進めたらうまくいきました。
https://qiita.com/yu0224miao/items/e897fe50613a3d34a4e2
2.EC2側の設定。
easyrsaを使ってと証明書の生成。
・easyrsaを使って秘密鍵と証
Composeの副作用についての注意事項
# はじめに
今回は、自分がComposeで実装していて少し手間取った部分を紹介していきます
### 本文
Composeでは特定のタイミングで処理をするための副作用と呼ばれるものが存在します。
初回の描画時に処理をしたい場合はLaunchedEffectの引数に対してUnitを渡すことで実現することが可能です。
その時に気をつけたいのがSideEffectの扱いについてです。
SideEffectはLaunchedEffectと違いCoroutinScopeではないですが、Recompositionのたびに呼ばれるので意図せず処理が走ってしまうことがあります。
DisposableEffectと違いSideEffectとLaunched Effectは似た処理をやろうと思えばできてしまう分使用時にはどちらが適しているかと適切に判断しないといけません
### 最後に
今回はCompose実装時の副作用と呼ばれるものについての留意点を紹介しました
自戒の意味合いが強いですが、どなたかのお役に立てれば幸いです
AndroidStudioが重い時にやること
# はじめにやって欲しいこと
* **Invalidate Caches…**
AndroidStudio上部にカーソルを合わせた時に表示される**File**から選択* **Clean Project**
同じく上部の**Build**から選択# メモリ関係
「gradle.properties」ファイルの最後に
“`
org.gradle.jvmargs=-Xmx1024m
“`
を追加。PCのメモリサイズによって異なるので、
https://qiita.com/shirahon/items/f5d145689c0ea4230257
詳しくはこちらを参照。
# エミュレータ
* Instant Runを使用する
修正した内容をビルドしなくても反映させる 簡単な内容だったらこれを使うといいかも* エミュレータの不要な設定をオフにする
必要な動作確認に音声やGPS機能などの機能が使われない場合、それをオフにすることでエミュレータの動作が軽くなる可能性があります。
configファイルに以下を追記します。
“`
hw.audioInput = no
Android:SAFを利用してオブションメニューからファイル選択画面を呼び出し、txtファイルを表示してみた。
# 1.はじめに
山田著「[初めてのAndroid開発Kotlin編](https://www.shuwasystem.co.jp/book/9784798065106.html)」の478ページにStorage Access Framework(SAF)を利用してテキストファイルを開くサンプルアプリが掲載されている。このアプリは、起動した直後にファイル選択画面が呼び出されるのだが、この点に少し不満を感じた。
そこで、改造してオプションメニューを付けることとした。
動作のイメージは以下のスクリーンショットを参考にしてください。
![Screenshot_20240928_163412.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501068/b3aa3edc-5743-a41d-f75b-7769166f6d17.png) ![Screenshot_20240928_163533.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
Jetpack Glanceでテキストサイズをdp単位で指定する方法
Jetpack Glanceではテキストのサイズはsp単位でしか指定できません。
指定可能な単位はTextUnitでこれにはspとemがありますが、今のところemはサポートされていません。emについては将来的にサポートされる可能性があります(ソースコードにTODOでコメントされていますし)が、dpがサポートされることはなさそうです。アクセシビリティのためsp単位を使うべきというのはその通りですが、状況によってはdpで指定したい場合も多く存在します。
ここではその指定方法を紹介します# fontScaleを元にspサイズを計算する
Jetpack Composeでも同様にsp単位でしか指定できませんが、`toSp()`メソッドを使うことでdp単位での指定が可能です。
“`kotlin
fontSize = with(LocalDensity.current) { 16.dp.toSp() }
“`この`toSp()`はFontScalingに定義されている拡張関数で、実装は以下のようになっています。
単純に言えばfontScaleによる拡大率の逆数を掛けたspサイズを指定
Flutterで別アプリ起動する手順(カスタムURLスキームだけ)
## 想定している要件
– カスタムURLスキーム(CustomURLScheme)でインストール済みの別アプリへ遷移させたい
– Androidのアプリリンク(App Links)は使用しない
– iOSのユニバーサルリンク(Universal Links)は使用しない
– そのほかFirebaseDynamicLinksなども使用しない
– ユーザーは必ず遷移先のアプリをインストール済みである## 遷移先のアプリの事前確認事項
### Android
– ``が存在するか確認し、ない場合は追加、ある場合は`android:scheme`の値を確認する
– `android:exported=”true”`になっているか確認する
– 記述がない場合はfalse扱いとなるためtrueを明示的に記述する
– `yourcustomscheme`は衝突しないようにユニークな名前を付ける“`android/app/src/main/AndroidManifest.xml
M1 Mac に .NET 8 の MAUI を入れて iOS と Android アプリを試してみた .NET6 で MAUI がプレビューの時にも試してみましたが、改めて .NET8 で MAUI を試してみました。前提となる Xcode や Android Studio はインストール済みで、Visual Studio Code には MAUI や C# の拡張は無い状態(未インストール)で動きました。
https://qiita.com/mnrst/items/a43a32424b84ed2fd432
## .NET に MAUI をインストール
“`zsh:zsh
% sudo dotnet workload install maui
“`## MAUI アプリを作成
“`zsh:zsh
% dotnet new maui -o mnrmaui% cd mnrmaui
“`## iOS でアプリを実行
“`zsh:zsh
% dotnet build -t:Run -f net8.0-ios
“`## iPad Pro 13-inch (M4) の画面
![dotnet8-maui-01.png](https://qiita-image-
WindowsPCでAndroid端末のレイアウトを確認
# はじめに
Android端末が手元にない状態でAndroid端末でWebアプリケーションのレイアウトの確認を行わなければならない場合のメモがてらにこちらの記事を書かせていただきました。# 手順
## 1. Androidエミュレータをダウンロード
エミュレータとは?
PC上に仮想のAndroidデバイス環境を作成するソフト
私は[BulueStacks](https://www.bluestacks.com/ja/index.html)を使用いたしました。
こちらからダウンロードを行えます。https://www.bluestacks.com/ja/index.html
## 2. Chromeをインストール
検索バーを用いて”Goole Play”より”Chrome”をインストール
[![Image from Gyazo](https://i.gyazo.com/988b63fed0b4205b7e89a5b1de5d89a0.png)](https://gyazo.com/988b63
【Android】.aabファイルから.apkファイルを書き出す
.aab(Android App Bundle)形式のAndroidアプリを従来のAPKファイルに書き出す方法について備忘のため記載しておきます。
## .aab(Android App Bundle)とは
Android App Bundleについては以下を参照してください。
https://developer.android.com/guide/app-bundle
## 環境
– macOS Ventura
– OpenJDK 17 (OpenJDK Runtime Environment Corretto-17.0.10.7.1 (build 17.0.10+7-LTS))## 必要なツールのインストール
.aabから.apkファイルを書き出すために`bundletool`を使用します。
公式のインストール手順については以下に記載があります。https://developer.android.com/tools/bundletool
macOSの場合は、Homebrewを使用してインストールする方法が楽です。
“`sh
$ brew install