elnath-geek’s diary

情報系の大学院生を卒業して社会人です。気が向いたことを対外発信する場所として使っていきます。

PC利用時間管理のススメ - ManicTime の使い方とオンプレサーバーの建て方 -

時間管理はいいぞ!!!

みなさん、自分がPCをいじってる時間は把握してますか?

「今日は8時間もコード書いた自分偉い!」とか、「気づいたら半日ゲームしてたわ~」とか、世の中にはいろんな人がいるとは思いますが、自分は「あ、やべ今日はYoutube見すぎだ、もっと研究しよ()」ってなるためにも、何を何時間やったか把握したいという願望を持っています。

時間を管理するメリットはほかにもあって、例えば業務日報の作成などは、あとからPCのアプリ使用状況を見れば、いつ何時間作業したのか大体振り返ることが出来ますし、過去の作業にかかった時間が参照できると、仕事の見積もり精度が上がるなどいいことがたくさんあると考えています。

もちろんそんな需要はたくさんあって、「時間管理アプリ」などで検索すればたくさんのツールが出てきます。実際に私は過去に Toggl Track を利用していましたが、

  • タイマーを開始するのを忘れる
  • 止めるのを忘れる
  • 名前(タグ)を設定してる作業しか追跡しないがち
  • 名前を付けるほどではない作業は追跡されない(するモチベがなく、タイマーが起動されるに至らない)(要は一つ上と同義)

などの使いづらさを感じていました。そこで自分が半年以上使っているのが、このManicTime です!

ManicTimeの概要

ManicTimeはシステムに常駐して、PCの利用状況を自動でトラッキング・集計してくれるソフトです。

と言ってもわかりづらいと思うので、システムの出力例と自分の使い方を軽く説明したいと思います。

ManicTimeの使用例1

上図は自分のトラック結果の一例で、この図を見てどんなことを考えられるかをコメントで残しています。

アプリは自動で色分けされており、この日は青が多くて、VsCodeで開発してた日だなーと大体わかります。

ManicTimeの使用例1 詳細

当然、表示エリアも変更できるので、コードを書いてはStackoverflowを見てデバッグして、localhostもちょくちょく開いてるな〜とか、後から確認できたり。

ManicTimeの使用例2

他の日だと、この日は9時半ごろにPCをつけて、午前中はコーディング
昼過ぎはYouTube見てて、14時からは、slack(水色)で話してて、その後は調べ物(ピンク)してる。夜は22時前からゲームの攻略情報調べてるなー(うすい水色)

などといろんなことを振り返って知ることができます!

他にも、その日にアクセスしたURLが一括で遡れるようなUIや、欲しいと思える統計情報などが多数提供されており、見てるだけでも楽しいです。

 

ManicTimeを実際に使う

ということで、みなさんManicTimeを使いたくなったと思いますので、使い方について説明していきたいと思います。

導入概要

ManicTimeの個人での使い方(プラン)は何パターンか考えられて、

  1. Windows / linux が1台だけの人:普通にアプリをインストールして常駐させる。
  2. Macの人:月$7課金してクラウドサーバーか、サーバーソフトをバックで動かして、ネイティブでトラッカー、Webで結果を見る。
  3. 複数PCの追跡結果をまとめて見たい人:自分でサーバーを立てるか、クラウドサーバーに課金し、Webでまとめて結果を見る。
    (2023/04/04 追記:個人でサーバーを立てても、windows/mac からサーバーにデータを送るのにはライセンスが必要なようです!)

などがあると思います。企業ユースケースは今回取り扱いません。

自分は、デスクトップPC(Windwos)とM1 Macの結果をまとめて見たかったので、サーバー用のラズパイ4B含めVPNを構築し、ラズパイ上のManicTime Server にデータを送りWebで結果を確認するという運用をしております。

詳細についてはあとで説明します。

パターン1

WindowsもしくはLinux 1台の人は、特に難しいことはないです。公式HPから自分のOSにあったソフトをダウンロードして、ダブルクリックとかをしてれば動きます。

強いていうのであれば、「OS起動時にアプリを起動する」というようなチェックを入れておくと少しだけ幸せになれると思います。

パターン2

Macでは、Windows/Linuxとは違って、ネイティブで統計結果まで表示するようなアプリではなく、PCの操作情報をサーバーに送信するトラッカーのみが提供されています。

https://www.manictime.com/Mac

そのため、課金してクラウド個人サーバーを契約するか($7-9/month)、自分でサーバーを立てることになります。

自分はクラウドサーバーの契約をしていないので詳細については不明ですが、データ送信・クライアントの接続方法・管理ページなどは、オンプレサーバーもクラウドサーバーもあまり変わらないと思います。

サーバーの立て方などについては次の章でまとめて解説します。

