【Neovim】Vim再び。枯れた技術とオープン規格について考える
普段の記事書き、メモ書きはVSCodeを使ってプレーンテキストのマークダウン書式で書き溜めています。が、去年メイン環境をLinuxに本格移行してからは昔Ubuntuをメインにしていた頃に使っていたVim(NeoVim)も再び使うようになりました。今回は、枯れたアプリであるVimをベースに派生したNeovimを使いつつ、枯れた技術、オープン規格について考えた話をつらつらと。
Vim再び。
WindowsやMacでは私はなぜかあまり使う気になれないVimなのですが、Linuxではこれまたなぜか自然に脳がVimを使うモードになってきます。不思議ですね。以前は普通のVimとGvimを使っていましたが、今回の出戻りではNeovimを使っています。(私の中ではNeovimもVimなので、以下、Vim表記はNeovimを指すものとます)
インストールする方法は色々ありますが、私は普通にPop!_OSのPop!_ShopからUbuntu版をインストールして使っています。
さてこのVim。昔は結構使い込んでいましたが、AtomやVSCodeなどのモダンなオープンソースのエディタが出たときに乗り換えてしまい、暫く離れていました。 なので暫く離れている間にコマンドやらカスタマイズ方法やら結構忘れてしまっていました。
・・・ということで、ここんところ、リハビリを兼ねてカスタマイズをしています。とりあえず、画面を2分割して左側にファイラーを表示してファイルブラウズも出来るようにしてみました。↓
Vimのファイラーは色々ありますが、まずは標準のNetrwを使い込んでみようと思い、現在はNetwrにしてみています。まぁ、単純に、導入が簡単なのですよね。設定ファイルにちょこちょこっと数行書くだけですから。
Vimの設定ファイルといえば「.vimrc」ですが、私はNeoVimを使っているので
「~/.config/nvim/init.vim」に記述しています。
中身は以下の通り。今のところ必要最小限な機能のみに絞っているので、まだ27行程度です。それぞれの説明(" 説明で表記)は以下の通り。
1 set number "行番号を表示
2 set guifont=Source\ Han\ Code\ JP\ 13 "フォント設定
3 set guifontwide=Source\ Han\ Code\ JP\ 13 "フォント幅設定
4 " set hlsearch "検索結果ハイライト
5 set smartindent "スマートインデント
6 syntax enable "シンタックスオン
7 set laststatus=2 "ステータス表示
8 set wildmenu "ファイル名補完
9 set lines=70 columns=150 "デフォルトの画面サイズ
10 set ruler "ルーラーを表示
11
12 "// CHANGE <Esc> to jk or jj "<Esc>キーを「jj」と「jk」で代替
13 inoremap jk <Esc>
14 inoremap jj <Esc>
15
16 "// Enable default file browser "ファイルブラウザ有効
17 filetype plugin on
18
19 " Netrw SETTINGS "ファイラー「Netrw」の設定
20
21 let g:netrw_banner = 0 "上部のバナー表示の設定
22 let g:netrw_liststyle = 3 "ツリー表示スタイル設定
23 let g:netrw_browse_split = 4 "ブラウズ分割設定
24 let g:netrw_winsize = 30 "表示幅設定
25 let g:netrw_sizestyle = "H" "データサイズの表示設定
26 let g:netrw_timefmt = "%Y/%m/%d(%a) %H:%M:%S" "ファイル日付表示設定
27 let g:netrw_preview = 1 "プレビュー画面分割設定
今後増えていくと思いますが、とりあえずこれくらい設定しておけば、基本は十分でしょう。
この設定と「ranger」との組み合わせでファイルブラウズしたり検索したりちゃちゃっとVimでテキスト編集したりするのがかなり快適になりました。
枯れたアプリの良さ
Vimのように枯れたアプリやテキストフォーマットのようにプリミティブで枯れたフォーマットの良さというのは、何よりも
「昔のTipsが今も使える」
ということです。
特定アプリの「このメニューを開いて、次に○○を選択し・・・」というような操作の手順のTipsというのはあまり頑張って覚えても意味がないというか、バージョンアップしたりして操作手順が変わったりするとあっという間に「使えない古いテク」になります。そのアプリが開発終了になれば一緒に「はい、終了」です。
今回再びVimを使うようになって、昔書いた自分の設定ファイルを探して引っ張り出してカスタマイズをはじめました。
そして参考にしたサイトはそれこそ10年以上前に書かれたページであったり、最近の海外のYoutubeチャンネルだったりします。参考に出来る時代幅が広いのです。先人たちの過去の資産を活かしつつブラッシュアップ出来る。これから覚えるノウハウの蓄積もきっと数年後も無駄にならない。そして何より、今回のように「忘れても瞬時に取り戻せる」というのも枯れた技術の良さな訳です。
オープン規格・標準フォーマットの良さ
これはLinux(親元であるUNIXはオープンではないのでここではあえて省きます)やオープンソース文化の良さにも通じる部分なのですが・・・特定企業が主導権を開発するプロプライエタリなアプリやフォーマットというのはその企業の戦略などであっさりと開発打ち切りになって消えてしまうことが多々あります。
なので私は、自分の根幹となる大事な原稿や日々のメモデータは全てテキストフォーマット(マークダウン書式)で書いています。大事なデータを特定のプロプライエタリなアプリの特定フォーマットに依存したくないのです。
Vimはもうかなり枯れたアプリです。そして書き出すフォーマットもテキストデータという枯れたフォーマットです。でも、生き残りに強いのはこういう枯れたフォーマットだと私は考えています。あとでどうにでもモダンなフォーマットに変換出来ますからね。汎用性が高いのです。
3Dデータに関しても、ZBrushだけでは不満でBlenderを使い始めたのもそういう理由もちょっとあったりします。ZBrushのデータも、ZTLだけでなくOBJでも保存しています。ある日突然Pixologicが倒産してZBrushが消えてしまっても、データの本質資産を行き残すためです。
私はこのOBJフォーマットが好きなのですが、その一番の理由は中身が汎用性のあるオープンな標準規格のテキストデータだからです。ZBrushでもBlenderでも、どのアプリでも開けます。テキストデータなのでVimでも開けて、中身はこのような膨大な座標データになっています。↓
やる人はほとんどいないと思いますが、やろうと思えばテキストエディタでも編集出来るデータです。整然として私なんかは美しさすら感じます。
同じ形状の3DモデルのZTLデータを、同じようにVimで開いたのがこちらです。↓
ZBrushの独自規格のプロプライエタリなフォーマットなので、とても人間が読めるデータではありません。
Blenderの「.blend」ファイルも「.ZTL」と同じように独自フォーマットです。ただ、Blenderの場合オープンソースのアプリであることに大きな違いがあります。これは声を大にして言いたいのですが、
Blenderの良さは無料というよりもオープンソースであること
なのです。オープンソースのアプリであればメーカーの戦略や方向転換などで開発を打ち切られて消えてしまったりしません。仮に開発が終了してもフォークしてそれをベースにした派生版が生まれたりして生き延びる可能性も高いです。実際、もともとBlenerはプロプライエタリなアプリからオープンソースになっり色々紆余曲折あったことで生き延び、2.8になってまるで別物と言って良い劇的な進化を果たしました。急速な進化とクロスプラットフォームという類い稀な強みもあります。アプリを売ることを収益とするのではなく、ソースを公開してサービスとして提供することで資金的支援を得るというビジネスモデルを確立し成功させている良い例でしょう。古いUIを引きずって突貫工事を繰り返しているように思えるZBrushもBlenderのようになれば良いのに、などと思うのは私だけでしょうか。
話が脱線したので本題を今回のこの記事の主役であるNeovimに戻しまして・・・元々Vimの開発ベースがオリジナル開発者一人に依存していたことを解消し、新しい時代に合わせた開発を勧めていくという思想で派生したものです。これこそオープンソースの良さなわけです。
脱プロプライエタリ依存計画進行中
このように、プロプライエタリなアプリや規格はメーカーの都合で打ち切られたら終わりです。私自身、そういうことは過去のMacやWindowsのプロプライエタリアプリで散々経験してきました。親方Apple純正であっても同じで、何度も切られました。Appleよりも後方互換を大事にするマイクロソフトの純正アプリやWindows用アプリやフォーマットですら、バージョンアップで昔のファイルが読めないケースもあったりしました。なので、そういうのはもうゴメンです。
近年、iOSやmacOSの「Photos」も「Voiceメモ」も独自のデータ管理方式を強めているので、そろそろ画像データも音声データも中身を標準フォーマットで書き出してLinuxに管理を移行しようと考えています。
Macは昔、愛用していた画像管理&レタッチアプリの「Aperture」開発打ち切り問題がありました。正直、「こんな素晴らしい純正アプリを打ち切るなんてマジかよ」と思いました。
撮りためたデジカメ画像、RAW画像などあらゆる画像を全て放り込んで一括管理していたので打ち切りは大きいかったのです。
なので代替としてリリースされた「Photos」はApertureと比べてあまりのショボさに最初の頃は全く気に入りませんでした。正直、「え・・・これが代替?どうしたApple」と思いました。今でも当時のApertureの域には及んでいないと思っています。(金返せとは言いませんが、実現していた環境は返して欲しい)
ただまぁ、アップデートされて管理がしやすく簡単なレタッチまで出来るようになってからは徐々に好きになり、(これを信者マジックというのかもしれませんが)日々愛用していました。
しかし最近は動作が重すぎたり、やたらアップデートが発生したりして快適じゃなくなって来て、「これでないと」という特別なメリットが見いだせなくなってきました。長年愛用して来ましたが、もうあまり依存する必要も理由もないかなと考え始めています。
Apertureに限った話ではなく、思い出すのも面倒なくらい他にも開発打ち切りでデータ移行が大変だったアプリは色々とあります。
たしかにApple製品はハードもソフトも洗練されてて、かっこよくてオシャレです。気に入っているのも沢山あって、今でも使わない日はありません。100%毎日使っています。ですが、度々書いていますが、もう信用はしていません。個人的には、Apple製品の中で代えがが効かないワンアンドオンリーな価値を持っていると感じるのは今はiPad Proだけです。GarageBandが唯一Macから離れられない理由なのですが、iPad ProのGarageBandがあるので絶対というほどでもありません。iPhoneはかなり気に入っていますが、Androidもかなり進化してるのでもうiPhoneでないと・・・という理由もなくなって来ました。というわけで、時間がかかりましたがいつでも脱Mac、脱iPhone出来る、というところまでようやく来ました。
これらのApple製品で使ったり作っているデータなどもGoogleドライブやDropboxに保存しておいてあとで母艦に汎用データで保存したりしています。
また最近、いろいろと思うことや心境の変化もあり、長く使っていたマイクロソフトのOffice365も解約しました。それも上記のテキストデータと同じ理由です。Microsoft onlineになってクラウド版は無料になりましたし、OfficeデータはGoogleアプリやLibreOfficeで十分、という考えに変わりました。ただ、Googleもけっこうサービスを打ち切ることがあるので100%信用はしていません。なのでデータをすべてGoogleに預けるのは落ち着かないのでこれも標準フォーマットでローカル保存です。
オープンフォーマットを標準フォーマットとして採用しているLibreOfficeはなかなか良い代替Officeアプリです。
MacやWindowsをメインで使っていてもデータをオープン規格や枯れたフォーマットで保存したり、オープンソースのLinuxをデータサーバー管理用マシンとして導入するメリットはそういうところにもあると思ってます。間接的ながら世界中の殆どの人がLinuxで動いているWebを日々使っているわけですからね。データ管理のノウハウや蓄積、実績、信頼性は一番高い証拠でもあると思います。
まとめ
枯れた技術であるVimをカスタマイズしながら、テキストデータで物書きをする。昔覚えた技術がしっかりと使えるプリミティブな機能とオープン規格・標準フォーマットの強さを改めて感じつつ、いち企業が全てを管理して仕切るプロプライエタリな技術やフォーマットへの依存について私が常々感じていることをつらつらと書いてみました。
ではまた。
参考資料
この記事が気に入ったらサポートをしてみませんか?