okayurisotto.net

私が好きでやったことが他の人のためにもなったらお得かも!

昔使っていたスマホにGiteaを建ててタスク管理に使う

はじめに

昔は使っていたものの買い替えによって使わなくなったスマホ、Google Pixel 3a XL(Bonito)でGiteaを動かし、GiteaのIssue管理機能を使って生活上のタスクを管理してみています。なかなか快適です。

タスク管理にGitea?

私は今、いい感じのタスク管理ツールを必要としています。単純なToDoリストではダメです。どういう経緯でそのタスクが作られるに至った、どういう風に進展していったのか、結局どういう形でそのタスクは片付いたのか、ToDoリストでは情報を残すことができません。何をどうしてどうなった、ということを追跡して記録するためには、もっとしっかりとしたツールが必要でした。

そのようなことを考えたとき、最早それはタスク管理ツールというより問題追跡システムであることに私は気が付きました。OSS開発の場で使われているようなあれです。あのようなツールを使って生活上のタスクを管理するという手法はすでにあるようで、Webを検索してみるといくつか見つけることができました。そういうわけで、私も、すでにある問題追跡システムを自身の生活上のタスクの管理に流用しようと思いました。

どうしてGitea?

問題追跡システムとしてはGitHubのIssue機能が有名で、GitLabやGiteaのような他のGitリポジトリ管理サービスにも搭載されています。今回私がわざわざGiteaを選んだのにはいくつかの理由があります。

まず、GitHubやGitLab(の公式サーバー)では、私は提供されたサービスをありがたく使わせていただく立場です。その都合上、生活上のタスクを管理するというあまり一般的でない使い方をするのは憚られました。プライベートな情報を書き込むことについて不安がないわけでもありませんが、それ以上に、申し訳なさを感じてしまいそうだったのです。申し訳なさで使用をためらうようなことがあってはよくありません。小さなタスクもしっかりと記録に残すことは、タスク管理における基本でしょう。

こういったことを考えると、タスク管理用として提供されるものを使ったり、いっそのことセルフホストしたりするのがいいだろうと考えました。しかし、「タスク管理用として提供される問題追跡システム」について私には心当たりがありません。Gitリポジトリ管理サービスをセルフホストするのがもっとも手っ取り早そうでした。

セルフホストできるGitリポジトリ管理サービスとしては、GitLabとGiteaの2つが特に有名です。この2つのどちらかを使おうと私は考えました。どちらを使うことにするかの判断基準としては大きくわけて次の2点です。

  • サーバーでの使い勝手(導入しやすいか、軽量に動作するか、など)
  • クライアントでの使い勝手(便利に使えるか、軽量に動作するか、など)

セルフホストのためにはそのサービスは軽量に動作する必要がありますし、そもそも便利に使えなかったらサービスとしての意味がありません。

これについていろいろと調べたり、自身のこれまでの経験に照らして考えてみたりした結果、GitLabではなくGiteaを使おうという判断をしました。理由としては次の5つが挙げられます。

  • GitLabは動作に大量のリソースを使うらしい
  • そしてGitLabの豊富な機能はおそらくほとんど使わない
  • 一方のGiteaはとても軽い
  • そしてシングルバイナリで導入も楽
  • そもそもGiteaであっても必要な機能はあると思われる

GitLabは要求するハードウェア性能が高いらしく、実際結構昔のことにはなりますが、自宅サーバーに建ててみたとき、たくさんのメモリを使用されて驚いたことがあります。流石にこれはデメリットとして数えざるを得ません。

また、GitLabの豊富な機能は開発においては便利なものでしょうが、今回の私がやりたいのはタスク管理で、Issueを管理できれば他はなんでもいいのです。いつか開発用にも転用できるというのはメリットではありますが……だからといって、今ここで重たいGitLabを建てようというモチベーションは湧きません。

一方のGiteaはというと、とても軽く動作することで知られています。Go言語によって開発されたGiteaはシングルバイナリで導入も楽でしょう。Issue管理機能についても、必要な機能が搭載されていることは確認済みです。

よって、GitLabではなくGiteaを使って構築してみようと考えました。Giteaで問題があったら、そのときはGitLabを試せばいいだけです。楽な方から試そうというわけです。

