TL;DR
- テキストエディタは軽量なvimとモダンなatomの併用がおすすめ
- フォントはMeiryoKeが万人向け妥協点、それ以上を求めるならMacTypeが必要そう
- markdownやAsciiDocを普及させよう
対象読者
Windows上での作業を余儀なくされているプログラマー。とりわけ、2010年以前の資産やら文化が残っている現場の皆様。
Windowsのテキスト軽視文化
旧来、Windows界隈には「テキストファイル」を扱う文化がありませんでした。たとえば…
- 設定はバイナリ (レジストリ)
- ドキュメントもバイナリ (「拡張子
doc
のバイナリファイル」は、MSWordにより強引に普及がなされたもの。元来.doc
はテキストファイルに用いられるものでした)
そしてWindows界隈には「GUI内で黒い窓を開く」文化もありませんでした。つい最近1PowerShellが登場するまで、コマンドプロンプトはこの30年間ほぼ進歩していません。「DOS窓」の俗称がWindows7時代になっても使われ続けていたことからも、どれだけ等閑にされていたかわかろうというものです。
昨今業界御用達のような扱いになっているMacにしても、かつて(OS9まで)のMacintoshではそもそもDOS窓に相当するものすらないという有様でした。ハッカーたちが細々とPC UNIXや中古のSPARCstationで使い続けていたものが、Mac OS X の普及でようやく変な目で見られなくなった感がありますが、Windowsはまだそこに追いついていません2。
プログラマーたるもの「コードを書くためのエディタ」を常用すべし
標準でテキストファイルを扱うために用意された唯一のツールが「メモ帳」というあたりにWindowsのテキスト軽視がいかに徹底していたかがわかるでしょう。00年代からWindowsで仕事をしていた人たちは、いくらなんでもそれでは困るためにサードパーティーのテキストエディタを導入するようになりました。たとえば「秀丸エディタ」。これが有償ソフト不可の現場になると「サクラエディタ」や「TeraPad」になるわけです。
ただし、これらは「仕事のできるビジネスマン向けのメモ帳」として有能であっても、プログラマーがコードを書くためのエディターというより、DOS時代の仕事道具の延長線上の存在として捉えるべきでしょう。
vimを普段使いしよう
「プログラミングのためのエディタ」は、天地開闢3以来、Emacsとviが二大巨頭として君臨していました。最近はviの進化系であるvimがEmacsに対して優勢なようです。AdSenseとかでよく見かける「転職ドラフト」調べでは 人気のテキストエディタNo.1だそうで、しかも若年層からの支持が厚いということからもわかります。
vimの使い方については幾多の優れたvimmer様方の記事にお譲りして、本記事は「Windows内でvimを快適に普段使いする」ことにフォーカスしたいと思います。
vimを育てる
開封の儀
Windowsでは、香り屋版というバイナリが最近10年くらい普及していますのでダウンロード。zip は適当な場所 (C:\Program Files\
でいいと思います) に展開してOK。展開先にある gvim.exe
をダブルクリックで起動しましょう。
きっとのけぞると思います。多くの人はここでやる気をなくします。
調教
くじけずに設定とプラグインをバシバシ叩き込みます。
バックアップやスワップファイルなどのゴミ対策
デフォルトだと作業用ファイルを散らかす悪い癖があるので、道具箱を作ってやります。
# git bashやPoweshellでの例。
mkdir ~/.vim/work
:e ~/_vimrc
で個人用設定ファイルのC:\Users(ユーザー名)_vimrcを編集して、道具は道具箱にしまうようにします。バックアップは人間かファイルシステムのどちらかがやればいいので不要でしょう。新規ファイル_vimrcに以下を記述します。
set nobackup
set directory=~/.vim/work
set undodir=~/.vim/work
C:\Users\(ユーザー名)
をUnixのホームディレクトリと同様に ~
と読み替えてくれます。
ウィンドウサイズの保存
これまたデフォルトだと毎回好き勝手な場所でこじんまりとしたウィンドウで起動するので、しつけましょう。GUI関係の設定ファイルは_gvimrc
です。:e ~/_gvimrc
で新規ファイルを開き、以下を記述します4。
let g:save_window_file = expand('~/.vimwinpos')
augroup SaveWindow
autocmd!
autocmd VimLeavePre * call s:save_window()
function! s:save_window()
let options = [
\ 'set columns=' . &columns,
\ 'set lines=' . &lines,
\ 'winpos ' . getwinposx() . ' ' . getwinposy(),
\ ]
call writefile(options, g:save_window_file)
endfunction
augroup END
if filereadable(g:save_window_file)
execute 'source' g:save_window_file
endif
その他おすすめの_vimrc向け設定
set list
set listchars=tab:>-,trail:-,eol:$
set number
その他おすすめの_gvimrc向け設定
set showtabline=2
プラグイン管理システム
以前からVundleなどのプラグイン管理システムがあったのですが、流行り廃りがあるようで、いま流行っているのはdein。流行ろうが廃れようが「プラグインの指定先はgithubのリポジトリ」という点は変わらないようなので、互換性を気にする必要はあまりなさそうです。
インストールするにはdeinの作業用ディレクトリを準備する必要がありますが、それさえやってやればプラグイン管理は驚くほど楽になります。なお、gitが利用できることが前提となります。
mkdir -p ~/.vim/dein/repos/github.com/Shougo/dein.vim
git clone https://github.com/Shougo/dein.vim.git ~/.vim/dein/repos/github.com/Shougo/dein.vim
さらに_vimrc
を編集。
set runtimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vim
call dein#begin(expand('~/.vim/dein'))
call dein#add('Shougo/dein.vim')
" インストールしたいプラグインを以下に記述する
" call dein#add('developer-a/plugin_you_want_to_install-1')
" ...
" call dein#add('developer-z/plugin_you_want_to_install-xx')
call dein#end()
" install non-installed plugins
if dein#check_install()
call dein#install()
endif
_vimrc
を再読み込みさせます。
:source ~/_vimrc
Vim-airline
これを叩き込めば一気にモダンなエディタに様変わり。
_vimrc
を編集。
" deinの設定外に
set laststatus=2
" deinの設定内に
call dein#add('tpope/vim-fugitive')
call dein#add('vim-airline/vim-airline')
call dein#add('vim-airline/vim-airline-themes')
その他、vim-airline にカーソル下の文字コードを表示するなどの記事を参考にカスタマイズして、快適な環境を構築してください。
カラーテーマ
デフォルトのライトガルグレーみたいな背景色ではいまいちテンションが上がらないので、自分の気に入ったカラースキームを探してみましょう。基本的にdeinでインストールできます。私のお気に入りはVim の割と新しいおすすめ colorscheme たちを紹介するの記事で見つけたnefertitiというものです。
ダウンロード方法は_vimrc
のdein設定部に以下を追記
call dein#add('jeetsukumaran/vim-nefertiti')
設定は、_gvimrc
に以下を追記
colorscheme nefertiti
フォントにこだわる
MSゴシック/MS Pゴシックを撲滅せよ
30年前の遺物、といってもHelveticaなんかは半世紀以上前からある書体ですので、古さのみが問題となるわけではありません。
しかし、このフォントに限って言えば登場当時からそもそも0
(ゼロ)とO
(オー)の見分けもつかず、プログラマーが使うべき代物ではありませんでした。(Windows95のころは、これを避けるために和文セットのないCourier Newなどを我慢して使っていたように記憶しています)
もうひとつの問題は、ビットマップフォントとしての使用を前提としていることです。解像度640*480
のブラウン管モニターに最適化されたようなギザギザフォントを、2010年代に使い続ける理由はありません。
デザイナーもまずこんなフォントを使うことはありません。
最近のWindowsには「メイリオ」と、それを画面表示向けにカスタマイズした「MeiryoUI」というそれなりにまともなフォントがバンドルされています。しかし、これらはプロポーショナルフォントのみの提供となっているため、プログラマーとしては大変困ります。逆に、等幅のLucida ConsoleやConsolasには和文セットがありません。
21世紀のフォントの選択肢
2018年初頭の時点で万人にお薦めできるローリスクな解決策はMeiryoUIに等幅化パッチを当てて、MeiryoKeというフォントを生成して利用することです。
さらに、Mac/Linux界隈5では以前よりコンソール作業に適したフォントとして
が使われており、とくにRictyはMac界隈では高い評価を受けています6。しかし、これらのモダンなフォントはWindowsのレンダリングの貧弱さのためにひどく滲んでしまいます。ですが、これについては、MacTypeというレンダリング改善ソフトで解決することができます。驚くほどフォントの表示が美しくなりますので、一旦は試してみてください。
ただし、MacTypeは環境によっては他ソフトの動作に影響をおよぼす場合があるなどの不具合が報告されており、リスクを伴った利用が前提となります。MacTypeを導入できなかったとしても、先述のMeiryoKeだけでも十分に改善と言えるでしょう。
vimへの適用は、_gvimrc
に
set guifont=MeiryoKe_Console:h12:cSHIFTJIS
のように追記
すればOKです。
ここまで設定してきたサンプルファイルは https://github.com/mskako/vimrcに上げております。
軽量マークアップ言語
テキスト編集環境も快適になると、いろいろなもののテキスト化を企みたくなります。そこのあなた、Excel方眼の設計書、駆逐したいですよね? 私たちのプロジェクトでは、かつてドキュメントを脱Excelしてwiki(Confluence)にもっていき、編集と閲覧、なにより検索の容易さを実現したまではよかったのですが、こんどはバージョン管理の壁にぶつかってしまいました。
テキストファイルで管理したい…でも設計書くらいになると文書構造は必要…だからといって見出しを
#############
## 項目一覧 ##
#############
みたいに装飾するのは避けたい… そんなとき、ふとある日にREADME.mdを書きながら、「これだ」と思ったのでした。
markdown
githubなどでおなじみのREADME.mdは、markdownというフォーマットで書かれています(Qiitaの記事もですね)。簡単な説明文くらいなら十分な表現力があるうえ、いちばん目にする場がgithubのリポジトリというくらいなので、VCSとの相性もバッチリです。
- 単なるテキストファイルに見せかけられるくらい単純なので書きやすい
- テキストファイルなので、gitで差分管理ができる
- ということは、設計書をこれで書けばブランチもプルリクエストもマージも自由自在では?
- うわーゆめがひろがりんぐ
- ということは、設計書をこれで書けばブランチもプルリクエストもマージも自由自在では?
ただし、
- 設計書に採用するには表現力が少々弱すぎる
というわけで、設計書にはもっと表現力のある軽量マークアップ言語が必要と考え、AsciiDocの導入を検討することになりました。
AsciiDoc
ですが、まだ実用に堪えるかの検証中です。テーブルの記述がより強力になった点を最も評価していますが…
atom
markdown/asciidocはvimでもある程度直感的な編集ができますが、リモートにpushする前にプレビューできないのは流石に困ります。
そこで、ローカルでのビューワーがほしいという動機でatomをインストールしてみました。github謹製というだけあって、git操作の容易さはさすがと言った感じです。
ただ、私の感覚としてはvimとIDEの隙間を埋める存在かなと見ています。メモリも結構食いますしね。