Noratetsu Lab

動じないために。

2023年4月

2023/04/26

22日

「これまで書いたことがないことを書いてみる」というテーマが提示されて気づけば三週間ほど経ってしまいました。その間に倉下さん富山さんねじまきさんのご投稿があり、どれも大変興味深く拝読しました。


私も何かないかなあとずっとぼんやり考えていましたが、多分ぼんやり過ぎて、

「自分は何を書いてきて、何を書いてこなかったのか」を振り返る必要がありますし、もっと言えば「実はこういうものを書きたいとちょっと思っていたのだ」というちょっとした欲望を掘り出す必要もあります。
ということを成すにはエネルギーが足りなかった感があります。ちょっと反省。
元々このトンネルChannelという場はそういう試みを含んだ場と思いますので、今月に限らずこの先も考え続けていきたいと思っています。

そんな中でもとりあえず何かしら初めてっぽいことをやってみようと思ってこの投稿が生まれています。
一昨日Twitterコミュニティの方で「これまで書いたことがないもので書けそうなものってなんだろうなあと考え始めて気づけばもう24日!」と呟いたところ、タカヒロトさん(富山さん)から「『24日』という題名の、悩ましい執筆者のいくつかの事柄を」とリプライをいただきました。
ということで、「題名と内容の方向性をおおよそ指定された文章」に挑むということにします。いつも自分本位に書いているので私としては珍しいことです。内容については、(ご提案いただいたことの解釈として合っているか怪しいですが、)「書けそうなもの探しに悩む書き手」の話とします。

さてタイトルは「22日」としました。やり取りから2日経っているのにむしろ2日減っていますが、これはテーマの提示が今月4日だったので、経過日数で数え直したことによります。22日経過しているわけです。22日もです!
先に倉下さんのご投稿から引用しましたが、「書いたことがないことを書いてみる」ということにあたっては、二段構えで自分と対話する必要がありました。

  • 自分は何を書いていないのか?
  • 自分は何を書いてみたいと実は思っているのか?

書いてみたいと少しも思っていないものはちょっと難易度が高すぎるので、現実的には逆の順で「実は書いてみたいかもしれないこと」をまず探して、その中で「実際に書いていない(あるいは明らかに書いた経験が少ない)」ということを判定する流れになるかもしれません。
いずれにしても「実は書いてみたいかもしれないこと」を自分に問う必要がありますが、これがとても大変です。歯ごたえ十分です。ゆえに月間テーマとして相応しいと思いますが、私のようにゆったり構えていると一ヶ月では足りなくなってしまいますね。
この難しさというのは、必ずしも「ちゃんと書こうとしすぎている」ということが原因となっているわけではありません。もちろんそれが枷になる可能性も十分あります。が、もっと単純に、「実は書いてみたいかもしれないこと」に焦点を当てる事自体に結構苦労する感じがあります。

というのも、「書ける何かがあるかどうか」というのは無意識のレベルで判別してしまっているようなところがあるからです。書いたことがないものなどない、なんてことは絶対にありえないはずで(全知全能の大作家とかでない限り、絶対と言い切っていいと思います)、どこを見ても書いたことがないものだらけです。自分の視界に入る物についても、自分の経験についても、自分の好みについてさえそうです。
そもそも書ける何かなのかどうか、というジャッジが無意識下で速やかに行われてしまうと、「書いてみたい」という欲望が存在することに思い至ること自体がなくなってしまう感があります。例えば「わたしとスマートフォン」というテーマの文章を書いてもいいわけですが、今まさに手の内のスマートフォンに目をやっていたとしても、そういうテーマがありうることに全然思い当たらないという可能性があります。
ちなみに、今私は「絶対みんなに関連する卑近な例」を探そうとして「スマートフォン」という単語をひねり出しましたが(そして「パソコン」も)、この投稿を書こうという中でそういう意識を持ったことで初めてスマートフォンに焦点が当たりました。スマートフォンについて書いてもいいかもしれません。多分まともに書いたことはありません。でも書けることはそれなりにあるはずです。

月間という比較的短い期間のテーマであるということから、私は「技量的に無謀ではないもの」から選択しようという判断をしましたが、それも可能性を狭めるひとつの要因になったでしょう。
例えば、私は小説を書くことがないではないですが、「物」を主人公にした小説などは書いたことがありません。例えばスマートフォンを主人公にした小説を考えてみてもよかったでしょう。結構な大挑戦です。
あるいは詩なんかは小学校の授業でやったきりです。元々詩作に苦手意識がある上に、年齢を重ねれば重ねるほど「今更稚拙なものは作られない」的な意識が高まって挑戦が難しくなりますが、詩人や作詞家が職業として成り立つくらいですから、そもそもみんなが巧みに作れるわけはないのです。他のあらゆる芸術やものづくり等と同様に下手でもやっていいことで、最初から除外してしまわなくてもよかったと思います。
どちらも、自分自身にできるかどうかが不透明すぎて、今ここに至るまで考えもしませんでした。この文章を書くために「無理だと思っているもの」に敢えて焦点を当てることで、そういう選択肢が意識に上りました。こう書いてみると、「いや、ちょっとやってみてもいいかもしれない」と思えてきます。
一歩を踏み出して着手したとして、やっぱり恥ずかしくて投稿は諦めるかもしれませんが、しかし「やってみてもいいかもしれない」と思うかどうかは大きな違いになりそうな気もします。案外いけるかもしれないのです。そういった変化こそ、倉下さんがこのことをテーマに掲げた狙いであろうとも思います。

そういえば、「気づけばもう24日」のツイートをした後に、坂本龍一の音楽についてのツイートを見かけて、ちょっと音楽について書いてみようかと思ったりしました。音楽の素養は無きに等しいですし何かこだわりがあるのでもないですが、自分にとっての音楽とは、ということなら書けるでしょう。あるいはとあるテレビ番組について書こうかとも考えました。
いずれも「気づけばもう24日」と自分が呟いたことによって引き出されたように思います。

