Chienomi

PureBuilder Simply 公式サイトがオープン / PureBuilder Simply 3.2

開発::util

  • TOP
  • Articles
  • 開発
  • PureBuilder Simply 公式サイトがオープン / PureBuilder Simply 3.2

2023年10月にPureBuilder Simply 3.2がリリースされた。

今回のアップデートは公式サイトを構築し、普及を推し進める上で必要だと考えられる機能を追加した。

今回はpbsimply-initという、初期構築用スクリプトを追加した。 これは、Jykillと真っ向勝負するために、Get startedを簡単にするためだ。 pbsimply-init登場により、PureBuilder Simplyの「始め方」は大きく変わった。

リリース自体はすんなり終わったものの、並行していた公式サイトのオープンには紆余曲折あった。このため、この記事の公開も随分遅くなってしまった。

テンプレートとエンジン

PureBuilder SimplyはデフォルトでPandocを使い、基本的にはPandocありきで設計されている。

だが、pbsimply-initはデフォルトでKramdownを使う。

理由は割と単純なことで、Pandocの導入を簡単にコントロールすることができず、特にWindowsにおいてはかなり複雑な状況が発生するからだ。 つまり、手順に従うだけのドキュメントを作ること自体が難しい。

一方、Rubyのライブラリで済むものであれば、pbsimplyと一緒にgem installで導入すれば良く、話が早い。

できればGFMのほうが一般的で好ましいと思うのだが、PureBuilder Simplyが採用するRubyライブラリのパーサーの中ではKramdownが最もテストされているため、不測の事態を避ける意味でKramdownを採用した。 kramdown-paresr-gfmを導入することでGFMを使わせるという方法もあるのだが、本当に初歩的なレベルではPHP Markdown ExtraベースのKramdownでも問題はないだろうし、コマンドを短くするためにもそれは避けておく。

もっと単純な方法としてKramdownを依存関係に入れることもできるが、現実にはPureBuilder SimplyにとってKramdownはoptionalである。 initのために依存にするのは筋が違う。

ここまで言えば気づいた人もいるだろうが、pbsimply-initによって構築されるサイトは、GitHubにあるサンプルファイルのものとは全く異なる。 設定もKramdownを使うようになっており、必然的にPandoc関連のオプションは外されている。 そして、専用のeRubyテンプレートとCSSファイルを構成する。

このため、一般的なPandocを用いたPureBuilder Simplyサイトを構築するために使うことはできず、pbsimply-initを使って準備したサイトをPandoc型に発展させるのも難しい。 見方を変えれば、pbsimply-initは本当に「入り口を簡単にするものでしかない」のである。

この点は将来的には変更されるかもしれない。現状、Pandoc型のウェブサイトを構築するためにはサンプルディレクトリから2つのディレクトリをマージするのが基本となっているが、これが少し手間なのは確かだ。 ただし、Pandocの構成はPandocを使うほうが簡単なので、コマンドとしてのpandocに依存せざるをえない。 PureBuilder Simplyとしてはpandocのコマンドラインパスを指定できるオプションを追加する予定で、これは.pbsimply.yamlがある状態を前提にしているため、基本的に両立しない。 例えば--pandoc /usr/local/bin/pandocのような指定を可能にすることも考えられるが、Pandocを使う、つまり全部を自分で構築するようなユーザーがそれを求めているかは疑問である。

さて、話を戻してpbsimply-initがKramdown型のウェブサイトを構築するという話だ。

これで構築されるサイトは単にKramdownを使う設定になっているというだけではなく、サンプルサイトがサンプルとして書き換えやすいように構成されるのに対し、スクリプトサイトは最低限の書き換えで実用的に使えることを意識している。 あまり洒落たデザインではないが、Pandocのmarkdown.cssの拡張的な感じを意識した。

このツールは、公式サイトのガイドで非常に簡単なステップを経てPureBuilder Simplyを利用できるということを目標にしている。 想定ユーザーは、コマンドラインを書かれているままであれば打てる(コピペできる)程度のユーザーで、Markdownの利用経験もないような人だ。

