Obsidian から Zenn へ & Saboten 開発日記開始
Obsidian から Zenn へ
すでに Git で管理してきた Obsidian Vault ディレクトリのなかに、Zenn 用のサブディレクトリを作成して、かつ Git Submodule として設定することを試みた。基本的には矢作くんの書いてくれたガイドを読めばできる。
やったことの順序としては、
- Github に Zenn 用のリポジトリを作成し、Zenn アカウントと連携させる。 [1]
- ローカルの Obsidian Vault ディレクトリで、Git Submodule を追加する。URL は上のリポジトリを設定。ディレクトリ名は Zenn にした。それは空のリポジトリだよみたいな警告が出る。 [2]
- Obsidian Vault 内の Zenn ディレクトリを、zenn-cli で初期化する。 [3]
- Zenn ディレクトリに追加されたファイルについて、手動でリポジトリに初回コミット&プッシュする。
- Obsidian Git プラグインの Update Submodules を有効にしておくと、あとは変更内容を自動でコミット&プッシュしてくれる。
- ……はずだったが一度エラーが出た。なぜか .gitmodules が書かれていないとのことだったので手動で作成する。その後エラーはなくなった。[4]
- あとは Obsidian で Zenn/articles の中に、zenn-cli を使って Markdown ファイルを作成し、それを編集するだけ。[5] フロントマターに publication_name プロパティで Publication を指定すれば、そちらに投稿される。[6]
Obsidian Git プラグインが Submodule に対応してくれているので、手動で Submodule の作成と、リモートリポジトリへの初回コミット&プッシュをやっておけば、あとは普通に Obsidian を使っているだけで記事が反映される。
この記事が PaperGarage Diary に掲載されていれば、それが成功したという証しだ。
Saboten
現在開発しているのは、質的データ分析ソフト Saboten である。
Computer Assisted Qualitative Data Analysis Software → CAQDAS → CACTUS → Saboten🌵。
使用している AI は Claude Code。Gemini CLI はソースコードを扱おうとすると一瞬で制限かかる気がする。Calude Code は Pro プランで使っているが、かなり働いてくれるし、リミットに到達したら「今日はこのくらいにしておくか」とう気分になるのでちょうどよい。
開発する動機は、学生に気軽に使わせられる QDAS が欲しかったから。巷のソフトは最近は料金が高いし、サブスクになってますます勧められなくなってきた。一応フリーのソフトも存在しているが、UI がイマイチ。
今学期の授業はだいたいが「受講生同士でデータを収集して、それを全員で共有して分析してレポートを書く」という芸風でやってきた。整然データになるものは Google スプレッドシートに入れて、フィルターやらピボットテーブルやらの練習も兼ねて分析してもらった。一方でインタビュートランスクリプトはやはり QDAS でコーディングしたい。一応 Taguette は紹介したけども……という感じだった。
そして自分としても、買い切り時代のライセンスは持っているが、さすがにサブクスでは使いたくないという気持ちが強い。AI 関連機能が強化されるといっても、AI は別で契約しているし……そもそも QDAS のデータがプレーンテキストで管理されていたなら、Gemini CLI にだってすぐ読ませられるのに……という気分になる。ベンダーロックインされたくない。
そういうことを思っているさなか、 REFI-QDA Standard という、QDAS 用に定義された XML がすでに存在していることを知る。文化としてコンピュータを読むことは好きなので、これを見た時に「おそらく簡単な QDAS ならば作れるだろう」ということは理解した。
しかし自分がプログラミングの労力を割くことはしたくない。どうしよう。というときに、原田さんに Claude Code をプッシュされやってみたところ、いけるやん!となって今週ハマっていた。
で、いまの Saboten の状況がこれ。

すでに大分 QDAS っぽくなっている。コーディングだけなら Saboten ですでにできるぞ、と思い、今度の教育メディア学会に持っていくつもりの YouTube データをいくつか入れてみた。
しかし、これだけではどうも思考が進まなさそうだなと感じる。なにが足りないのだろうと考えたときに、
- テキストデータをみたときに感じたことをどんどん書いていくメモ機能がない
- 事例 - コードマトリクスの表示機能がない
ということに気づく。というか、自分がそういう作業や表示形式を求めていたことに気づかされる。
これまでは完成した QDAS しか使ってこなかったので、Saboten を作りながら「自分はこの道具で何をしたいんだろう?」ということを問い直されている。機能がないことに直面したときにはじめて、自分が直感的に何をやろうとしていたのかが浮かび上がる。
書いていて思ったが、「あるはずのものがそこにない」という感覚は自分が何かをつくるとき重要なファクターだと思う。論文のテーマとかも同じノリで考えている。理想を描いてそれを実現するのではなく、書棚に並んでいて当然のはずの本がない、使えて当然のはずの機能が選べない、で考えている。
じゃあつくろう、と意気込むわけでもなくて、あるはずなんだからすでに自分の思考と行動はそれがある状態を前提に調整されていって、その結果としてある状態が発生した、みたいな感覚。
次の展開として、メモをどうするかは結構重要そうな感じがする。これまでの機能はどんどん Claude に追加依頼していったが、メモに関しては少しどう運用したいのか考えてから実装しようと思っている。MAXQDA の場合、至る所にメモを書くことができるが、ついぞ有効活用できた試しがなく、結局、Workflowy であったり、Obsidian のデイリーノートだったり、色んなところに思いつきを書くことになった。Saboten の場合は、メモは一ヵ所に集約しながら適宜セットで整理したり、コードやテキストとリンクしたりすることになるだろう。
そう、セット機能も重要で、一時的なワーキングディレクトリ的に使ったり、メモを整理するために使ったり、REFI-QDA の仕様に準拠しつつ、自分にしっくりくる形を模索したい。
それからコードを使って複数テキストを比較するだけでなく、単一テキストの断片を複数コードを使って比較するという思考も促したい。授業用に『質的データ分析法』[7] を見ていたら、事例 - コードマトリクスの説明で、コードを使った事例間比較(マトリクスを列方向に読む)だけでなく、コードを使った事例内比較(マトリクスを行方向に読む)の重要性も論じられていた。そういえば後者ないがしろにしてないか、というのは結構な気づきである。
なんでこれに気づいたかというと、あるテキストに付与されたコードを Saboten でどう表示させるかを悩んでいるからだろう。おそらく行番号の左側に表示させるのだが、スペースは狭いがしっかりとコードの存在感があるように表示させたいと思っている。そうするとスクロールしていくとコードを拾っていくだけで単一テキストの主題が浮かび上がる体験ができるんじゃないかという直感している。
そういえば、単一テキストに付与されたコードって、上の事例 - コードマトリクスだと行方向(水平方向)に読むのに、QDAS のテキストビューアだと垂直方向に読むことになるのか。ここで軸がずれるのは認知的に良くないだろうから、事例 - コードマトリクスの行と列を入れ替えやすくするのも大事だ。
-
https://zenn.dev/papergararge/articles/2025-07-17-zenn-setup ↩︎
-
佐藤郁哉. (2008). 質的データ分析法:原理・方法・実践. 新曜社. ↩︎
Discussion