くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Android の Layout XML の <merge> タグについて

Android の layout ファイルでは <merge></merge> というタグを使うことができます。 この記事ではそのタグの使い方について書いていきたいと思います。 どのように使うのか レイアウトファイルのルートタグとして <merge></merge> を設置します。 そのタグの中に任意のタグを配置して使い…

mac で linux 互換の time コマンドを使う

mac で time コマンドを利用しようとしましたが、微妙にLinuxで使っていたものとは別のようでしたので同じものが使えないか調べてみました。 解決方法 gnu-time を brew install すれば良さそうでした。 具体的には以下のコマンドを実行してインストールしま…

Mac で Fish なユーザーが adb へのパスを設定する

以下の一文を ~/.config/fish/config.fish に追記するだけです。 いつも忘れるので書いた。 set PATH /Users/{ユーザー名}/Library/Android/sdk/platform-tools $PATH

Android での Wireless Debugging のやり方について

導入 Android 11 から Wireless Debugging が導入されました。 Android 11 以前のAndroid 端末でもできてはいたようですが Android 11 からは専用のUIが Developer option に実装され、かつ adb からも使いやすいコマンドが使えるようになったという認識をし…

特定のフォルダ以下にある特定の拡張子のファイルを列挙する

以下のコマンドを使えば良さそう find -E . -type f -regex ".*.hoge" kotin ファイルの場合 find -E . -type f -regex ".*.kt" java ファイルの場合 find -E . -type f -regex ".*.java"

WindowInsets を利用してキーボードを表示・非表示にしたり表示状態を取得したり

前提条件 Android 11 以降 何をするのか WindowInsets に追加された機能を組み合わせることでキーボードを表示・非表示にしたり現在の表示状態をコントロールして遊べそうだったので検証してみた記事です。 ソースコード 今回遊んだコードはこんな感じです。…

Android 11 でカスタムToast が非推奨になるようです。

Android 11 から カスタムToast が非推奨になるようです。 カスタムToast とは 一般的な Toast はテキストが画面の下部に一定時間表示されてユーザーに通知を送ることができる機能です。 by https://developer.android.com/guide/topics/ui/notifiers/toasts…

ContextThemeWrapper について

ContextThemeWrapperとは 任意のContextのThemeを上書きしたContextを作成することができるものです。 何ができるのか Viewの作成などを行う場合にContextThemeWrapper を使い作成したContextを渡すことで作成時点に指定した任意のThemeを利用してViewを作る…

株式会社メルカリに新卒入社しました。

