腰が痛いので、寝ながらスマホからGatsbyブログを更新する方法を考えた
ずっとパソコンに向き合ってたら腰が痛くなったので、趣味のブログぐらいは寝ながら更新できる方法を考えました。
ブログではお久しぶりです。Blue Triangleです。
さて、私は普段仕事にパソコンを使っているのですが、まあ腰が痛い痛い。当たり前ですけどね。ずっと座りっぱなしですが。
ちょくちょく運動をしているつもりではあるのですが、そもそも「椅子に座っている時間」を減らすのが一番早いのです。
というわけで、今回はわざわざスマホからブログを書けるようにしてみた、という記事です。
なお、結論から言えばマジで苦行でした。真似をしたい方は、それなりの覚悟を持って臨んでください。
寝ながらブログを書きたい!
ステップ0 現状の確認
今は、Gatsbyでブログを設置し、Markdown形式で書いて、それをビルドしてからGithubに公開しています。
つまり、Markdownを書き、何らかの方法で同期することができさえすれば完了ということです。これは、jamstackだからこそ実現でいる簡単さですよね。
お恥ずかしながらGithub Actionsについてまだ詳しく知らず、手動でいちいちビルドしてGithubに上げています。ここの自動化は次の課題として、本題に入ります。
ステップ1 アプリを探す
スマホからやるので、まずはマークダウンエディタを探すところからです。これがなかったら死です。
ということで、雑な検索の末にObsidianというアプリを選定しました。
引用元:https://obsidian.md/blog/new-obsidian-icon/
このアプリはシンプルなマークダウンエディタながら、コミュニティプラグインを使用できるようです。つまり、誰でもこのプロジェクトに貢献し、便利機能を開発できるということです。これだけで使う価値があります。即断しました。
ステップ2 Gitを使えるようにする
次はGitを使えるようにします。案の定、Obsidian Gitというコミュニティプラグインがあったため導入。ここで苦行発生。
苦行その1 プラグインが有効にならない
どうやらインストールするだけでなく有効化しないといけないらしいです。落とし穴すぎる。入れたら勝手に有効化してください。お願いだから。
苦行その2 ログインがわからん
当然GithubのリモートリポジトリにPushせねばならないわけですから、ログインがいります。しかしこのプラグインはGithubと直接連携しているわけではないため、手動設定がいります。
アカウントのパスワードを渡しても行けるみたいですが(未検証)、トークンを生成すると安全に管理できそうなのでそっちを採用することに。
Githubにアクセス→右上のプロフィールアイコン→Settings→Developer Settings→Personal access tokensの中にあるFine-grained personal access tokens→Generate new token
の順で進みます。
ここからトークンを雑に作ります。ちなみに、私はミスってなんの権限も付与していないトークンを作ったがためにエラーが出まくりました。みなさんはちゃんと付与しましょう。ContentsにRead and writeを付与してやればOKです。
権限を与えるリポジトリを選んだだけだと、勝手にR/W権限はつきませんからね。要注意ポイントです。
苦行その3 ブランチ分けがめんどい
「せっかくGit使うんだから、下書き用ブランチと公開用ブランチは分けたいよね…」と考えるのは、別におかしいことじゃないと思います。
そしてObsidian Gitには、ブランチを切り替える機能がちゃんとついています。
ただし、機能があるかどうかとちゃんと動くかどうかというのは常に別の話なのです。
- アプリ起動時に今何のブランチにいるのかわからない
という表示上の問題はまだマシな方で、
- たまに切り替えられなかったり、
- 切り替えようとしたら謎エラーが出たり、
- originブランチを付け替えられないために間違えて指定したら一度消さねばならなかったり、
- でもGitのデータ上にはブランチは残ってて、新しいローカルブランチを作成したらバグったり
…と、まあかなりの地獄でした。Obsidian Gitを使うときは、単一のブランチで作業をしたほうが良いかもしれません。本当に苦行です。
多分Branchは分けないほうが、普通に便利に編集できます。難しいものですね。
苦行その4 無限に湧き出るbuffer errorとmerge error
さて、設定が終わりました。あとはCommitしてPushするだけだ!
buffer error
は?
buffer error
buffer error
buffer error
Merge conflict error
?????????????????????
ということで、buffer error地獄にハマってしまいました。このエラーは画像などのバイナリデータで、しかも大容量のものを上げると起こるらしいです。
ところで、リポジトリ全体のサイズは2MBに満ちません。私は、前世でなにかしてしまったのでしょうか。
ところで、私は気分で.obsidianディレクトリをリポジトリに含めてしまったのでそれが原因かもしれません。これをナシにすれば治るかも…?(でもたかが数MBのディレクトリでbuffer errorを頻発するのって、利便性の面で致命的だと思うんですよね)
ちなみにこの症状は常に起こるわけではなく、時々pushに成功するので完全に気まぐれです。本当に勘弁してくれって感じですね。
それと、Obsidian Gitには (コンフリクトを解決する機能が)ないです。 なので、一度でも事故ってコンフリクトを起こすと二度と動きません。スマホなので、ターミナルから手動解決もできません。残念でした。最悪の気分です。もう無理。/shrug
案2 Termuxを使う
そもそもGit互換クライアントなんか使うのが良くない、だからObsidianは純粋なエディターとして使用し、GitはTermuxでやろう!というのが第2の案です。
これは近日試して結果を報告します。お楽しみに。ダルければやらないかもしれないので、期待せず気長に待っててください。
できたっちゃできたが…
というわけで、結論、かなり苦しんだにも関わらずPushができたりできなかったりし、ブランチ管理もろくにできなかったためほとんど成果がなかったね、という結論になってしまいました。
特に、Merge関連でエラーが出た場合、Gitリポジトリを含むすべてのファイルを一旦消し飛ばして、Obsidian Git関連のものをすべて再設定する必要があります。これ以外の解決方法が今のところ浮かびません。これは実際、かなり致命的です。
もしもいいやり方を知っている方がいたら、遠慮なく @Ao_Sankaku にDMしてください。FF外のリプだと、なぜだかたまに通知が来ないことがありますのでいきなりDMで結構です。