alias emacs='vim'

雑魚Vimmerが強者になるまで(なれるとは言ってない)

【2日目・3日目】ペパボ寺子屋で決まったこと

ペパボ寺子屋での進捗を報告します。

まず1つ目は最低限の要件。

  • UIの表示(TUI)
  • ファイル作成
  • ファイル読み込み
  • ファイル保存(コマンドモード必須)
  • 終了(コマンドモード必須)
  • モード切り替え
    • ノーマル
    • インサート(ノーマルモード必須)
    • コマンド(ノーマルモード必須)
  • 文字入力(インサートモード必須)

まあ見た感じUI表示かノーマルモード実装からって感じですかね。

さて、ここで割と大きい課題にぶち当たりました…

ElixirでTUIソフトを作る為のライブラリを色々調べてたんですが、殆ど無いんですよね… 唯一見つけたライブラリもあまり有名では無く、情報も殆ど無いと言っても良いようなものでした。

いつもお世話になっているVimのコミュニティでも色々質問してみたところ、

検証した感じ、elixirは起動が遅い、リソース食う、処理速度はそこそこ速い、クライアントにはあんま向いてない

という意見がありました。 プロセスを大量に作ったり、耐障害性が高いものを作るために最適化された言語のようなので、少なくとも今回のテキストエディタには向いてないのかなー、という結論に… 個人的に凄く魅力のある興味深い技術だとは思ったので、ゆくゆくは学びたい言語ですが、今回は採用を見送らせて頂くことにしました(お祈りメール)。

で、どうなったかと言うと、

  • Elixir Haskellを用いたVimライクなTUIテキストエディタを作り、バージョン1.0.0として公開する
  • 但し変数の再代入は不可 そもそもHaskellでは再代入が出来ないためこの条項は外す
  • 場合によっては他の言語を一部使用
  • なるべく拡張性を持たせたい
  • その他仕様は追って決める

はい、こういう事になりました。

ちなみにHaskellだとTUIライブラリとしてHSCursesvtyBrick等のライブラリがあるのでTUI問題は解決ですね。 最悪の場合、CやC++を呼び出すことも出来ますし、基本的にライブラリ周りで困る事は無さそうです。

若干遠回りをした気もしますが、技術選定をするという良い経験にはなったかと思います。 調べていく過程で色々教えて下さった方々、本当にありがとうございました。

まずはHaskellでのファイル入出力あたりからやって行こうかと思います。

では、また明日(多分)