Zennを使ってみる

2023/09/19に公開

Zennという選択

プログラミングを独学していて、ブログ記事を書きたいと思いました。その場合、いわゆる「技術ブログ」と呼ばれるものになり、そのためのサービスがいくつかあります。Qiitaというサービスをよく目にしますが、Zennというものも人気があるようです。Qiita同様に使いやすく、Qiitaよりも自由に記事が書けるということから、Zennを使ってみようと思います。つまり、技術ブログをはじめるにあたってZennを使っていきます。

Qiitaについては、2018年11月7日に投稿された「今後必要になるプログラム言語」という記事が批判されていたことが記憶に残っています。その記事はのちに削除されました。Java言語を推奨する趣旨の記事でしたが、具体的な内容が技術的に誤っているとして批判されました。プログラミングを初めてみようと思った年配の人物が投稿したのかもしれませんし、初学者が初学者なりの認識をアウトプットできないようでは、プラットフォームとして使いにくい気がします。私自身も、アウトプットを行えば必ず誤った記述を含むでしょうし、永遠の初心者ですから、そういった緊張感は求めていません。その点でZennのほうがいくらか自由なようです。つまり、Qiitaでは記事が書きづらいです。

ただ、他者にとっての有用性が不足する記事を公開することがどの程度許されているのか、よく知りません。嫌がられるかもしれません。

ブログサービスとしては、Mediumというものは世界的に人気があるようです。海外を含めるとそちらのほうがスタンダードなのだろうかと思い、興味が湧きます。しかし、ソースコードの記述には大きな難点があると聞き、利用候補ではなくなりました。ZennはMarkdown記法を採用していて、便利です。また、ソースコードの記述と数式の記述が可能なようです。つまり、Markdown記法、コードブロック、LaTeXによる数式という3つの条件を課すと、Mediumなどは選択肢から外れます。

Zennに記事を投稿するにはZennのアカウントを作成する必要があり、そのためにはGoogleアカウントとの連携が不可欠なようです。個人的には、メールアドレスだけでアカウントが作れるサービスが好きです。しかし、アカウントを乱造するような攻撃に対するセキュリティをGoogle側に一任してしまう意味で、サービスの設計としては至極合理的でしょう。アカウントの識別子は変更不可能なようです。つまり、Googleアカウントと連携する必要がありますが、やむをえません。

ZennとGitHubとの連携について。GitHubと連携させてZennを使うことに人気があるようです。個人的には必要性を感じていないので、GitHubを利用せずZennを使っていこうと思います。将来的にはやはり連携したほうがいいということになるかもしれません。

Zennの歴史

Zennは、「エンジニアのための情報共有コミュニティ」だということです。エンジニアの定義は知りませんが、実際には、投稿内容に工学的内容が含まれていればよく、もちろん閲覧は自由なようです。

Zennは、2020年9月にリリースされたサービスです。catnoseさんが個人で開発しました。catnoseさんのTwitterアカウントは、https://twitter.com/catnose99 です。2021年にクラスメソッド社に吸収されました。なおQiitaは2011年にリリースされています。

世間の言うところによると、情報のプラットフォームというものは年月によって移り変わっていくようです。Zennを活用する合理性が低下するときがいずれ来るとは想定して記事を書いていくべきでしょう。GitHubと連携して使うことは、投稿内容をバックアップする一つの方法です。

記法について

画像について。GitHubと連携せず画像を投稿する場合、編集画面右側にある画像アイコンのボタンから、ローカルの画像ファイルを選択して、Zennのストレージに直接アップロードされるようです。「よくある質問」によれば、「Zennのサイト上にアップロードされた画像を削除する機能はありません」。特に必要な場合は、明示的に問い合わせる必要があると書かれています。アップロードした画像については、https://storage.googleapis.com/zenn-user-upload/0123456789ab-20231231.jpg といったURLが与えられるようです。

個人的には、Markdown記法には慣れていません。Zennでの書き方については、「ZennのMarkdown記法一覧」という記事にまとめられています。編集画面右側の「?」というボタンからも同じ記事を開けます。参考にしながら少しずつ慣れていこうと思います。

コードブロックを試してみます。Prism.jsというサービスを利用しており、たいていの言語に対応しているようです。

#include <stdio.h>
int main() {
    printf("hello, world\n"); // 標準出力に文字列を出力します。
}

数式表示も試してみます。KaTeXというものを利用しているようです。インラインに、つまり行のなかに a\ne0 などと含められるほか、次のように、ブロックとして独立した行を与えることができます。

e^{i\theta} = \cos\theta + i\sin\theta

「アイキャッチ絵文字」について。記事ごとに絵文字を指定するようです。画像を指定することはできないようです。実用性に欠けるおもちゃのような機能のような気がします。デフォルトでランダムな絵文字が与えられるようです。

目的

現在私は、Three.jsというものを学んでいます。ウェブブラウザ上に3次元グラフィクスを表示する方法の一つです。同時に、TypeScriptというプログラミング言語を学んでいます。それらに関連する記事を投稿するかもしれません。

世間には、チュートリアル記事のようなものがあります。自分なりに手探りで何かを勉強すれば、世間にまだチュートリアル記事が不足している話題も存在するのかもしれません。しかし、読み手のためによくできているチュートリアルを記述するのは、かなり手間です。環境構築など話題の広がりが大きい上、個別具体的な設計判断の正当性を言うことは難しく、多くのことが急速に陳腐化していくためです。そのため、とても丁寧なチュートリアル記事を書く実力は自分にはないと考えています。

一方で、プログラミングの民主化に貢献したいという思いはあります。ソフトウェアについての権力が大きな企業や良い教育に恵まれた人達に独占されていくことは、社会を不健全にすると思います。自分には何の実力も伴っていませんが、貢献することへの興味はあるということです。

文章や説明をアウトプットすることは、高度に知的な作業だと思います。それを人目にさらす緊張感は、自分自身のための訓練として有用です。

Zennでは、有用なものを多く書ければ、マネタイズの道もあるようです。しかし、現在の私には人にとって有用な情報をまとめる能力はないので、考えるだけ無駄です。

自分自身の利益のための自己宣伝という面はあるでしょう。誰かにとって有用な情報をアウトプットできれば、ただちに経済的利益にならないまでも、様々な利益につながる可能性はあるかもしれません。

そのような認識で、とりあえず書きたい話題や書こうと思っている記事というのはないのですが、Zennのアカウントを作成し、記事が投稿できる状況を作ってみました。これが唯一の投稿となって、利用することなく終わるかもしれません。

感想

とりあえず、使いやすいです。仕様がコンパクトで、現代的な必要性を突いていると思います。

Discussion