くうと徒然なるままに

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

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分程度追加ですることはある程度です。

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

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

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 の 型情報ファイルが存在してなかったのが問題でした。

ということで以下のコマンドを実行し node の型情報を入れたら解決しました。

npm install @types/node

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

Windows 10 のサポートが切れた。

Windows 10 mobile のサポートが終了したようです。

Windows Phone 8 のころからのユーザーなのですこし思い出してみようと思います。(Windows 10 mobileのことを以下では Windows Phone と表記します。

security.srad.jp

Windows Phone との出会い

最初に購入した Windows Phone は Lumia 920 でした。2013年、高校生の時だったかと思います。

Nokia というかつて Windows Phone 搭載なスマートフォンを製造していたフィンランドにあるマイナーな会社が販売したいたものです。

たしか、Windows OSで動くソフトウェアを作ってて、 Windows Phone 向けアプリも 似たような技術で開発できるらしいということで買った気がします。
当時、このスマホデバッグ端末として利用し、 Windows Phone 向けのアプリをストアに公開してたりしましたが、現在となっては... なぜか、作ったアプリが海外の(名前は忘れたが)でダウンロードされており、肝心の日本ではほとんどダウンロードされず悲しかった思い出があります。

このスマホは今となってはほとんど使い物にならないスペックではありますが、カメラに関しては非常に良いものだったと認識しています。

japanese.engadget.com

Windows 8.1 がリリースされ、どんどん使いやすくなっていくと思ってました。

Qi に対応していたり値段が3万円前後で手に入ったりと端末的には最高でした。

Windows Phone を搭載した端末が突如出始める

Windows 10 mobile が出たタイミングのあたりだったかと思いますが、日本で Windows 10 mobile を搭載した端末で続けざまに出始めました。

TwitterのTLでは日本でもついに Windows Phone の波がくるのでは!?みたいに盛り上がってた記憶があります。

NuAns NEOMADOSMA などが周りの人の間ではやってた気がします。

ほかにも、 FreetelVaio など国内メーカーからも出ていて当時は期待にあふれてました。

Windows Phone にも対応していた Line

Windows Phone 向けのアプリはほとんど充実していませんでした。

しかし、Lineの Windows Phone 版 はリリースされていました。 高校生の時は Line に入って Windows Phone 版のクライアントを開発する人になりたいと少し思ってた時期もありました。(もし当時開発してた人がいたら話してみたい

機能としては iOS/Android 版に及ぶものではなかった気がしますが、自分の持ってる端末でも line ができたのはよかったです。

ただ、 iOS に移行するときに当時付き合ってた人とのLINEの履歴が全部飛んでしまったので枕を濡らしたのは悲しかったです。

今後どうしよう

Windows 10 Mobile を搭載した端末を今後実用的に使うこと現実的には厳しいしどのように活用していこうか迷ってます。 MP3 プレイヤー的に使おうにも現在は Air Pods Pro さんにハマってしまったため iPhone で音楽聞いてますし...

とはいえ、私がモバイルアプリ開発に興味を持ったきっかけなので今後も大事にとっておこうと考えています。 :D

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

tensorflow に付属しているサンプルを実行しようとすると以下のようなエラーが発生することがあります。 今回は、それを解決したいと思います。

    クラス Zerosで宣言されているTはObjectを拡張します
/Users/kuxu/.ghq/github.com/tensorflow/tensorflow/tensorflow/java/src/main/java/org/tensorflow/op/core/Zeros.java:55: エラー: シンボルを見つけられません
    return new Zeros<T>(Fill.create(childScope, dims, zero));

解決方法

top level に存在する build.gradle の中にある nativeBuildSystem のプロパティをnone に設定する

// set to 'bazel', 'cmake', 'makefile', 'none'
def nativeBuildSystem = 'none'

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

Go 言語を最近は書いています。サーバーサイドエンジニアになるのかもしれません。

そこで、当然のようにCIを設定していくのですが、最近出たばかりの Github Actions を使っていこうと考えています。 (Public repo の場合実質ある程度の規模までは無料で制限なく使えるのでかなりいいぞ

とはいえ、そこまでがっつり設定したわけではなく、 build, test ぐらいを試してみました。

go-lint -> danger の流れの構成についても別記事で投稿しようと考えています。

  go_build:
    name: Build
    runs-on: ubuntu-latest
    steps:

    - name: Set up Go 1.13
      uses: actions/setup-go@v1
      with:
        go-version: 1.13
      id: go

    - name: Check out code into the Go module directory
      uses: actions/checkout@v1

    - name: Get dependencies
      working-directory: server
      run: |
        go get -v -t -d .
        if [ -f Gopkg.toml ]; then
            curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
            dep ensure
        fi

    - name: Build
      run: go build -v .

    - name: Test
      run: go test