会社や勉強でメモや活動のログをとる

本記事では，僕が普段メモや日々の活動のログをとるために使っているツールについて紹介します．
紹介するツール自体は特別新しい物ではありませんが，ツール選びの選択肢の一つになればと思います．
※いわゆるメモ術のようなノウハウの紹介ではないです．
本筋の内容を先に書いて，補足的な内容を後ろに書いているので，全部を読もうとすると長いかもしれません:bow:

# TL;DR
- EmacsでOrg-modeを使います
- 何度も見るようなメモは別ファイルで管理するといいかもしれません

# 使用例
見るのが一番だと思うので，使用例です．
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/24682aa3-6e11-c71e-425e-f67a97634ed2.gif" width=50%>

気になった方は読み進めていただければと思います．

# 何を使っているのか
EmacsでOrg-modeというものを使って実現しています．
EmacsもOrg-modeも非常に巨大なプロジェクトであり，全ては到底説明しきれません．
なので，以下ではそれぞれのツールをとてもザックリと紹介します．
## Emacsとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/4d0d1f29-3d54-13cf-cc7a-cb9b1d7e6241.png)
[GNU Emacs公式](https://www.gnu.org/software/emacs/)
とても有名なテキストエディタです．
何を説明すればいいのか困ってしまうほどたくさんのことができます．
気になった方は是非調べてみてください．

## Org-modeとは🦄
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/b0bf938c-b679-1930-1082-380b34844b68.png)
[Org mode for Emacs公式](https://www.orgmode.org/ja/index.html)

Emacsの拡張機能の一つです．
文章を書くためにあると嬉しい機能がとてもたくさん用意されています．
Emacs同様，何を説明すればいいのか困ってしまうほどたくさんの機能があるので，気になった方は是非調べてみてください．

# 実現方法
環境
MacBook Pro 2018
macOS Catalina 10.15.4
GNU Emacs 27.1
Org-mode 9.3.7

以下，macにEmacsとOrg-modeが入っており．Emacsのコマンド表記が読めるという前提で先にコマンドなどの説明をします．

## Org-modeの準備
### 1. Orgファイルの作成
```
$ touch log.org
```
Org-modeを使うためには，.orgという拡張子のファイルが必要です．ファイル名は自由です

### 2. EmacsでOrgファイルを開く
```
$ emacs log.org
```
Org-modeがEmacsのモードの一つといっても，これといって特別な画面が表示されるわけではありません．
Emacsでファイルを編集する普段の画面が表示されるだけです．
Org-mode自体の準備はこれでもう終わりです．

## メモをとる
上の使用例で紹介したメモを実現するための方法について説明します．

### 1. 日付を記入する
`M-RET`と入力すると，`*`が記入されると思います．直接`*`を入力しても問題ないです(この場合は後ろに半角スペースが一つ必要です)．
続いて，`C-c .`と入力します．すると画面下側にカレンダーが表示されます．
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/a1f99ff8-5a9c-a771-e99b-4105047d0b63.png" width=50%>
そのまま`RET`を押せば今日の日付が記入されます．カレンダー上でカーソルを移動させれば他の日付も記入可能です．

### 2. 何か書いてみる&日付で折りたたむ
1.で入力した日付の次の行からメモを書いていきましょう．
カーソルを日付の位置まで移動させ，`tab`を入力すると，次の同じインデントの`*`までの間に書かれているテキストが折り畳まれます．
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/3f2e716e-8e1a-34ac-64ad-68f5a99c4a3c.gif" width=50%>

# 利点&欠点
普段この方法を使ってメモやログをとっていて，良いと感じる点と悪いと感じる点について紹介します．
## 利点
- ターミナル上で動く  
僕はiTerm2を使っており，HotKey設定で表示/非表示ができるようにしているので，いつでもすぐにメモが取れてとても助かってます．
- Emacsが使える  
僕はEmacsに詳しいわけではないですが，配色やキーバインドを好き放題できるので楽しいです．  

## 欠点
- Emacsの操作に慣れるまでが長い  
これに尽きます．僕は未だに変なコマンドを押してしまうことがあります．  
非常に稀ですが，変なコマンドを間違えて入力して過去のログを全部上書きして消してしまったことがこの3年くらいの間に3,4回あります:innocent:  
<b>何度も見返すようなメモの内容は，別のテキストファイルなどに保存して管理すると安全でしょう．</b>  
Emacsの操作は慣れるまで大変かもしれませんが，いろいろな場面で非常に役に立つと思うので，メモ書きを通して練習するのもありだと思います．


# まとめ
本筋を紹介し終えました．
Org-modeを使っているのに日付でパカパカ開いたり閉じたりするだけというのも勿体無い使い方ですが，僕はこの程度の機能で十分です．
会社や勉強でメモや活動のログをとる方法を探している方の参考になれば幸いです．


# 補足:Emacsに関する情報
話の本筋では，Emacsに関する説明を全て省きました．
本記事で紹介した方法を実現するための必要最低限のEmacs周りの情報を補足します．
## Emacsの存在確認
```
$ emacs -version
```
emacsが入っていればバージョンが確認できます．
入っていなければHomebrewなどを使ってインストールしてみてください．
ちなみにですが，ターミナルで`emacs`と入力してEmacsがターミナルとは別に起動してしまう場合，`emacs -nw`と入力するとターミナル側でEmacsが起動します(`-nw`を毎回打つのが面倒な場合はエイリアスを設定するといいかもしれません)．

## Emacsのコマンド
Emacsのコマンドはたくさんあるので，コマンドの説明というより，コマンドの説明の読み方を紹介します．
`C-x C-s`という表記は`Ctrl+x`，`Ctrl+s`という意味です．
`C-c .`という表記は`Ctrl+c`, `.`という意味です．
`M-x`という表記は`Alt(もしくはOption)+x`という意味です．

## 現在時刻を入力してくれるキーバインド
僕はメモを書くときに時間も記入しています．いつからその作業をしていたのかを確認するのに役に立ってます．
ですが，手入力で時刻を入力するのは面倒です．
Emacsは独自にキーバインドを設定できるので，これを使います．

```emacs-lisp:init.el
(defun get-current-time (form) (insert (format-time-string form)))  
(defun set-current-time () (interactive) (get-current-time "%H:%M"))
(global-set-key "\C-cn" 'set-current-time)
```
Emacsの設定ファイルに以上の3行を追加することで，`C-c n`と入力すると現在時刻を入力することができます．
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647033/246b010f-2f93-8037-6716-cb227bb5398b.gif" width=50%>

# さいごに
今回がQiita初投稿になります:baby:
今年の4月から社会人になったのですが，僕のような生まれたてのエンジニアが発見した技術的な内容は既にQiitaに記事として存在することが多々あるので，題材を選ぶのにも苦労しました．
僕のような新人エンジニアはメモをとる機会がとても多いと思うので，同じような方々に情報共有できればと思いこの内容にしました．

それにしても，人に見てもらう文章を書くのは大変ですね．
断続的ではありますが，この程度の文章を書くのに合計15時間近くかかってしまいました笑