テーマの提示から20日あまりが経ち、このまま何もしないでテーマをスルーしたらなんだか「負けた気がする」と思って先のツイートやこの投稿を書いたわけですが、24日の時点では確かに候補がゼロでした。三週間何をしていたのか、と自分で思ってしまいます。
しかし、「負けた気がする」という個人的な気持ちを払拭したいがために辛うじて1ミリくらい挑戦要素を含んだ文章をこのように勝手に書いていたところ、何もなさそうな砂場に磁石を転がしたら砂鉄がもさもさくっついたといった風に、ちょっとしたテーマが集まってきました。
いつの間にか、書けそうなものをいくつも抱えていることになっています。
これはやはり「書く」ということが持つ力なのでしょう。何もないなら何がどう「何もない」のかを書いてみる。この一本の「勝手に書いた文章」は、ぼんやりした22日分を取り返すくらいの意味が私の中ではあったと思います。
まあしかし、まだ候補を見つけただけで、「本当の挑戦はこれからだ」という段階ですが…。何かしらチャレンジしたいところです。

2023/04/21

NTA-DIY:糸口①~結局何をどうしたら動くのさ~

 このシリーズ記事では私の体験を記録として残すべくあれこれ書いていますが、読んでいても結局何をしたら真似できるのかわからんぞ、というご感想もあろうかと思いますので、私の環境を共有する記事もちょっと書いておこうと思います。


 以前から「WebブラウザをGUIとしたアプリケーションを作った」という話をずっとしているわけですが、それってそもそもどうやるのと思われた方もいらっしゃるかもしれません。何をどう調べたら情報が出てくるかもあまりよくわからない感じがします。
 挑戦しようとした時に一番困ることは、まさにこの「何を調べたらいいのかがわからない」ということだと思います。何を調べたらいいのかがわかるなら調べればいいのです。なので、私のスタンスとしては、知識そのものを提供するのではなく、何を調べたらいいのかの手掛かりになることを目指して書くことにします。知識の理解の手助けは私自身初学者ゆえ何も責任を持てませんので、学習そのものは書籍や学習サービス、インターネット検索などでどうにか頑張ってください。
 なお親切な書籍やサービスはたくさんあるかと思いますが、私自身はインターネットの力で強引に進んできましたので、これがいいよというのを具体的に薦めることはできません。その上どういうワードで何を調べたのかも曖昧です。なので、全く良い導き手ではないことを先に侘びておきます。ですが「自分のペースでのんびりやりたい人」の良き友人でありたいと思っています。

 本題に戻りましょう。WebブラウザをGUIとしたアプリケーションを自作するというのは、超簡単に言うと「自前のHTMLをブラウザで開く」ということです。GUIとは、コマンドプロンプト的ではない、マウスなどによって操作可能で人間にわかりやすいインターフェースのことです(「アプリケーション」と言って思い浮かぶものがつまりGUIです)
 その「自前のHTML」にてCSSやJavaScriptを呼び出して機能を使えるようにしているわけです。最もシンプルな方法は、拡張子htmlのファイルに然るべき書き方であれこれ書いて、ファイルをダブルクリックするなどして開くというものです。
 htmlファイルの開き方はいくつかあります。列挙すると例えば以下のような選択肢です。言っている意味がわからないところもあるかもしれませんが、最初から全部理解する必要はありません。

  1. htmlファイルをそのままWebブラウザで開く
  2. ローカルサーバーを立て、htmlファイルを呼び出してWebブラウザで開く
  3. Electronのアプリケーションとしてhtmlファイルを開く(※Webブラウザではない)

 どうしてこのような複雑な選択肢が生まれてしまうのかというと、Webブラウザにはローカルファイルの扱いに於いてセキュリティのための制約があるからです。1は制約がそのままで、2、3はその制約を回避しています。

 ノートテイキングアプリケーションを作る場合、データというのはローカルファイルとして存在して、アプリケーション上で編集するためにそのファイルの中身を呼び出し、書き込んで保存する、という形になってほしいものと思います(私はそうです)。持って回った言い方になりましたが、ファイルを編集するタイプのデスクトップアプリケーションは普通そうなっています。
 しかし、Webブラウザ上で実行するスクリプトによってローカルファイルを編集できるようになっていては危険極まりないので、Webブラウザでは通常そういうことができないようになっているわけです。ローカルファイルの内容を読み取るだけなら簡単な方法があるのですが、書き込むことはどう頑張ってもできません(ローカルサーバーを使わない限り)
 GUI自体を作ることができる言語を使えばこの問題は起こりませんが、GUIを作るというのはおそらくプログラミング初心者にはかなりハードルが高いので、セキュリティの問題の複雑さとの戦いがあってもなお「HTMLを書いてWebブラウザで開く」という方式を採用しています。
 日頃、WebブラウザをGUIとして利用したアプリケーションについて語る中で、ローカルサーバーがどうこうとかElectronがどうこうとかいう話をしばしば登場させていますが、それはこういう事情によるものです。

 最初の最初は普通にWebブラウザで開いて動かすものを作るのが簡単です。ローカルファイルへの保存は直にはできませんが、ブラウザ内には保存領域があるので(localStorage)、データが失われないように保存すること自体は可能です。なのでローカルサーバーだのElectronだのということがわからなくてもアプリケーションとして成り立つものは作ることができます。
 やがて「ローカルファイルに保存できたらいいのに!」という気持ちが高まったらローカルサーバーやElectronの勉強をするということになるでしょう。ちなみに、Webサイトの運営をしたことがある人はサーバーというものに馴染みがあるかもしれませんが、私は全く無縁だったためサーバーという概念の理解が難しく、先にElectronを習得することになりました。今はElectronをやめてローカルサーバーでやっています。どちらが簡単ということはなく、それぞれ違う種類の難しさがあると思います。

 ここまでの話と補足情報をまとめてざっくり整理しておきます。

  • WebブラウザをGUIとした自作アプリケーションとは、ここではhtmlファイルを書いてWebブラウザで開いて動かすものを指している。
  • Webブラウザは基本的にローカルファイルを編集できないようになっている。
    • 代わりにWebブラウザにはlocalStorageという保存領域がある。
    • Webブラウザからローカルファイルを編集するならローカルサーバーを立てる必要がある。
    • WebブラウザではなくElectronというフレームワークを使えばローカルファイルを自由に編集できる。
      • ElectronはWebブラウザではなくデスクトップアプリケーションだが、Chromium(Google ChromeやEdgeなどモダンなブラウザの核みたいもの)を使ってレンダリングしているので、感触としてはWebブラウザとほぼ同じ。

 すぐ必要になるので検索すると良いかもしれないキーワードは以下の通り。 

  • HTML
  • CSS
  • JavaScript
  • localStorage
  • ブラウザのデベロッパーツール

 いつかは調べることになるけど焦らなくていいキーワードが以下の通り。

  • ローカルサーバー
  • Electron
  • Chromium
  • Node.js

 
 それでは最後に、htmlファイルを適当な名前で適当なフォルダに作ってみましょう(どこでもいいです)
 そのhtmlファイルを「メモ帳」か他のテキストエディタで開いて、以下をコピペしてください。簡単なスクリプトを書いてあります。
