しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Androidのアプリの国際化方法のメモ

Androidアプリの国際化対応のメモです。 下の手順で実施しました。 まずはres/valuesフォルダ以下にstrings.xmlを作成して下のように文字列リソースを作成しました。 <resources> <string name="app_name">メモ帳</string> <string name="yes">はい</string> <string name="no">いいえ</string> </resources> 下のように直接記入していた文字列はstrings.xmlのリソースを使うよ…

3Dプリンタ用にG-code形式のファイルを作成する

3Dプリンタを購入したので出力の為に色々調べてみました。 今回購入したプリンタではG-codeという形式が必要でした。 調べた所3DプリンタはSTLやOBJという形式が一般的でG-codeはかなり珍しいようでした。 G-codeへの変換ですがSTL形式で作ってスライス(変換…

SwiftPM(Swift Package Manager)対応ライブラリを作ってみる

SwiftPM対応ライブラリの作り方を調べてみました。 まずはライブラリのフォルダを作成してから下コマンドで初期化します。 swift package init コマンドを実行すると下のようなフォルダやファイルが作られます。 Sourcesにはライブラリのコードを入れてTests…

Swift Package Managerでライブラリをインストールする

パッケージ管理システムのSwift Package Managerを試してみました。 パッケージの追加はメニューの「File」 → 「Add Packages」から行います。 右上から検索をして目的のライブラリを探して追加します。 今回はFirebaseのインストールをしました。 Firebase…

FirebaseのIn-App Messagingでアプリ内にアラートを出す

今回は下URLを参考にFirebaseのIn-App Messagingを使ってアプリ内にアラートを出してみました。 【iOS】Firebase In-App Messaging を使ってアプリ内メッセージを送ってみた | DevelopersIO まずはCocoaPodsでFirebaseをインストールします。 target 'MyApp'…

Macでサイバーエージェントの公開したLLMを動かしてみる

サイバーエージェントが日本語LLMを公開してくれたので動かしてみました。 www.cyberagent.co.jp ライセンスはクリエイティブ・コモンズで、商用利用もできるようです(2023/05/20時点)。 詳しくは各LLMの詳細ページに参考にしてください。 huggingface.co 手…

MacでPython+Anacondaを使ってDolly2.0を動かす

商用利用もできるLLMのDolly2.0を試してみました。 まずはAnacondaをインストールします。 Anacondaはデータサイエンスや機械学習などで良く使われるツールで、便利なライブラリなどを含んだプラットフォームです。 Anacondaはインストーラーを使ってインス…

RubyでOpenAI APIを使ってみる

Rubyのライブラリを使ってOpenAIのAPIを使ってみました。 まずは環境変数にOpenAIのAPI Keyをセットします。 キーは事前にOpenAIのサイトから取得しておきます。 export OPENAI_API_KEY=sk-XXXXXXX 次はGemfileでライブラリを追加します。 gem "openai" 最後…

PreferenceFragmentCompatで設定画面を作成する

PreferenceFragmentCompatという設定画面作成用のコンポーネントを試してみました。 まずはbuild.gradleでライブラリを追加します。 implementation 'androidx.preference:preference:1.2.0' 次は設定画面用のXMLを作成します。 res/xmlにpreferences.xmlと…

ChatGPTを試してみたメモ書き

最近1ヶ月くらいプログラミングをする際にChatGPTを使ってみたのでメモ。 使い方 Androidアプリを作るときやRuby on Railsでの開発時に質問をしている。 「このViewのここだけ角丸にしたい」「このコンポーネントの背景色を変えたい」みたいにどのプロパティ…

Android StudioにGitHub Copilotを入れてみる

Androidアプリ開発でGitHub Copilotを試してみました。 以前Xcodeで試した記事は下URLです。 GitHub Copilotを使って自動コード補完 - しめ鯖日記 まずは下の公式サイトからGitHub Copilotを有効にします。 docs.github.com GitHub Copilotを有効にしたらAnd…

RippleDrawableでボタン押下時のようなアニメーションを付ける

RippleDrawableを使ってTextViewなどを押した時にもボタンを押したときのようなアニメーションが出るようにします。 まずはXMLでRippleDrawableを定義します。 res/drawableフォルダの中にtest_drawable.xmlというファイルを作成して下のように記述します。 …

GitHub Copilotを使って自動コード補完

GitHub CopilotというAIが自動でコード補完してくれるサービスを試してみました。 github.com Xcodeは公式未対応なので、下のプラグインを利用しました。 サードパーティーアプリなので入れる際は会社のセキュリティーポリシー上問題ないかご確認下さい。 gi…

【Kotlin】Androidでファイルアプリへの保存・取得を試す

Androidでファイルへの保存・取得を試してみました。 ファイルへの保存するために、まずはregisterForActivityResultでActivityResultLauncherインスタンスを作ります。 val writeResultLauncher = registerForActivityResult(ActivityResultContracts.Start…

AndroidのXMLの?attrについて調べる

Androidアプリ開発でXMLを編集している時、@color/blackのような@を使う形式以外に?attrという?を使う形式があります。 今回はこの?について調べてみました。 ?attrですが、こちらはThemeの属性になります。

ViewModelProviderでViewModelを呼び出す

ViewModelですがbyを使わずにViewModelProviderで呼び出せるようなので試してみました。 まずはViewModelを使うためのライブラリをインストールします。 implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation 'androidx.activ…

SwiftのExpressibleByStringLiteralについて調べる

SwiftではExpressibleByStringLiteralに準拠させた構造体は文字列リテラルで初期化をする事が可能です。 struct MyString: ExpressibleByStringLiteral { let body: String init(stringLiteral value: String) { body = value } } 初期化処理は下の通りです…

Android Studioでブレークポイントを使ってデバッグをする

Android Studioでブレークポイントを使ってデバッグをしてみました。 ブレークポイントはコードの左側をクリックする事でセットする事ができます。 ブレークポイントを有効にするには、いつもの実行ボタンではなくデバッグボタン(虫マーク)でアプリを起動す…

KotlinのListenerの省略形について調べる

KotlinではOnClickListenerなどをListenerを省略(SAM変換)して書く事ができます。 今回は省略できる条件について調べてみました。 SAM変換可能なListenerは下のようにメソッドが1つである必要があります。 それとinterfaceの先頭にfunを付ける必要もあります…

構成プロファイル(拡張子: mobileconfig)について調べてみる

格安SIMの初期設定時などによく使う構成プロファイル(拡張子: mobileconfig)について調べてみました。 構成プロファイルはMacのApple Configuratorというアプリで作成します。 Apple Configuratorをダウンロードして開くと下のような表示になっています。 プ…

ActionProviderでサブメニューを表示する

ActionProviderというクラスを使ってAndroidアプリのメニューにサブメニューを入れてみました。 Activityでメニューを表示して動かするためには下のようなメソッドを実装します。 class MainActivity : AppCompatActivity() { override fun onCreateOptionsM…

CoordinatorLayout+AppBarLayoutで動的なツールバーを作る

CoordinatorLayoutとAppBarLayoutを使ってスクロールすると自動で畳まれるツールバーを作ってみました。 まずはスクロールのテスト用にRecyclerViewを表示します。 activity_main.xmlを下のように変更します。 layout_behaviorはツールバー これがない場合、…

Kotlinの::構文について調べる

Kotlinに時々出てくる::構文について調べてみました。 ::ですが下のようにメソッドを変数化する時に利用します。 val myMethod = ::test myMethod() myMethod() fun test() { Log.e("test", "TEST") } 他にはクラス情報を取得する時にも利用します。 クラス…

Androidのコンテンツプロバイダを試してみる

コンテンツプロバイダを使ってデータの保存を試してみました。 コンテンツプロバイダとはAndroidの用意しているデータ保存の仕組みで、他アプリとのデータ共有を簡単にできるようになります。 今回はこれを使ってデータの保存をしてみようと思います。 まず…

Google App Engine上でRailsを動かしてみる

タイトルの通り、Google App Engine上でRailsを動かしてみました。 ドキュメントは下を参考にしています。 App Engine フレキシブル環境で Rails 5 を実行する | Ruby | Google Cloud まずはRailsプロジェクトを作成します。 rails new test_app 次にAppEngi…

Android Studioのプロファイラでボトルネックを探してみる

Android Studioのプロファイラを使ってAndroidアプリのどこが重いかの測定をしてみました。 まずは新規プロジェクトを作成します。 プロファイラはメニューのViewから起動します。 起動すると下のようなViewが表示されます。 アプリを起動すると自動的に接続…

【Kotlin】res/rawフォルダとassetsフォルダの動作を見る

res/rawフォルダとassetsフォルダの違いが気になったので動作を見てみました。 公式ドキュメントの記述は下の通りです。 どちらも未加工のもの(おそらくtxtファイルなど)を入れるためのフォルダになります。 res/rawだとリソースIDでアクセスできるけどasset…

Androidアプリ開発でダークモード対応とローカライズを両立する方法を調べてみた

Androidアプリのリソースファイルですがvalues-nightというフォルダに入れる事でダークモード用リソースにする事が可能です。 同じようにvalues-jaのようなフォルダに入れる事で多言語対応ができます。 あまりないとは思うのですが、海外対応&ダークモード対…

【Kotlin】AndroidのActionViewを試してみる

ActionViewとはアプリバー上に色々なViewを表示できる機能です。 ボタンを押したらアプリバーに検索用の文字入力を表示するといった事ができるようになります。 今回は下URLを参考に試しました。 アクション ビューとアクション プロバイダの使用 | Android …

AnimationDrawableでアニメーションを作る

AnimationDrawableでアニメーションを作れるようなので試してみました。 プロジェクトを作ったらまず下のようなアニメーション画像2枚を追加します。 次はdrawableフォルダ内に下のようなtest_animation.xmlを作成します。 android:oneshotは1回だけか繰り返…