試用期間が終わるらしいので書きます。 株式会社メルカリに新卒のAndroid アプリエンジニアとして入社します。日本版メルカリ(通称JP)を作ってます。 ちなみに、座席表に自分の名前は書いてありませんでした。(誰も更新してないっぽい と言った感じで言い…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記

Github のプルリクエストの Load Diff を一気に読み込む

巨大なdiff をレビューするときに複数の Load Diff をまとめて読み込みたいことがあると思います. そのときに使えるテクニックです. やり方 読み込みたいプリクエストのページを開き Google Chrome 等の開発者ツールのConsole のところで以下のスクリプト…

Spek 2.0 で Data-Driven test はサポートされてないらしい

github.com 普通のKotlin のコードで表現してねって感じらしい.

ViewGroup で ダブルタップを検知するには

導入 ViewGroup 全体でダブルタップを検知したいときありますよね?そんな時の解決方法です。 前提条件 Android アプリ ViewGroup 内でダブルタップされたら検知したい 提案手法 対象となるViewGroup に GestureDelector をセットして監視する。 手順 検知し…

mac に sox をインストールする。

波形編集ソフトウェアの sox をmacにインストールする方法です。 Homebrew からインストールすることができるため、以下のコマンドを使うことでインストールすることができます。 brew install sox

ViewPager2 を使っているときにスワイプを一時的に向こうにしたい。

ViewPager2 を使って開発をしているときにスワイプされたくない時があると思います。 ただ、xmlから向こうにすると任意のタイミングでスワイプできるかの管理をできなくなります。 そのため、今回のような記事のことが必要になります。 結論 ViewPage2に生え…

大学生二人の弾丸韓国旅行をNotion を使ってスケジュール組んだお話

この記事で書くのは、旅行の計画〜実際に行ったとの割り勘精算までを Notion で管理したお話です。 Notion とは 少し前から情報感度の高い人の間で使われているドキュメント共有ツールです。 Markdown ぽく書いたり、DB を追加でき、Kanban, Calender, Excel…

7人ぐらいのチーム開発のミーティングで試してること。

最近、sechack365 というものでチーム開発をする必要に迫られたので以前から試してみたかったミーティングをこなす時の工夫について書いてく チームのコンテキスト 7人チーム 最終学年な人が多く卒研などでフルタイムで時間を取れる人はいない 5人がDev, 1…

TypeScript で Console.log() を呼び出そうとするとエラーになるので直した。 Cannot find name 'console'. Do you need to change your target library?

現状 TypeScript を書いているときに以下のようなエラーが発生しました。 Cannot find name 'console'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom' 解決方法 node の 型情報ファイルが存在してな…

Windows 10 Mobile がサポート終了したので私とWindows Phone のこれまでを振り返ってみる。

Windows 10 のサポートが切れた。 Windows 10 mobile のサポートが終了したようです。 Windows Phone 8 のころからのユーザーなのですこし思い出してみようと思います。(Windows 10 mobileのことを以下では Windows Phone と表記します。 security.srad.jp W…

Tensorflow の Android Sample をビルドしようとするFill class が見つからないエラーを解消する

tensorflow に付属しているサンプルを実行しようとすると以下のようなエラーが発生することがあります。 今回は、それを解決したいと思います。 クラス Zerosで宣言されているTはObjectを拡張します /Users/kuxu/.ghq/github.com/tensorflow/tensorflow/tens…

Go 言語なプロジェクトで Github Actions を使ってみる

Go 言語を最近は書いています。サーバーサイドエンジニアになるのかもしれません。 そこで、当然のようにCIを設定していくのですが、最近出たばかりの Github Actions を使っていこうと考えています。 (Public repo の場合実質ある程度の規模までは無料で制…

fish で git のステージされているファイルを一覧を表示する関数を追加した

git で git add したファイルのリストを表示する機会が多かったので fish の関数にしてみました。 いい感じに使ってみてください。 function gsf git diff --name-only --cached end

fish & peco で Git の変更されたファイルを表示して git add するワンライナー

git add (git diff --name-only HEAD^ | peco)

setting.gradle に追記することで特定のフォルダに入っているmoduleを一括でターゲットにする様にした

Gradle 芸でモジュール数が増えても記述が多くならない様にして見ました。 feature/data の名前でモジュールをフォルダ分けしてたりするので複数のフォルダを見たいときでもいい感じになる様にしてみました。 ['feature', "data"] .asList() .each { folderN…

Fragment で Snackbar を表示させるHelperメソッドを書いた。

暗記とか苦手なので書く。 重要なのは、 android.R.id.content で Activity の乗ってる View を取ってきてそこに表示してる fun Fragment.showSnackbar( text: String, @BaseTransientBottomBar.Duration length: Int = Snackbar.LENGTH_SHORT ) { Snackbar.…

Gson で List<*> なクラスをJsonからパースするときにシュッと処理してくれる拡張関数を書いた。

ソリューションはあるけど、拡張関数でシュッと解決してくれるものがググっても出てこなかったので書きました。 ソースコード inline fun <reified T> Gson.fromJson( json: String ): T { return this.fromJson( json, object : TypeToken<T>() {}.type ) } 一番シュッと</t></reified>…

横に長くて解像度の良いディスプレイを買った。MacBook Pro の外部ディスプレイとして使ってます。 LCD-GCWQ341XDB

横に長くて解像度の良いディスプレイを書いました。 買ったやつの特徴 横に広い 解像度が高い USB-C に対応してる HDMI に対応してる リモコン付き Amazonで翌日に届く 一応、ゲーミングとか色がなんちゃらとか書いてありますが興味なのでどうでもいいです。…

Android アプリでOS組み込みの音声合成エンジンを使ってTextToSpeechを行う

この前ハッカソンで Android アプリでOS組み込みの音声合成エンジンを使って TextToSpeechを実装してたのでその時の知見を共有します。 実装方法 1. AndroidFramework に含まれている TextToSpeech Class を利用するだけです。 developer.android.com 2. ラ…

Android 10 から導入された Settings Panels を使ってみた。仕組みも少し見てみた。

Android 10 から設定画面をユーザーアプリが起動しているときに画面を遷移せずに表示することができるようになっています。 今回はこちらようにアプリ内に設定画面の一部を表示してみたいと思います。 ここでは、設定アプリの一部を表示と書きましたが、正確…

Android 端末で Suica に触れたときにアプリが起動してUIDを読み取れるようにする

この記事を開いた皆さんは、タイトルのように Android 端末で Suica に触れたときにアプリが起動してUIDを読み取ろうとしている奇特な人だと思います。 NfcAdapter と言うクラスを利用することであれこれをお任せすることができます。 ここで重要になってく…