https://gist.github.com/nora-tetsu/b650bb9b9ae2f89d1f278ebacd1769ca

 Webブラウザでこのhtmlファイルを開いてみましょう。こういう画面になると思います。(フォントは全然違ったものになると思います。)

画像

 テキストエリアに何かしら入力して追加ボタンをクリックすると、書いたものが下に表示されるはずです。入力と追加を繰り返すとどんどん下に追加されます。
 追加されたものをダブルクリックしてみましょう。すると削除していいか聞かれます。OKで記述は削除されます。
 これは簡単な例ですが、こういう処理の組み合わせによってアプリケーションを作っていくことになります。localStorageへの保存処理を作ってドラッグアンドドロップ処理や編集機能などを加えればToDoリストなどとして使えるものになるでしょう。

 こんな感じでツールづくりのヒントを書いていこうかと思います。自分自身が初学者だから書けることというのも何かしらあるのではと思っています。先生ではなく隣の席の「ちょっと予習進んでるやつ」くらいの立ち位置のつもりです。一連のシリーズ記事の主目的は体験の文章化なのでこちらは余力があればになりますが、よろしければ参考になさってください。
 なお、これは本シリーズに於いて「プログラミングの話が書いてあるのに参考にできない」という穴を埋めるためのものであり、正確な知識や網羅的な情報を提供することを目指したものではありません。独力で調べられる方は自力でお調べくださいますようお願い致します。
 

2023/04/19

話題管理サービスとしての掲示板

 前回の記事ひとり掲示板で自由に呟くで「掲示板を一人で使う」という閃きについて書いた。その掲示板を再掲しておくとこちら。


 たまたま一人で使っても良い感じだということに気がついたが、そもそもは一人で使いたくて掲示板を探したわけではなかった。
 複数人でちょっと話しましょうとなった時に、LINEのグループやTwitterのコミュニティ、各種チャットツールが選択されることが多いと思うのだが、それらが本当に最善なのかと考えるとなんだか微妙だなということをずっと思っていた。
 それらは短期間だけ必要で何か決着のつくやり取りなら便利なのだが、蓄積にはあまり向いていない。なのでそれぞれ何らかの工夫がその先に必要になる。仕事であればやり取りの結果が反映される先があるが、ネット上の知り合いが雑談するというような状態だと結果を反映させるものがないので、ただただ流れていってしまう。Twitterのコミュニティなんかはもう過去のやり取りの発掘はほとんど無理である。(相性次第ではあるがこの問題の解決策の一つとしてScrapboxの共同編集プロジェクトがあり得るだろう)

 そうなった時に、ふと「匿名掲示板はよくできていたな」ということを思った。私個人は昔にしたらば掲示板の一部の板をちょっと見ていただけで、2ちゃんねるなどはほとんど利用していないため実際の様子はそんなには知らない。でも「板があって、スレッドがあって、1000レスで終わりにするか場を改める」というのが「話題の管理」としてかなり合理的だなと今更ながら感じたのである。
 実際、有名なスレッドはずっとどこかに残り続けている。そして全てのレスには番号がついているので、全ての言及についてこのスレの何番と指差すことができる。
 そんなことを思い、実際に場を作るかどうかは全然別として、現在掲示板というものがどうなっているのかを調べようと思って無料掲示板を調べていた。(個人的には前回書いたようにzawazawaを気に入った。)

 匿名掲示板の文化として、名前を記入する欄があってもそれが使われることはほとんどないわけだが、何も掲示板は必ず匿名掲示板として使わねばならないわけではない。
 無料掲示板サービスをあれこれ見てみても、仲間内で使えるようにできますということが結構書いてあるので、それなりに非匿名の場として使われてもいるのかもしれない。私個人はそういう機会がなかったのでそういう風には使ったことがなかった。

 匿名掲示板に慣れてしまっている人だと、掲示板だというだけでなんとなく乱暴な「匿名掲示板っぽい」振る舞いを想起してしまったり、自身がそういうモードになってしまったりするかもしれないので、そこがひとつ難点になるかもしれないと思う。
 ただ、普通に実名やHNで各所に書き込みをするのと同じように書けるとすれば、掲示板の「板があって、スレッドがあって、1000レスで終わりにするか場を改める」という形式は割と便利なのではないかと思っている。(1000以上書ける掲示板なら1000レスにこだわる必要はないが、ともかく適当なところで区切りをつけるという発想があることに意味があると感じている。)
 雑談の中で既にやり取りをしたことがある話題に差し掛かった時に、前に作ったこのスレッドで続きをやろうぜと言って移ればそこにどんどん蓄積されていく。同じ話題のループに悩むことはないし、自分の考えを繰り返して書く必要もなくなる。アンカーを付ければ参照が簡単だからだ。Twitterではひとつのツイートを取り出してきても同時にあった他のツイートのことは全然わからないが、スレッド内ならそのアンカーを起点に前後のレスを読めばいい話である。
 もちろん「もうその話はしたぞ」と厳しく言う必要は全然ないし、話題のループが全部悪ということでもない。同じ話を何回も考え直すところにも意味はある。どちらかというと「もう話がされていることなんじゃないか」という不安を払拭する意味で過去の記述が一通り読めるというのはありがたいと思う。

 掲示板のスレッド内では、それぞれが新たに話題を持ち込んだり特定のレスに言及したりしていて複数の話が同時に走っている。メンション機能のあるチャットツールやTwitterも同様だが、個人的にはアンカーの見た目が「今はこれに言及しています」という表示としてとてもわかりやすいと感じている。「○○さんへの返答」ではなく「何番のこの話への反応」という印象が強くなる。
 複数のアンカーを貼ればそこで文脈を作ることもできる。何番と何番はこういうつながりがあって、みたいなことができるわけである。色んな人が同時に色んな話をしていてそれぞれに興味があるという場合にも、一度に「>>100にこう返信、>>123にこう反応」ということをまとめて書くこともできる。場全体の空気を読み過ぎる必要はなく、亀レスもあまり気が引けないと思う。普段「わかる」みたいな短い反応は親しい間柄じゃないとやりにくい気がするが、掲示板ならそれも気軽にできる、かも?

 もはや掲示板と縁遠くなって久しい人々も、実は匿名掲示板で行われていたようなことを匿名ではない状態でやりたかったりするのではないか、と日頃感じているのだが、どうなのだろう。みんながみんな世界に向けて話したくてSNSをやっているんじゃないような気がする。

 と、色々考えてはみたが、今になって実際に掲示板を使うというのが現実的かどうかはわからない。現在使っている場での工夫というのも様々積み重ねられていることだろう。でも、なんだかんだ「スレ」というのは「話題」を扱う単位としてとてもうまい仕組みだったな、と今更ながらに思うのである。
 