なぜスマホで?

当初は自宅サーバーでGiteaを動かす予定でした。安定性も接続性も高く、すでにサーバーとして動いてるため構築も楽でしょう。しかし自宅サーバーではすでにMisskeyが動いているのでした。

分散型SNS実装の一つであるMisskeyは、分散型SNSという都合上、落としてしまうと連合先に迷惑がかかってしまいます。私のサーバーへ送れなかったデータが、連合先のサーバーに溜まり続けてしまうのです。万が一にもMisskeyが落ちてはよくないのです。Giteaを試すためだけに自宅サーバーをガチャガチャと動かすのはやりたくありませんでした。

私は、とりあえずGiteaがどういう使い勝手か調べたいだけです。一度建ててみないとわからないこともたくさんあるでしょう。最初から自宅サーバーのような立派なところに建てる必要は、よく考えてみるとありません。

そこで、手頃な端末として昔使っていたスマホで動かしてみることにしました。買い替えによって役目を失い、LineageOSを入れて遊ぶも飽きて放置されていた可哀想な子です。

ちょうどスマホに役割が欲しいと思っていたところなので、渡りに船といった感じです。将来的にもしGiteaを採用するとなったときには信頼性の観点から自宅サーバーで動かすことにはなるでしょう。ただ、とりあえずはスマホで試そうというわけです。

Linux環境の構築とGiteaの実行

とりあえずスマホにファクトリイメージを焼き直すことで、Google Playなどが使える環境を作り直しました。Giteaを動かす上ではカスロムであっても問題はありませんが、後々不便なことになっても嫌なので、工場出荷状態へ戻しました。

AndroidスマホにはTermuxというアプリがあります。これを使うとAndroid上でLinuxライクなシェルを動かし、aarch64向けのソフトウェアを動かすことができます。Androidも元々はLinuxだから不可能ではないというわけです。

そしてTermuxにはprootというツールもあって、これはrootを取れない端末(大抵の端末)においてchroot相当のことをユーザー空間で実現できるものです。これとproot-distroというツールを使えば、Termuxの(あまり使いやすくない)環境の上に、使い慣れたArch Linuxのようなディストリビューションを簡単に動かすことができます。細かなところでどうしてもAndroid特有の差異や制限はあるらしいですが、私はまだ困らせられていません。

GiteaはArch Linux上でpacmanを使ってインストールしました。バイナリを手動でダウンロードしてきて動かしてもよかったのですが、pacmanでインストールするとGitea用ユーザーが同時に作られたりして便利です。

Giteaへの接続にはTailscaleによって構築したVPNを介して行うこととしました。そのため、スマホのIPアドレスを意識する必要はありません。ありがとう、Tailscale。

というわけで、Androidスマホで動かすTermux上にArch Linuxをインストールし、そこにインストールしたGiteaを動かしてみました。

使い勝手

とてもよく動いてくれています。バッテリー残量の減りが普段より速いのは仕方ないところでしょうが、問題といったらそれだけで、端末が異常に発熱したりということはありません。レスポンスも十分速いです。むしろ古いスマホのある程度消耗したバッテリーでも一晩程度であれば動かし続けられるので、すごいことです。

Giteaはデータベースを必要としますが、今回はSQLiteを選びました。よって、PostgreSQLのようなデータベースサーバーを動かさないといけないということもありません。もしかするとこれもバッテリーの消費を抑えるのに貢献したかもしれません。SQLiteでも問題なく動いてくれています。そもそも、どうせ個人でお試しで使うだけなのですから、PostgreSQLを頑張って建てる必要はないでしょう。

当初の目的だった、タスク管理のためにGiteaの問題追跡システムを使うというのもうまくいっています。やはりIssueとしてやりたいことややらないといけないことを記し、そこへコメントを適宜残していくというやり方は、私が求めるタスク管理手法と合っています。

おわりに

予想以上にうまく動いてくれていて助かっています。早いところ自宅サーバーに移して、本格的に使い始めたいところです。というか、もうすでに結構活用してしまっていて、いまさら移すというのも大変そうです。データの移行ってどうやってやればいいんでしょうか。ディレクトリを丸ごと移してしまえばなんとかなりますかね。……面倒ですしまたあとで考えましょうか。