このツールとガイドを組み合わせることで、ユーザーはウェブサイトを構築し、更新できるところまでを目指す。 公開という観点では、サーバーを借りてアップロードするという手順が必要になるため、また少し違った話ではある。また、Rubyのインストール手順についてサポートするものではないため、PureBuilder Simplyの利用に関わるすべてをカバーするわけではない。 こうした点は、Jykellを意識している。 Jykellは非常に技術者向きというか、プログラマーがいつもの手順でウェブサイトを構成するようなものになっており、ドキュメントも手取り足取りといった感じにはなっていない。PureBuilder Simplyも、完全なる一般ユーザーの行動様式に合ったものではなく、そうした人をターゲットにするのであればウェブ上で完結したブログサービスを展開するほうが現実的だ。 PureBuilder Simplyとしてはその領域に挑みたいわけではなく、少なくとも自分でWordPressを展開できる環境を用意してWordPressで運営するくらいのユーザーは想定している。なおかつ、最も有名なものを無条件に信奉する人をターゲットにしてはおらず、どちらかといえば(技術力はなくて良いが)ギーク気質な人に刺さるようにしていきたいという考え方だ。

もちろん、PureBuilder Simplyの利用が広がれば、様々な人がハウツー記事を公開したり、あるいはテンプレートを配布したりといった形でコモディティ化も進むだろう。 だが、私が展開する上で最初から広く一般層を狙っていくのではなく、「マインドがちょっとギークな人たちが、気持ちよく楽しく使えるツール」という方向でやっていくのが良いのではないかと考えたのだ。

Jykellはソフトウェアプロジェクトにおけるドキュメンテーションの一環として組み込まれることを念頭に置いている印象を受ける。 ドキュメントを読んだ上での私の感想は「楽しくない」だ。 「好きな人の好きなもの」というよりも、より業務的な要素を意識しているように感じられ、面白みに欠けるのだ。

こうしたことを踏まえた対照として、PureBuilder SimplyはJykellのようにテクニカルな側面を隠さない一方、ギークな気質を持つ一般ユーザーが楽しく、あるいは面白がって使えるようなものにしようという立ち位置を確立したわけだ。

紆余曲折あった公式サイト

PureBuilder Simply 3.1をリリースした段階で公式サイトという発想はあり、そのためにライバルを研究して誕生したのが3.2である。 そして、3.2は冒頭の通り、2023年10月にリリースされた。

公式サイトの開発は順調に進み、10月中にはリリースできそうな運びであった。 ところが、8割方完成したところで、デスクトップの全データ消失が発生する。 鋭意書いていたところであったためにまだリポジトリへの反映(というかinitial commit)を行っておらず、進めていたデータはすべて失った。

公式サイトは見えづらいがかなりカロリーの高い要素があり、相当時間がかかる上に、書き直しとなるとメンタル面でもきつい。 色々と忙しかったこともあり、復旧はなかなか進まなかった。

2024年3月になってようやく一気に進んだ。丸2日をかけて集中的に取り組むことでなんとか取り返すことができた。

レイアウトはFlexで、レイアウト変更のためにビューポートサイズを参照するメディアクエリを使わない形にした。 公式サイトにとって重要なこだわりではないが、ビューポートサイズによって自然に読みやすい形になるのは良いことだろうという判断だ。 この点は現状ではデザインがあまり入っていないために可能なことであったとも言える。

また、翻訳に関しては旧バージョンでは結構入念にやっていたのだが、新しいものはだいぶ雑になり、主にDeepLに頼る形になった。 さすがに出力されたものは読んでいるし、「いやそれは違うでしょ」というものは直しているが。

一方、日本語/英語に切り替えに関しては、旧バージョンよりも洗練されたものとなった。 旧バージョンでは/page.html/ja/page.htmlの構成であったため、ちょっとややこしかったのだ。

公式サイトのコンテンツに何を掲載するかということに関しても失われてしまっているため、もともと目指していたものよりも不完全かもしれない。 だが、とにかく一度書き上げてリリースしなければ、永遠にリリースできない状態だったのだ。

公式サイトのリリースに至った最大の理由は周知である。 PureBuilder Simplyは使いやすく優れたツールであり、これを気に入る人は多いと考えている。だが、実際は決して有名とは言い難い。 もちろん、ツールとして改善すべき点があり、それが理由で選ばれないのであれば機能的発展を考えるべきだが、どう考えても「選ばれない」のではなく「そもそも眼中にない」ほうが問題だ。

PureBuilder SimplyはYouTubeに動画があったりするが、YouTubeが露出させないため、名前を知っている人以外はまずたどり着かない。 そして紹介するときも必然的にリポジトリになるが、リポジトリのREADMEを読んで「使ってみよう」となる人はそんなに多くないだろう。 また、機能がだいぶ増えたためREADMEを読むのはそんなに簡単ではなくなっている。