2023/04/17

ひとり掲示板で自由に呟く

 昨日、短文投稿サービスを彷徨うという記事を投稿した。その中で、Twitterには「自分の内面を自分で引き出す」という効用を感じているが、しかしそれはTwitterでなければならないものではないかもしれない、ということを考えた。


 「自分の内面を自分で引き出す」ということをTwitterでやっていた理由は以下のとおり。

これは人に見せない日記でやっても良いはずで、実際日記によって同様の効果を得ている人はきっとたくさんいるのだが、私自身は100%自分のために何かをするということが苦手なので、「書くからには読んだ人が意味をきちんと理解できるようにしよう」という少しの利他性を動力にして文章を綴っている。長文にするとなると文章全体の組み立てを考えなくてはならないが(つまり利他性の発揮にエネルギーを費やしすぎる)、Twitterならとりあえず140字単位で意味が通じれば良いので文章化しやすい。
 そしてこれをやる場はTwitterでない方がいいかもしれない理由は以下のとおり。
(自分の内面を引き出すための)自分の発信が生んでいるのはまた自分の発信であり、他者の受信・発信を通して自分の受信が豊かになっていくというサイクルを作り出していないのだ。

 ではどこでやるべきかという話だが、昨日投稿した時点では解決策というのは全然見出せていなかった。しかしその後別な目的で探していたものによって図らずもスッキリ解決してしまった。
 ずばり「掲示板」である。そして解決方法とは言うなれば「ひとり掲示板」だ。
 なぜ掲示板を探していたかというのはまた改めて書こうと思っているので割愛するけれども、ともかくあれこれ無料掲示板サービスを見ていて、zawazawaというサービスに行き着いた。調べてみるまで存在を知らなかったのだが、WIKIWIKI運営が提供している「掲示板形式のWIKI」とのことだ。見た感じWikiだという印象は薄いが各スレッド(=「トピック」)の最初にMarkdownで記述を作れるので、確かにWikiなのかもと思う。記述部分を充実させればWikiらしいWikiにもなるし、そこはあっさりでコメント欄が目立つようにすれば掲示板らしい掲示板になる、という感じだろう。基本的にはWIKIWIKIの補助的な位置づけだろうかと思う。

 そしてzawazawaは権限の付与を細かく設定できる。URLを知っている人だけがアクセスでき、かつ自分だけが編集できるようにすれば、ひとり掲示板の完成である。じゃじゃーん。

 機能もさることながら、見た目が明るくすっきりしていて綺麗なのが良い。使いたいという感じがする。zawazawaに慣れている人が見たら変に思われるかもしれないが、私自身は昨日初めて見たサービスなので違和感はない(違和感を持ちようがないというか)

 で、これは「のらてつの雑記帳」という板(=「グループ」)の中に複数のトピックが存在していて、トピックを開けば私の書き込み(=「コメント」)がずらっと並ぶ状態になっている。トピックはこのページの下の方、または右の「最新トピック」の欄からアクセスできる。
 どんどん下方向に書き込むことになるのでTwitterとは向きが逆だが、書き込む感覚としては似たような感じで書いていける。zawazawaはアイコンが丁度いいサイズで表示されるのもTwitter感があって良い。コメントはツリー表示とタイムライン表示を切り替えられるというのも便利。なおMarkdownが使えるので結構いろいろなことができる。GitHub Issuesと同じような感じ。データはCSVでエクスポートできるようなので、もし飽きてしまっても安心。
 これを勝手にTwitter的なものとして使うとして、タイムラインをトピック単位で分けられるというのが非常に便利に感じる。全てを細かく分類する必要はないが、明らかに継続的に語っている特定のテーマがあるならそれは分けられた方が望ましい。前々からTwitterにそういう機能があったら良いのにと思っていたが、まあ追加はされないだろうなと諦めてきたことだ。コミュニティ機能は「テーマごとのタイムラインに人が集まる」機能だが(それはそれで良いのだが)、私が求めていたのは「人それぞれにタイムラインを複数持てる」機能だった。
 ちなみに各トピックページをRSSリーダーに読み込んでもらうとコメント単位でフィードを取得できる模様。ただ、最初の百数十字分のみで書式も反映されないので、長く書いていたりMarkdownをフル活用していたりするコメントはRSSリーダーだけだと不十分という感じ。

 この掲示板にせっせと一人で書き込んでいく。読む人もいるかもしれないと思いつつ、自分自身が必要とすることを書く。誰かに読まれてもいいように最低限文章を整えておこうという気持ちを動力にして、未来の自分が助かるようにきちんと言葉にしておくということだ。
 他の誰かとの間に何かの反応を起こしたいならTwitterなりMastodonなり他のSNSなりを使うとして、自分がどんどん書いていければそれでいいものはここに書く。書きやすさを理由にして100%自分のためのものもTwitterやMastodonに流していたりしたわけだが、正直他の人が各々リアルタイムに読みたいと思っているタイムラインにそういうのを流し込んでしまうことに気が引けるところがあったので(仮に読みたいと思ってくれている人がいたとしても)、書きやすさはそのままに気後れする要素を除いたこの場所はとてもやりやすい。

 この場所を拠点にしていると、他の人の発信はリアルタイムでは目に入らない。気が向いたらTwitterやMastodonやRSSリーダーを見に行って、溜まっていた分を流し読んで気が済んだらここに戻ってくる。まだ昨日の今日なのでそういうスタイルで固まるかどうかはわからないが、このままこのひとり掲示板を続けるならそういう形で落ち着きそうな感じがする。
 現時点では色々と良いことがありそうな感触だが、使っていくうちに弱点を見つけたりもするかもしれない。とりあえずしばらく続けてみようかと思う。
 