パターン3

複数PCの情報をまとめて管理するにはサーバーが必要となります。統計情報はそれぞれのPCで開いて見ればいいじゃん!という人はそうしてくださいませ。

自分はWindowsMacの統計を一つのページで管理したかった&そもそもMac用にサーバーが必要だったなどの理由と、手元に余ってたラズパイからオンプレサーバーを建てることにしました。

詳細はパターン2と同様に次の章です。

(オンプレ)サーバーの建て方から動かすまで

(この記事を書いた理由の半分は、サーバーを建てるのに、日本語情報が少なくて共有するため…!)

と言っても、公式ドキュメントが存在するので、それにしっかり従えば問題なくインストールできるとは思います。

Macの人向けに軽くお気持ち表明した(実際に動かしていません)あとに、自分がラズパイに導入しようとした際につまづいた点の共有含め、導入方法を書きたいと思います。

役立ち情報たち

サーバーのダウンロードページはこちら:Download Server - ManicTime
公式ドキュメントはこちら:Setup

Windows編?

Windows向け日本語説明書(非公式)も存在します:https://support.lifeboat.jp/docs/mts/MTS_guide.pdf

Mac

まず、Mac単体でサーバーとトラッカーを動かそうとするのは結構大変そうです。

ManicTime Mac

ここに書いてあるように、Macではトラッカーのみが提供されており、サーバーは別で用意する必要があります。

クラウドサーバーを契約する人は頑張ってください。ラズパイ編の後半ぐらいから参考になる情報があるかもしれません。

Mac 自体にサーバーを建てるには Installation が参考になるかもしれません。

と言っても、

install your own ManicTime Server. On Mac you can use Docker version.

と書かれてるだけで、要はmac上にDockerを動かして、そこでLinux用のManicTime Serverを建てろということらしいです。

追跡データはストレージに貯められ、サーバーと接続できたタイミングで同期されるので、厳密には常にサーバーを動かさなくても良いのですが、運用としては微妙になると思っています。

なので、MacユーザがManicTimeを快適に使うには、クラウドサーバーに課金するか、Global IP を持った仮想マシンを借りるか、自分みたいにVPN&ラズパイとかになると思います。

ラズパイ編

まず、使用ハードについて、

結論から言うと、Raspberry Pi Zero, Zero 2はどちらも起動できませんでした。

というのも、サーバーソフトのtarファイルに64という記載があるので、32bit CPUのZeroでは当然起動しません。

Zero2でも起動を試しましたが、 ソフトのダウンロード・解凍・実行までできましたが、実行するとkernel panicが出て修復できず、諦めました。

これに関してはハードの性能不足だと考えており、Before installing にあるように、サーバーの性能要件として、メモリがGB単位で要求されており、メモリが512MB の Zero 2 には荷が重かった、という理解をしています。

と言うことで、満を持してRaspberry Pi 4 Model B を使用することにしました(以下ラズパイ4B)。なのでこれ以降は、ラズパイ4Bにsshできる状況(GUIなし)での構築のための手順を説明します(macで構築する際に気をつけるべきことも、少しは補足するつもりですが)。

また、ラズパイ上のサーバーにデータを送る必要があるので、VPNの使用も必要になってくると思います。

自分は ZeroTier – Global Area Networking というVPNを使っていますが、Tailscale · Best VPN Service for Secure Networks を使ってる人も周りにいます。

なんにせよ、ラズパイのipアドレスがわかっていれば大丈夫です(VPNを使っていれば、192.168.xxx.xxxとかだと思われる)。

公式ドキュメントに従って、最初はサーバーソフトをダウンロードします。

ラズパイはLinux かつ arm  なので、この画像の↓左下のmanicTime Server ARM を選びましょう。

ホストPCにダウンロードしてscpで飛ばすもよし、右クリックでリンクをコピーして、ラズパイ側で、 wget {リンク} としても大丈夫です。

ManicTime Server Downloadページ

 

ダウンロードできたら、コードを解凍します

tar -zxvf {ダウンロードしてきたファイル}

で解凍してください。

参考までに自分のコードは以下になります。導入時期によって、バージョンとかが変わると思います。

tar -zxvf manictimeserver-portable-5.2.8.0-linux-arm64.tar.gz

解凍できたら、

cd manictimeserver

をして、

./Setup

すれば初期設定ができて万事解決!と言いたいのですが、./Setup ではブラウザでの操作が必要であり、ssh onlyでGUIがない環境で設定していると、

xdg-open: no method available for opening

というエラーが発生します。これはGUIがない時に表示されるものです。

Linuxのコマンドライン(CUI)で使えるテキストベースWebブラウザを使い比べてみた | 俺的備忘録 〜なんかいろいろ〜

