Kanazawa.rb#100 100回記念 & 年末 LT 大会 の二次会で話したスライド。
テキストエディタを知る2020-12-19 (土) 13:00 〜kanazawa.rb meetup#100100回記念 & 年末 LT 大会muryoimpl
View Slide
何か新しいことを学びたいなんか飽きちゃって…
でも実用的じゃないと続かない簡単すぎてもなぁ…なんか飽きちゃう…身近だけどほどよく謎で…イメージしやすい何かないか…
テキストエディタをつくってみよう簡単じゃあない!仕事で毎日使うじゃんイメージしやすい…飽きるかもしれんが…
コミットログ書ける程度のものをターゲットにしてみよう普通のコミットログ書くのにそんな高度な編集機能はいらんだろう(マジ?ここをキャンプ地としよう
でもどうやって作るんだ?ナニモワカラナイ
どうやってテキストエディタを作るんだ?● イベントループで待ち受けて、キー入力を受け取ってなにかするくらいはわかるけど…基礎知識が足りない● テキストエディタは C 言語で書かれているものが多いが、私は C 言語に明るくない● 既存のエディタのソースは参考になるんだろうが、私は C 言語に明る(ry● Ruby で書かれた Textbringer や Go で書かれた micro があるが、それぞれ何のためにこの変更をやっているのか?まではコミットログからは詳細にわからない…基礎知識が足りない困った
どうやってテキストエディタを作るんだ?● Textbringer 作者の shugo さんは、toruby07の発表 で参考として、『The Craft of Text Editing』https://www.finseth.com/craft/ を挙げているがいきなりはちょっとむずかしい感じだった● 簡易的なエディタをつくろう、というような連載記事 (2, 3回くらいのもの) は見つかるんだけど、それほど説明が詳しいわけでもないし、それだとすぐに完結してしまう
よさそうなサイトを発見!!
Build Your Own Text Editor● URL: https://viewsourcecode.org/snaptoken/kilo/● 元々 http://antirez.com/news/108 で公開されていたものらしい● kilo という、単一の C 言語のファイル 約1000行 で構成されたテキストエディタを作る過程が、184 step にも渡って解説されている● ソースコード: https://github.com/antirez/kilo● 実は有志によって解説部分が完全ではないものの日本語化されている○ https://github.com/algebroid/learn-kilo● C 言語の文法には説明はないが、利用しようとするものの意味にはちゃんと言及がある
やってみている感想なるほど…
やってみている感想 (まだまだ全然終わらない)● 記憶に残るように、英語で読み、写経して、解説の概要をコミットログに残しながら進めているので時間がかかっている。が、続いている。● 現在 50 step 目あたり。Ctrl-Q で終了できる、エスケープシーケンスを駆使してウインドウサイズを取得する、キー入力でカーソルを上下左右に動かせる、まだ vim でいうノーマルモードのみ、という状態。● エスケープシーケンスってコンソールに色つけるだけじゃないんだぞ!っていうのを思い知らされている。● 遠回りしている感はあるが、それぞれのやっていることの意味は解説されていて理解できるので、やっていることに納得感はある。(重要)
やってみている感想 (まだまだ全然終わらない)● Makefile があるので、保存時にタブをスペースに変換している処理が入っているといきなりつまづきます。● step ごとに make して動かせる、変化を目で確認できるので、なかなか楽しい。● 50 step 目現在で、C 言語初心者がつまづきそうなポインタの使い方はされていないので、C 言語の入門書読んだ程度の人であれば少なくとも 50 step 目までは到達できます。● いつになったら自作テキストエディタをつくるというスタート地点に立てるのか今のところ未定なところが危険。
やってみている感想 (まだまだ全然終わらない)正月休み使っても完走に至らない見込みなので、次回のもくもくもこれをやっている可能性は否定できません…オレはようやくのぼりはじめたばかりだからなこのはてしない kilo の step をよ…未完