くうと徒然なるままに

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

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

巨大なdiff をレビューするときに複数の Load Diff をまとめて読み込みたいことがあると思います.

そのときに使えるテクニックです.

やり方

読み込みたいプリクエストのページを開き Google Chrome 等の開発者ツールのConsole のところで以下のスクリプトを実行するだけです.

document.querySelectorAll('.load-diff-button').forEach(node => node.click())

参考リンク

gist.github.com

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

導入

ViewGroup 全体でダブルタップを検知したいときありますよね?そんな時の解決方法です。

前提条件

  • Android アプリ
  • ViewGroup 内でダブルタップされたら検知したい

提案手法

対象となるViewGroup に GestureDelector をセットして監視する。

手順

  1. 検知したい ViewGroupclickable, focusable の属性を付与する。
  2. GestureDetectorインスタンスを作成し、SimpleOnGestureListener を実装したクラスをインスタンス作成時に渡す。
  3. 上記、インターフェイスを実装したクラスにonDoubleTap のメソッドを override して任意の処理を追加する。
  4. ViewGroup の setOnTouchListener において引数で渡ってくる MotionEvent を 2. にて作成した インスタンスonTouchEvent メソッドに渡して実行する

再現コード

対象となる ViewGroup については container という名前とする。

        val detector = GestureDetector(
            applicationContext,
            object : GestureDetector.SimpleOnGestureListener() {
                override fun onDoubleTap(e: MotionEvent?): Boolean {
                    Toast.makeText(
                        applicationContext,
                        "ダブルタップされたよ😂",
                        Toast.LENGTH_SHORT
                    ).show()
                    return super.onDoubleTap(e)
                }
            })

        container.setOnTouchListener { _, event ->
            detector.onTouchEvent(event)
        }

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

波形編集ソフトウェアの soxmacにインストールする方法です。

Homebrew からインストールすることができるため、以下のコマンドを使うことでインストールすることができます。

brew install sox

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

ViewPager2 を使って開発をしているときにスワイプされたくない時があると思います。

ただ、xmlから向こうにすると任意のタイミングでスワイプできるかの管理をできなくなります。
そのため、今回のような記事のことが必要になります。

結論

ViewPage2に生えている isUserInputEnabled プロパティを使えば大丈夫です。

コード

// スワイプできるようにする時
binding.viewpager2.isUserInputEnabled = True
// スワイプできないようにする時
binding.viewpager2.isUserInputEnabled = False

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

この記事で書くのは、旅行の計画〜実際に行ったとの割り勘精算までを Notion で管理したお話です。

Notion とは

少し前から情報感度の高い人の間で使われているドキュメント共有ツールです。

Markdown ぽく書いたり、DB を追加でき、Kanban, Calender, Excel っぽい感じなど様々に表示することができます。

このリンクから登録してもらえると僕が嬉しいです。Google アカウントで登録することができます。

www.notion.so

今回の旅行、背景

韓国って当時は飛行機がすごく安かったので行きたくなりました。 Twitterで「韓国行きたい!」ってリプ送ったら行くことになりました。
東京から愛知県に行くよりも安く行けるなら行くしかない。

今回の旅行のポイント

活用ポイントと流れ

当日まで

旅行をするためには以下の情報をまとめなければいけません。 ここでもNotion は役に立ちました。 リアルタイムで情報が同期されるのでテレカンしながら終わる時には必要な情報がまとまったものができあがりました。

  • パスポート情報
  • 航空機のチケット情報
  • Airbnb の宿泊先情報、オーナーとのチャット情報

現地での活用

現地での支払いは基本的にどちらかがまとめてしてました。 そして、Notion に最終的に記述することで割り勘をしました。

割り勘をする時

Notion には 計算する機能が付属しているのでそれを使って割り勘しました。

ただ、ここでの問題は、3人以上で割り勘をする場合には少し考えないといけないなぁと言った感じです(多分できる)

実際にはどんなの使ったの?

個人情報が入っているので実際に使ったものをお店することはできませんが、こんな感じで使いました。

www.notion.so

最後に

Notion に情報を集約できるのはいい感じです。

ここから登録してくれるとマジ嬉しい

www.notion.so

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

最近、sechack365 というものでチーム開発をする必要に迫られたので以前から試してみたかったミーティングをこなす時の工夫について書いてく

チームのコンテキスト

  • 7人チーム
  • 最終学年な人が多く卒研などでフルタイムで時間を取れる人はいない
  • 5人がDev, 1人がデザイナー, 1人が外部連携周りとか
  • ミーティング はなるべく短い時間で行いたい。だらだらと1時間以上話してたりするのはまじ勘弁

チームの内訳はこんな感じ

  • iOS Engineer 3人
  • Android Engineer 1人
  • infra, serverside engineer 2人
  • 外部連携、諸々 1人

ちなみに、Android Engineer は私です。一人でしてます。

試してる施策

ミーティングの前に各自のしたことについて書いてもらってる

今何やってるかの共有を週一ミーティングでしてます。 その時に、事前にドキュメントに書いてもらってます。

以下のような理由でしてます。

  • なるべく自分の好きな時間に必要なタスクをこなせれる
  • 同時並行でできる

KPT を表現を柔らかくして書き出しやすく

何をしたのかについて書いてもらうにしても何らかのフレームワークがないと大変なのでテンプレ作って埋めてもらうようにしてます。 KPT とかが有名かとは思いますが、私たちの場合は、以下のようにしてます。
理由としては、我々は別に企業ではないのでしっかりする必要はなく、ちょっとでもゆるふわにしていきたいからです。(ただ、内容はしっかりとしたい

  • やばいこと
  • やったこと
  • やること
  • 相談したいこと・共有事項

f:id:kuxumarin:20191217215547p:plain

毎回書き込む内容についてテンプレ作ってる

毎週話すことはだいたい決めてあるのでテンプレを作ってます。
毎回、それを一番上にコピーするとミーティングをはじめれるようになってます。

一番上な理由は、一番下に付け足してると回を重ねるごとにスクロールしなければいけない量が増えていくから。

参加者に毎回自分の名前を書いてもらって誰が来たのかわかりやすいようになってる

以下のような名前を書く欄を作って書いてもらってます。

f:id:kuxumarin:20191217220138p:plain

  • この形式にしてる理由は、同時に編集してもいい感じになる
  • スペースをそこまで取らず既存のドキュメントの機能だけで実現できる
  • 人数の増減に柔軟に対応できる

実際のミーティング時間

25分程度で毎回終わるようにしています。
ただ、モバイル関係に関して共有事項が多いためそのあとに10分程度追加ですることはある程度です。

今の所は良さそうにワークしてるのでこのまま継続しつつ改善できるところは改善していきたい。

色々な所のインターンや経験などで知った良さそうなのを取り入れたりはしてる。 こういうのに自分の思い描いてた改善案を試せる場は貴重なので色々チャレンジしてみたい。