このサイトに紹介されるように、Lynxなどを入れることでコマンドラインでテキストベースのWebブラウザを使用することはできるのですが、

ManicTime Server ./Setup with Lynx

このようなページが表示されるだけで、これ以上進むことができませんでした。

公式ドキュメントでは ./Setup の下に Databse と Administrators という記載があり、これが設定できると思われますが、自分はこのページへ行き着くことができなかったので違う方法で設定を行います。

と言っても Database については、個人利用であれば default の SQLite で十分であり設定は必要ありません。

一方で、Administrators の方は注意が必要で、管理用ページにログインし、ユーザの管理などをするのに、adminユーザが必要です。

なので、Setting administrators にあるように、

./ManicTimeServer addadmin -u user@email.com -p somePassword

上記のコマンドでadminユーザを作成してください。

メアド、パスワードは各自で適当に設定してください。

adminユーザの作成ができたら、改めて、

./ManicTimeServer

でサーバーを起動して、表示されたURLにアクセスすると、ログインページ(下図)が見えると思います。

VPNを構築していれば、この以降の操作はホストPCで可能です。

ただ、現状はラズパイへのsshセッションを切断すると、./ManicTimseServer が終了してしまうので、なんかしらの方法で永続化する必要があります(後で説明します)。

ManicTime 管理ページのログイン画面

ログイン画面では、先ほど設定したadminユーザの情報を入力してください。

ログイン後は、左上にある License の設定が必要です(多分)。そして、個人利用ならTrial Licence で十分だと思われます(多分)。

 

ManicTime 管理ページ

いろんな統計情報が上図左側に示した青背景のページ、右上の歯車マーク→Administration を押すことで右の灰色のページに移動でき、灰色サイドバーの中央あたり、Usersからユーザの追加ができます。その他の設定はお好みでお願いします。

Usersでは、New userからユーザの追加が可能です。

ユーザを追加する際、メアドの重複はできず、Nameは管理画面でしか用いられない表記名となります。

ユーザを追加したら、Activaton linkが生成されるので、そのリンクに飛んでパスワードを設定することで、ユーザ登録が完了します。

企業向けの運用としては、ここで利用者のメールを登録しますが、個人利用では、適当なメアドで運用しても問題はないと思われます。

ユーザ登録が終了したら、いよいよトラッカーの登録です。

Windowsであればネイティブアプリから、Macであればメニューバーにいるアプリから、オンプレミスサーバーに接続というものを選択します。

ManicTime Server users

ManicTime Mac

これらのサイトを参考にするといいと思います。

Windowsはアプリのオレンジのアップグレードと書かれた場所を押すと、オンプレミスサーバーに接続というボタンがあるはずです。

その際に、サーバーに接続する際に求められる Username というのが、先ほど管理画面で登録した Name ではなく、メアドであることに注意してください。

Windowsのネイティブアプリでは、接続が完了するとアプリ左下にサーバー情報や同期状況について確認できます。

ここまで設定できたら、あとは管理画面に進み、adminアカウントでログインし、

サイドバーの TEAM -> Timelines 右上の青いボタンから、Show: All timelinesなどを設定すれば、いろんな情報が見えると思います。

正直自分もこの管理画面にはまだ慣れていないので、各自でいろいろ探索してみてください!

ManicTimeServerの永続化について

サーバーがちゃんと動いて、Webからデータも見れた!となっていると思いますが、

./ManicTimeServerがラズパイへのsshセッション上で動いているので、sshを切断するとサーバーが止まります。つまりはホストPCを落としたらサーバーも止まるとかそういう状況です。そのために、ターミナルセッションの永続化(というか多重化)を行う必要があります。

「terminal ssh コマンド永続化」などで検索すればいろいろ出てきますが、自分は

tmux - ArchWiki というものを使っています。

tmuxはターミナルマルチプレクサ(Terminal Multiplexer) の略で、一つのターミナルで複数のセッションを持つことができるソフトです(他にもたくさん機能があるので、ぜひ使ってみてください!)。

使い方だけ教えろ!って人は以下のコマンドを入力してください

sudo apt install tmux 

tmux new -s manictime

./ManicTimeServer

Ctr + b, d

インストールして、tmuxの新規セッションを作って、(画面が変わって、)サーバーを起動して、起動が確認できたらCtr+b, d で tmux のセッションを Detachしています。

使いこなしたいよ!って人は tmux cheatsheet でググるなり、自分で勉強するかしてみてください。

 

最後に

長くなりましたが、ここまでの手順をしっかり追ってくれれば、あなたも快適なManicTime 生活を送れると思います!

何かわからないことがあれば、気軽にコメント、ツイッターDM等なんでも送ってきてください。

ここまで読んでくださった方はありがとうございました!
スターやコメントお待ちしてます!