2023/04/16

短文投稿サービスを彷徨う

 私の中でTwitter離れが進んでいる。元々ツイートの頻度を頑張って抑えていたので発信は減っていたが、昨今の流れを受けてもはや抑えるまでもなくなっている。


 このことに関して考えていることを全部書いていこうと思う。ただ頭の中身を出したいだけで、これという結論があるわけではない。

 Twitter離れの理由は大きく分けて二つある。Twitterそのものの信用がなくなっていることと、Twitter的なスタイルに対する飽きである。元からあった後者の要素に前者が加わったことで決定的になった。

 前者について細かく言えば三つくらいの要素がある。
 まずトップに立っている人間の信用ならなさである。これはどちらかと言えば感情的な理由で、要するに「気に入らない」ということだ。
 次に実際的に便利さが失われているという点がある。APIの実質的な利用停止により、数々の関連サービスが終焉を迎えた。これは本当に冗談じゃないと思う。
 そしてもうひとつ、今後データがどう使われるかわからないという不安がある。AIの目覚ましい進歩に合わせて、ツイートを学習データとして使われる可能性が普通にある。イーロン・マスクはAIに意欲を示している。使われたからといって個々人に具体的な不利益が生じるわけではないとしても、こちらはそういうものに使われるために呟いてはいない。

 後者、つまりTwitter的なスタイルに対する飽きというのは、一言で言って「人間の嫌な面を見過ぎた」ということである。
 サービスがレイトマジョリティまで行き渡ってしまったあたりで、自分の中に明らかに「倦み」が生じた。同じような論争に幾度となく直面し、無限ループって怖くね?という感じである。そしてどう考えても無理がある理屈も賛同者がそれなりの規模になれば一大勢力になってしまうし、そういう集団を解体する術はなく、どこでも「なぜか吊るし上げられる」ということが発生しうる。何も問題などない良心的な人が攻撃に晒されて辟易しているのを見るのはいい加減辛い。もうそういうのから逃れたい。
 Twitterの嫌な面というのは別に最近現れたわけではなく、程度が増してきたのは事実としても昔からあったことではある。うんざりしては「もうTwitterなんかやめてやる!」と決意して、しかし次の日にはまた呟いている、ということを繰り返してきた。
 結局のところ、やめてしまうには「惜しい」のである。

 何が惜しいのか。これには発信側と受信側の二つのベクトルがあるだろう。
 まず発信する身としての惜しさは、「インターネット空間を誰かと共に生きている」という実感を失う可能性があること、そして短文を思うままに放つことで得ていた「自分の内面を自分で引き出す」という体験から遠ざかりかねないということがある。
 インターネット空間に自分の家的なものを建てること自体は簡単である。レンタルサーバーなりブログサービスなりで自分だけが使う権利のあるアドレスを得ればいいだけのことだ。しかしそれだけでは非常に孤独である。訪問者というものは普通来ないと思った方が良いくらいだろう。ここだってTwitterで更新を報告したりシェアしてもらったりしているから来訪してもらえている。それにタイムライン型のものでしか味わえない「今、他の人もこのサービス上でオンラインなのだ」という一体感というのは無意識のうちに相当な喜びをもたらしているように思う。
 もうひとつ個人的に重要だったのが、「自分の内面を自分で引き出す」という体験である。どうしてTwitterをやめられないのか、という観点で既に何度か書いたことだが、自分の呟きが自分を活性化してくれる体験の気持ち良さを捨てられない。単に気持ち良いだけでなく、そうやって自分を知ったことが自分の人生に対する解釈を変え、メンタルの強度を僅かずつ高めてきた(まだ全く脆いが、昔よりはマシである)
 これは人に見せない日記でやっても良いはずで、実際日記によって同様の効果を得ている人はきっとたくさんいるのだが、私自身は100%自分のために何かをするということが苦手なので、「書くからには読んだ人が意味をきちんと理解できるようにしよう」という少しの利他性を動力にして文章を綴っている。長文にするとなると文章全体の組み立てを考えなくてはならないが(つまり利他性の発揮にエネルギーを費やしすぎる)、Twitterならとりあえず140字単位で意味が通じれば良いので文章化しやすい。

 受信側での惜しさの話に進む前に、最近どういう状況にあるのかという話を挟むことにする。
 周知の通り、あっちこっちで「ポストTwitter」を念頭に置いたサービスが誕生している。林立の様相である。率直に言うと似たりよったりだなと思う。どれもTwitterに対する需要を吸収すべく「Twitterっぽい」ように作ってあるのだから、似ているのは当然の話である。
 今のところ私自身が継続的にやっているのはMastodon(インスタンスはFedibird)だけで、ちょっと様子を窺ったのがNostrとSubstack Notesである。あとはTwitterの「知的好奇心向上委員会」コミュニティの避難所的な位置づけのDiscordサーバーをちらちら見ている。今巷で一番話題になっているのはBlueskyだろうか。
 Discordについては、まだ勝手がわからないのと、Twitterの情勢とは関係なく元々あったサービスであることから除いて考えるが、他の種々のサービスについては正直なところいずれもピンと来ていないところがある。根を下ろす決定打に欠ける。慣れているのがMastodonなのでMastodonにいるが、別にMastodonが一番だよねとは思っていないし、逆にMastodonはここがいまいちとも思っていない。感想がほぼ「無」という状態にある。Mastodonでさえそうなのであって、他のサービスは尚の事「無」である。それは別に魅力がないとかいう話ではなく、必要かつ十分な形式というものがもうTwitterを通して研究され尽くされていて、それを満たしていればそれ以上求めるものはないということである。要するに、ぶっちゃけ何でも良いのである。
 で、どれも一応十分な機能を備えており、人も一応いるにはいる。アーリーアダプターな人々は各サービスにアカウントを作っており、その人達を追いかければ一人ぼっちにはならないだろう。上述した「発信側」としての惜しさは両面とも一応解決している。しかしどことなく漂う「なんか違う」感。Twitterをやっている間は発信側としての有益性が自分の中で目立っていたのだが、それを一応満たしているのに納得感は乏しい。Twitter的形態に対する物珍しさが最早ないということも、書き込む身としての自分のテンションを低く抑えている。

 やはり受信側としての惜しさを今一度きちんと考えなくてはならないだろう。書くより読む・見るの方が多分大事だったのだ。
 現状困っているのは、人が分散していることである。これが致命的に困る。すごい困る。Twitterの存在意義は「万人を一箇所に集めた」という一点にあると言っても過言ではない。その意味で、万人を集めに集めて信頼を勝ち得ておいてから壊れたことを心底恨めしく思う。
 フットワークの軽い個人は今パッと散らばっている。まだTwitterに軸足を置いたままの人の方が多いかなとは思うが、その足は早晩地を蹴ることになるだろう。その先をそれぞれ追いかけるのはしんどい。しかも最も追いたいのは企業や施設、各種サービスの公式アカウント、あるいはTwitterを活動場所や連絡先代わりにしている著名人・クリエイターなどのアカウントであり、それらは容易には他のサービスに移れないのだろうから、見るものとしてのTwitterから離れることは当分できないに違いない。もし全体をカバーするならば、濫立しているマンガアプリを片っ端からチェックするがごとき忙しさである(つまりほぼ無理ということだ)
 見る側としてのTwitterの良さというのは、自分がフォローしたいと思う人々が「シェアしてくれるもの」にあった。シェアを通じてその人の楽しげな気分を知るのが自分も楽しかったし、何かに対するその人の見解を見れるのは興味深かった。Twitterという大海に多種多様な情報がシェアしやすい形で漂っていることによって、人々が自身の関心に沿ったものをぽんぽんシェアできる。関心があってもそれを発現させる機会がなければ見ることは叶わないわけで、そのトリガーになりうるものが大量に流れていることに価値があった。Twitterの趨勢に敏感な人々が他の場に移ってしまったとして、その人達は当分の間Twitterでやっていたようには情報をシェアできないだろうと思う。そして人々が拡散することで自分の元に届いていた情報も、これから届きにくくなっていくのだろう。
 Twitterのリツイートという機能がもたらしたものについては、開発者が後悔を語っていたように(Twitterのリツイートの生みの親 後悔を語る)、正直悪い面の方が大きいと思っている。しかし自分が価値観や美意識を好ましく思っている人がシェアしてくれるものは面白いし、リツイート機能によって好ましいものに接する機会が爆発的に増えたのも事実である。そしてリツイートは「リツイートされるもの」が溢れていることで威力を発揮する。そういう環境が再びできてくれればいいと思ってはいるが、果たしてどうなることか。素人目には、ビジネス的に成り立つ道がどこにあるのかよくわからない。人類から悪感情がなくなることがない以上、Twitterがそうだったようにいずれは大量の社員を抱えなければならない気がするのだが、AIの力でどうにかできたりするのだろうか。

 縦しんば今後第二のTwitterが隆盛を極めたとしても、最初に書いたようなTwitter的スタイルへの倦みがまた生まれればなんだか馬鹿らしいところがある。多分ユーザーが増えれば同じような展開をたどるのだろうし、それを同じように眺めていれば同じように倦むことになる。もっと言うと、自分がうんざりだと感じるようなものを自分自身もまた発信しているし、それを性懲りもなく繰り返すことになってしまう。そうなれば本格的に愚かだという感じがする。
 Twitterや他の後継サービスの動向がどうであれ、Twitter的なものを使うということについて反省が要る。不満を抱きながら離れがたいという矛盾を解決してドライに使えるようになる必要を感じる。自分には、Twitterの「楽」な面に寄りかかり、ネガティブな面によって縛られているところがある。Twitter仕様になってしまっている自分を解体する必要があるだろう。
 Twitterに慣れることによって、「人に聞かせる」という行為に伴う自分の態度が曖昧になった。適当に喋っていても誰かは興味を持ってくれるということが自分を怠惰にしたと感じるし、「よそ行き」のものは「よそ行き」らしくした方がいい。「つぶやき」とか「ツイート」とか言うが、実際には本当の意味で「呟き」として読んではもらえないものだし、それ以上の何かとして読まれることをある程度想定して投稿しているところもある。ならばそれなりの意識を持った方が良いだろう。
 また、Twitterが流行ってしまったことにより、短文でない文章の「物申してる感」が相対的に高まったことも自分の枷になっている。140字でも喧々諤々なのに何百字何千字となれば如何にも主張してる感が漂う。というか、「こちらに向けて主張してきている」という捉え方が一般的になりつつあると思う。ブログに日記を書く人は随分減ってしまったと思うが、実際気楽に日記を書いて良いのか悩んでしまうところがある。「目立たないものは無視される」というだけなら全然平気なのだが、大したことじゃないのになぜか袋叩きに遭っているという光景を何度も目にしていると、無視に留まらない何かが起こる不安が拭えない。無名の人間の辺境ブログの癖にそんなことを気にするのか、というのはあまり意味のない指摘である。この傾向が大きく変わることはないだろうから、このことには何らかの割り切りが必要だろう。あるいは恐れないための工夫。
 楽さや恐れのためにTwitterでごまかしていたような面が確かにある。そうして他のサービスではなくTwitterを開いている時間が増えるから、結局Twitterを「見過ぎる」ことにもなり、余計なものを視界に入れてしまうことにもなる。Twitterではない形でできることがあるのではないか?

 私は真に何を欲してTwitterをやっていたのか。Twitterの後にもどこかで得たいと思っているものは何か。Twitterじゃなくてもまあ「不便」さえ乗り越えればどうにかなる、というものは除いたとして、やはりTwitter的な形態が唯一無二だと感じられる要素は何なのか。
 発信側と受信側とで「惜しさ」を整理したが、それらの惜しさが合わさっているところ、つまり発信と受信が混ざり合っているところにTwitter的なものの代えがたさがあるのだろう。自分の発信が自分の受信を生む状態とも言える。自分が何かを発信し、それを相手が受信して発信に変え、それを自分が受信してまた発信に変える。これは会話とは少し違う。互いに相手めがけてボールを投げあっているのではなく、それぞれが全方位に電波を出したのを勝手にキャッチしているということである。情報の海のただ中にいるからこそ「会話」ではなく「全方位に電波」になる。会話は会話で必要なことだが、それはTwitterじゃなくてもいい。
 月並みな喩えかもしれないが「種を蒔く」ようなものだとも思う。種をパッと蒔いて、誰かとの間で芽が出るかもしれないし、複数人で水をやって育てることになるかもしれないし、後から自分で発芽させることもあるかもしれない。予め話題が決まっているのではなく、誰かと繋がる予見があるわけでもなく、ただ種を蒔き、そこで何かが起きたり起こらなかったりするということ。そして他の人が蒔く種を見たい。
 最初の方で書いた、「自分の内面を自分で引き出す」という体験もTwitter的形態が都合が良いものではある。ただ、それが種蒔きと一緒の場である必要はあまりないかもしれない。自分の内面を引き出すためにやっている時というのは、あっちこっちで芽が出られても困る場合もある。書きやすさの面でTwitterは都合が良かったが、本当にTwitterでやるのが正解ではないかもしれない。自分の発信が生んでいるのはまた自分の発信であり、他者の受信・発信を通して自分の受信が豊かになっていくというサイクルを作り出していないのだ。
 ましてや、溜飲を下げるためのぼやきを垂れ流してしまうのは自分を嫌いになるだけだ。自分が使っているものを自分で嫌な感じにしてもしょうがない。(ぼやき自体が駄目という話ではなく、ぼやくことができるのは自由の証明でもあるだろうし他の人がぼやいているのは別に構わないのだが、自分にとって自分のぼやきに納得感がないということだ。)
 Twitter的なものでなくてもいいことは、自分のブログなりサイトなりに場を移すことを考えて、本当にTwitter的でなくてはできないことに集中して「やっぱこういうのは良いよな」と思えるようにする。自分の態度をそのように整えた上で、今後種々の短文投稿サービスがどう進展していくのか探っていったらいいだろうと考えている。

 結局、企業や施設、各種サービス、クリエイターなどが「アカウントを作るならここ」と考える場所がどこかに定まってくれないことにはどこだろうが納得できないのだろうし、少しでもそういう意味でクリーンなところを自分も選択したいと思う。いずれにせよ時間が必要だろうし、展開を待っている間に自分のサイトを作ろうかなと思っている。
 