いわばランディングページが必要なのだ。 そして、「とりあえず使ってみるか」と思ってもらえることが大事。 そうなれば、公式サイトを作るのは必然だし、その内容は

  • なぞるだけで簡単に始められる手順の提示
  • 最初の報酬を得やすいメリットの提示
  • 段階的に進められる情報分け

が必要であると判断した。

より多くの人に使ってもらうには、まず今は普及のために力を尽くす必要があり、そのためにはより一般ユーザーに寄り添っていく必要がある。 PureBuilder Simplyはギーク気質な人に合うソフトウェアだから、通常の意味での「一般ユーザー」ではないが、GitHubでREADMEを読み漁るような人を前提にしていてはいけないのである。

検索機能のリリース

Chienomiの検索機能を刷新でも言及したが、PureBuilder Simply SearchUtilsを改修した。

これは3.0で追加されたHooks機能を使うように変更されたもので、これによってビルドしたデータベースを検索するための様々なサンプルも提供されている。

検索機能の刷新は、v2.1リリースが遅れに遅れた理由でもあり、PureBuilder Simplyにおいて私が「やらなければならない」とずっと感じていたタスクだった。

これをようやくリリースできたことで次のステップに踏み出すことができるようになり、公式サイトの構築に進めたわけだ。

このプラグインは、generate/pbsimply-hooks.rbの内容を.pbsimply-hooks.rbに取り込むことでインデックスを生成できるようになる。 デフォルトではドキュメントビルドルートの.search_index/に出力されるが、.pbsimply.yamlsearchindex_outdirを設定することで設定できる。

おおよそREADMEにある通りで、それ以上の説明が難しい。 内容が「あなたが求めるものをコピーして、あなたの環境に合わせて変更してね」だからだ。

バージョンアップ

3.1

Hooksのタイミングオブジェクトに#cmd#filterを追加。 これで簡単にHooksから外部コマンドを呼べるようになった。

これに伴って、$pbsimply_currentdoc$pbsimply_filenameという環境変数を追加した。

3.2

pbsimply-initを追加。 また、pbsimply-testserverのshebangをenv(1)に変更した。

3.2.1

pandoc_commandという設定が追加され、Windowsのようにpandocコマンドが認識されない環境で、わざわざpandocコマンドを用意する必要がなくなった。

また、デフォルトのDocDB形式であるMarshalにおいて、ファイルオプションにbをつけるようになった。 本当はもっと早くやるべきところだったが、これによりWindowsでもデフォルト設定で使えるようになった。

このバージョンは公式サイトを作る中で気になった点を改修している感じだ。

3.2.2

「ドキュメントルート以下でコマンドを実行する」という概念が分かりづらいという人もいるだろうからということで、ドキュメントソースルート以外でもpbsimplyコマンドが使えるようになった。

ただ、TAB補完などのことを考えると、ドキュメントソースルートで実行するのがおすすめではある。

さらなるアップデートの予定

このデフォルトページのCSSはあまり作り込んでいないので、もっと作り込んだほうが良いかもしれない。 いじるためのベースとしてはあまり書き込んでいないほうが良いとは思うが、それに適していると言えるほどシンプルなものでもないため、ここまできたらちゃんと作り込んだほうがいいだろう。

デザイン自体も、とりあえず作ってみたに過ぎないので、こちらも折を見てバージョンアップしていくだろう。

私としては現状PureBuilder Simplyに対する不満がほとんどないため、機能的なアップデートで予定されているものは特にない。 ただ、外部ツールであるpbsimply-searchに関しては、Hooksを使うように変更する必要があるだろう。

3.0になった段階でPureBuilder Simplyとしての懸念事項や改善したい点をなんとかできたので、PureBuilder Simplyは本格的に普及をはかるフェーズになっている。 ひょっとしたら名前も単純にPureBuilder1にしたほうがいいのかもしれない。

PureBuilder Simply自体の進展としては、まず現在取り組んでいるのが「出力フォーマット」機能。 現状では出力時にJSONにするためにはちょっとした工夫が必要になるが、これを単にJSONで出力する設定で可能にするというものだ。

その他考えているのが、pbsimply-initにテーマ機能を加えるというもの。 現状ではpbsimply-initの中にテンプレートを組み込んで、それをそのまま展開しているが、ものすごく汚い。 組み込みテーマを選択的にインストールできるようにしたい。