日陰のテクノロジ

卒業研究の備忘録と世間一般にタブーとされている技術について

シェルにログインボーナス機能を追加してみた

はじめに

プログラミングの勉強のために毎日シェルにログインしたいモチベーションが続かない

そんな悩みをお持ちではないだろうか?

毎日ログインするぞと決断しては3日で続かなくなる。というのを僕は繰り返していた。

そこで、如何にしてログインをシェルにログインするモチベーションを向上させるかを考えたところ、ソーシャルゲームのようなログインボーナスがあれば毎日ログインする気になるのではないかという結論に至った。

そこで、シェルにログインボーナスを追加するだけの簡易なプログラムをPythonで作ってみた。

github.com

デモ

機能は至ってシンプルで、シェルにログインすると、通算・連続・当日のログイン回数を表示する。日本人は数字が好きなのでこれだけでもモチベーションが向上するだろう。 f:id:yoidea:20170716234754p:plain

また、特定回数ログインするとお祝いのメッセージが表示される。正直なところボーナスといっても何を与えたら良いのかわからず、祝辞を表示するぐらいしか思い浮かばなかった。とは言え、長期間ログインすると豪華なアスキーアートが表示される。 f:id:yoidea:20170716234805p:plain f:id:yoidea:20170716234817p:plain

インストー

動作環境

Python3またはPython2のインストールされたMacLinuxで動作する。.bash_profileが利用できる環境であればWindowsでも動作するだろう。

Pythonのバージョンを確認するには、

$ python -V

として、「Python 3.x.x」と表示されればPython3、「Python 2.x.x」と表示されればPython2であることがわかる。「-bash: python: command not found」と表示された場合はPython自体がインストールされていない。

ダウンロード

まずはGitでリポジトリからダウンロードする。

$ git clone https://github.com/yoidea/login_bonus_for_shell.git
$ cd login_bonus_for_shell

自動インストー

install.shを実行する。

$ sh install.sh

「インストール完了」と表示されれば無事インストール完了。

手動インストー

任意の名前のディレクトリ(例: ~/LBFS)を作成して、そのなかにファイルをコピーする。

$ mkdir ~/LBFS
$ cp ./* ~/LBFS
Python3の場合

.bash_profileに以下を追加してインストール完了

cd ~/LBFS
python logger.py
cd ~/
Python2の場合

.bash_profileに以下を追加してインストール完了

cd ~/LBFS
python logger_for_python2.py
cd ~/

カスタマイズ

祝辞や定型文はjson形式で保存されており、それを変更することでオリジナルのメッセージに変更することができる。 祝辞はバリエーションが貧弱なのでオリジナルメッセージを追加することを推奨する。

祝辞

eventlist.json内にお祝いの条件とメッセージが一覧で保存されている。

{
    "events": [
        {
            "condition": "continuous",
            "value": 3,
            "message": "🎉おめでとうございます🎉\n連続3日目のログインです!"
        },

定型文

message.json内に定型文が保存されている。

{
    "head": "*---*---*---* ログインボーナス *---*---*---*\n継続は力なり!毎日ログインしましょう",
    "total": {
        "info": " +   通算 <",
        "unit": "> 日目"
    },
    "continuous": {
        "info": " +   連続 <",
        "unit": "> 日目"
    },
    "today": {
        "info": " +   本日 <",
        "unit": "> 回目"
    },
    "foot": "*---*---*---*---*---*--*---*---*---*---*---*"
}