2023/04/10

NTA-DIY:2ヶ月目①~アウトライナーを自作してみる~

 二ヶ月目の話に入っていきます。JavaScriptの勉強を開始して丸一ヶ月でアウトライナーの自作に挑戦しました。


 NTA-DIY:1ヶ月目⑩~初めてのノートテイキングアプリDIY~で書きましたが、一ヶ月が経つまでに多少独自性のあるメモアプリ的なものを自作するところまでたどり着きました。
 発想を具現化できる取っ掛かりをちょっと掴んだことで、色々なアイデアが思い浮かぶようになりました。少し前まで「JavaScriptって何が嬉しいの?」と思っていたNTA-DIY:前日譚②~JavaScriptを書けると何が嬉しいの?~わけですが、「超嬉しいじゃん!」という心境です。
 そんな中でふと、アイコンをクリックするとul要素が display:none; になるようにすればアウトラインの形は作れるな、と思い至ったことで、試しに作ってみようと考えました。最初から既存のアウトライナーを代替するものを作ろうと意気込んでいたとかではなく、思いついたから試さずにいられないという気持ちで取り組んでみたわけです。
 とはいえ、ただアウトライナー機能を再現しただけでは面白くないので、既存のアウトライナーに対して抱えているもやもやを解決するアイデアを実践できたら尚良いと考えました。こうして軽快な足取りで無謀な挑戦に踏み出してしまいました。

 私が普段アウトライナーを使う中でうまくいっていなかったことのひとつが、「引用をメモする」ということでした。例えば、太宰治が『正義と微笑』の中で書いた「真にカルチベートされた人間になれ」という一文をアウトライナーに書いておきたいとします。これが『正義と微笑』の読書メモの中なら話は難しくありません。「太宰治著『正義と微笑』」というような項目の下にペーストすればそれで終わりです。引用だとわかるように括弧で囲むか「> 」などを頭に入れるかすれば混乱は生じないでしょう。
 しかし引用は必ずしも読書メモのひとつとして書くわけではありません。WebページやTwitterなんかから取り出すこともあります。そうなると、然るべき親項目というのが無いパターンが発生します。形式的に「引用」とかいう項目の下位に「Twitter」などと作ってその下に貼り付けるというようなこともあり得なくはないですが、無意味に階層が深くなりますし、デイリーの項目を使っているならその中に書きたいこともあります。他のトピックの中に存在していてほしいこともあります。なんにせよ引用部分を親項目に囚われずに自由に移動させられたらその方が良いです。
 では、「真にカルチベートされた人間になれ」という項目の下に「太宰治」「『正義と微笑』」といった情報を入れてしまえばよいでしょうか。それはひとつの解決策で、それでいいと思えばそれでいいだろうと思います。ただ個人的には、それらの情報は「下位項目」なのかと考えた時に、ちょっと違和感を覚えてしまうところがあります。それらの情報が、他の「下位項目らしい下位項目」とフラットに並んでしまうことへの違和感です。これはごく個人的な感覚の問題に過ぎないことなので、その構造はおかしいとか言いたいわけではありません。単に私個人の納得いかなさを解消するために、私は自分で工夫しなければならないということです。
 もうひとつの解決策として、ノート機能を使って書くということがあります。これはとても現実的な方法です。それでも良いには良いのですが、しかし個人的にはすっかり納得できるわけでもありません。ノートを表示していると情報量が無闇に増えて煩わしく、畳むと今度はノート部分にどういう種類の情報を入れたのかがわからなくなるという問題があるのです。
 いっそのこと、全部項目に突っ込んで「「真にカルチベートされた人間になれ」(太宰治『正義と微笑』)」などとする手もあります。出典部分が短ければそれほど違和感はありません。ただ、どこかのWebページの一節みたいなことになると同梱はちょっと苦しい感じがします。普通にあり得るやり方ですが、ベストではないように感じてしまいます。

 要するに、ノードにメタデータを自由に設定できて、且つ、それらのメタデータの存在がひと目でわかるようにしたかったのです。
 それができるアウトライナーはひとつもないのでしょうか。いえ、少し前にメタデータの設定が可能なアウトライナーが誕生していました。Dave Winer氏のDrummerです。おそらくですが、メタデータを利用したスクリプトを自分で書けばメタデータの内容をアウトライン上に可視化することも可能だろうと思います。多分スクリプトによって可能になることは無数にあり、Drummerには果てしのない可能性を感じます。
 よって、自分の要求を満たすにあたり、Drummerをバリバリ使い倒すという選択肢もありえます。しかし当時はごく簡単なコードしか書けませんでしたし、Drummer用のメソッドの仕様を見ても何がなんだかわからなくて何もできませんでした。Drummerのデザインや操作感の癖に馴染むのが容易でないということもあり、とりあえずDrummerそのものを自在に活用するという道は諦めました。
 じゃあ、自分で作るしかないよね、ということになるわけです。

 ついでに、一般的なアウトライナーへの不満として「1カラムしかない」ということがあったので、その解決も試みます。画面の高さより離れた位置にあるノードを参照するにはいちいちスクロールしなければならない煩わしさをどうにかしたかったのです。なお、今なら例えばRemNoteは複数ファイルの同時編集が可能です。

 当時作ったもののスクリーンショットを貼っておきます。

