今までプログラミングで影響を受けた思想とcappuccinoの設計思想
初めまして。こまもかです。初投稿なのと昨日から寝てない状態で記事を書いているので色々と不備があるかもしれません。
今回は僕が現在開発しているヘッドレスCMS、cappuccinoの設計思想と僕のプログラミングに対する哲学とかを絡めて書いていきたいと思います。
技術的な話ではなく、どちらかというと哲学的な話になります。
プログラミングを始めた当時の思想
プログラミングを始めた当時は大規模で多機能、シンプルより複雑さを好んでいました。今とは真逆の考え方です。
この考え方の背景にはIDEなどのソフトウェアがあったのかなぁと思っています。この思想は中学の頃まで続きます。
中学の頃
中学に入ってしばらくした頃、大きな出会いがあります。Visual Sutodio Codeとの出会いです。
デフォルトでLSPクライアント、シンタックスハイライト、広大なエコシステムによる拡張機能が揃った素晴らしいエディタです。
この時に自分で拡張機能を選んで自分好みの環境を作る素晴らしさに気づきました。
高校生になってから
高校生になってからプログラミングにおける最大の出会いはVimだと思っています。
使い始めた頃は特殊な操作形態、デフォルトでプラグインがインストールできない、設定を自分で書かないとかなり使いづらいなどVSCodeとは大きく異なった環境がとてもストレスでした。
それでもどうしてVimを使い続けたのかと言うと、使っているPCにとってVSCodeは荷が重すぎたからです。(当時のスペックは32bit RAM2GB)
また、Electronで作られているため起動速度の点においてかなり不利でした。
人によっては起動時間は大きな問題ではないかもしれません。しかし思いついたことをバッと書いてすぐに作業を終わらせる形で開発をしている僕にとってはかなりの問題でした。
その点においてGUIに依存しないVimの起動速度は僕にとってとても魅力的でした。
また、VSCodeの場合は拡張機能の形式が比較的決まっていると思いますが、Vimの場合はディレクトリ内にpluginsディレクトリと設定の回避処理を最低限書いてしまえば拡張機能が作れてしまいます。
さらにVimは外部コマンドを実行する事が可能なので、理論上全ての言語でを書くことが可能です。(一般的にはライブラリが提供されている言語で書きます)
Dark Power Pluginとの出会い
そうしてVimでそこそこプログラミングが出来るようになってきた頃、Shougoさん(完成度が非常に高いプラグインをたくさん開発されている凄い方です)のVim Plugin denite.vimに出会います。(このプラグインは現在は開発終了していて、後継のddu.vimを使っています。)
これらのDark Power Pluginはどれもユーザーがカスタマイズする前提で設計されています。
これによりユーザーが自分で使いやすいキーバインドや追加したい機能などを書いて拡張する事が容易になります。
denite.vimではデフォルトでUI、フィルターなどが付属していてSourceという拡張プログラムで機能拡張を実現していました。しかしddu.vimではついにデフォルトでフィルターなどのインターフェイスしか提供しなくなりました。始めにこの仕様を知ったときはかなり戸惑いました。
しかしShougoさんの記事を読んで、この設計はかなり合理的だと感じました。cappuccinoの設計でも大きな影響を受けています。
今までの体験とcappuccinoの設計思想
ここからはこれまでに大きな影響を受けた思想や体験などを元にどのようにcappuccinoを設計しているかを書いていきたいと思います。
まずcappuccinoの設計のベースになっているものは以下の通りです。
コンポーネント主義
柔軟なカスタマイズ性
ゼロコンフィグ
コンポーネント主義
1つ目はコンポーネント主義です。
cappuccinoは主に
HTMLレンダリング機能(Jinjaによるテンプレートにも対応)
FastAPIによるヘッドレスCMS機能
FlaskによるWebサーバー機能(検討段階)
以上の機能を提供しますが、これらの機能は全て独立したプログラムにして、ユーザーは好きな機能を使えるようにするつもりです。
例えばHTMLレンダリング機能でレンダリングしたファイルをCMS機能で配信して、独自のUIで表示したり、Next.jsでレンダリングしたファイルをCMS機能で配信したりすることも出来てしまいます。
柔軟なカスタマイズ性
2つ目は柔軟なカスタマイズ性です。これは上で述べたコンポーネント主義に通じるものがあります。
cappuccinoでは扱いやすいTOMLファイルで柔軟なカスタマイズが行えるようにするつもりです。
ゼロコンフィグ
上で述べた柔軟なカスタマイズ性と矛盾していると思われると思いますが、最低限使える設定は予め設定した状態で提供する予定です。
これは僕自身が面倒な設定が苦手なのもあります。(楽しい設定なら時間を溶かしてでもやります)
まとめ
ここまで僕のプログラミング哲学とcappuccinoの設計について書いてきました。
今度の記事では僕がプログラムを考える時の流れとかを書いていけたらなぁと思っています。それではまた別の記事で。