画像

 実際にアウトライナーもどきを作ってみると、まあ一筋縄ではいきませんでした。
 アウトライナーっぽい動き(開閉やインデント)の再現だけなら、クリックイベントとキーボードイベントさえわかれば可能なので、それほど大変ではありません。「おお、『っぽい』ぞ」という感動は割と早く得ることができました。
 しかし、「編集したデータの管理」と「ドラッグアンドドロップ処理」を実装するのにはかなり頭を悩ませました。アウトライン操作というのは実装すると色々なイベントを実行することになるわけですが、どのタイミングでどうやってデータを更新するのかをきちんと考えなくてはなりません。
 おそらく最もシンプルなのは、DOMツリー自体をデータと見なして、それを丸ごとデータとして保存することです。アウトライン部分が入ったul要素のinnerHTMLをlocalStorageに突っ込むということです。確か最初はそうしていました。リロード時にはそのままul要素のinnerHTMLに代入し、中身のli要素などに各種イベントリスナーを設定する処理をしました。必ずしも処理が単純になるわけではありませんが、データの形式を考えずに済むという利点はあります。階層構造をどう管理したらいいのか当時はよくわかっていなかったのです。
 データの管理を複雑にしたのは、「メタデータがある」ということと「2カラムである」ということです。データの形式としてHTMLを使うとなると、メタデータの管理のためにはHTMLのカスタム属性を駆使する必要があります。そして2カラムあると片方のカラムの更新をもう一方に反映させなければなりません。一言で言うととにかく無謀だったのですが、しかしそれがモチベーションになっているわけなので、なんとか頑張って実現するしかありません。
 そこに更にドラッグアンドドロップが加わります。ドラッグアンドドロップ処理というのはなんとも複雑です。ドロップ時の処理が判別できるようにドラッグ中にスタイルを変更するようにしたのですが、そうなると「dragstart」「dragover」「dragleave」「drop」の四つのイベントをセットすることになりました。
 そして階層構造になっているもののドラッグアンドドロップなので、親要素を子要素の中にドロップするということを禁じる必要もあります。あっちもこっちも初めて知った概念の連続で、数限りないエラーと格闘する羽目になってしまいました。
 このブログは体験談として書いているので具体的なコードの説明はここではしませんが(別の機会にする可能性はあります)、とにかく沢山の試行をして無数のエラーを出しました。どれだけ失敗してもリスクはゼロなので気楽なものです。コードは最終的に1100行くらいになりました。
 一応形にはなりましたが、とても「出来の良いツール」とは言えず、処理の信用ならなさが自分でわかっているのでしっかり実用したわけでもありません。しかし「こういうものが作りたい」と思いつきさえすればある程度は脳内を再現できるという手応えを感じました。当時このツールを作ったことについて「気分としてはメタルキングを倒した感じ」と表現しましたが、今振り返ってもそうだなと思います。

 当時作ったものを全面リファクタリングしたサンプルがTwoColumnOutlinerにあります(例によってPC用です)。なお上記のスクリーンショットは当時のもので、今回のサンプルとはあちこち違っています。

 以下は「2ヶ月目」の話ではない余談です。
 コードの説明はしないと先述しましたが、サンプルはなるべくまともなコードに改めた上で公開すると決めているので、今回も頑張って書き直しました。
 これがおそろしく大変でした。「エラーの恐怖がつきまとうが一応動く」という状態から「エラーの不安なく動き、メンテナンスとカスタマイズが比較的容易である」という状態に自分なりに書き換えたわけですが、データの管理やDOM生成はどうするのが良いのか一から考え直すことになり、設計するのに想像以上に時間がかかってしまいました。
 結局、サンプル版では当初搭載した機能の半分くらいしか実装していません。いずれもこうすれば実装できるという見通しはついていますが、このツールを今後自分が使っていく予定は今のところないので、費やすに値する時間と労力の兼ね合いから再現は途中までにしました。当初作ろうとしたものは、内部処理をまともな形にするとなるとかなりの手間を生じるほど複雑だったということです。
 しかし、これをリファクタリングしようとしたことで、それまで知らなかったメソッドや思いつかなかったアイデアを様々獲得しました。この連載を書くことで読み手に何かプラスがあるかわかりませんが、私自身の得るものが非常に大きいので、この先も勝手に頑張っていこうと思います。(1ヶ月目を終えてからかなり間が空きましたが、単純にコーディングに苦労していただけでモチベーションの低下があったわけではないのでした)
 

管理人

アイコン画像

のらてつ Noratetsu

キーワード

このブログを検索

検索

ブログ アーカイブ

2025
2024
2023
2022
2021