このブログは更新を終了しました。移転先はこちらです。

2023-07-23

NTA-DIY:なんでこれを書いているのか考え直す

 自分のシリーズ記事について自問自答してもいいだろう、そしてそれを記事にしてしまってもいいだろう、と思ってちょっと書くことにします。


 一般的に見てこの種の自問自答は他人にはあまり面白くないものと思いますが、まあ、自分のために書くものなので私が助かれば良いのです。


 さて、このシリーズはノートテイキングアプリケーションのDIY(NTA-DIY)体験記として書いているわけですが、本当のところ何がしたくて書いているのか、というのが微妙に曖昧だったなと感じています。

 無目的に書いているというよりは、自分の中に動機があるはずだがその動機を自分で正しく捕まえられていない、という状態でした。やりたいことがあって書いているのは確かなのに、それをピンポイントで押さえられていなかったのです。


 まえがきを今読み返してもなんとなく漠然としています。学びを書き残したいという気持ちは強くありましたが、その学びとは何なのかははっきりしていませんでした。

 プログラミングの力がほぼゼロだった状態から前に進んでいって今に至るその過程を言語化したい、というところまでは明確なのですが、あったことをただ並べているだけでそれが「伝わる」状態になるかというと、どうも違う感じがします。


 食っていけるような技術を得たわけでもないのに、プログラミングで食っている人がそこらじゅうにいる中でわざわざ体験を書く意味とは何なのか。


食うためでないプログラミング


 まず「食うためではないプログラミング」の意義について考えたいということがあります。

 今の人々の様子からすると、プログラミングで食っているプログラマー、本職は別にあるけど自作ツールを公開するくらいのことはしているサンデープログラマー、全くプログラミングをしない人、のいずれかに分かれているように思われます。つまり、「ちょっとプログラムを書く」という層が見当たらないのです。

 もちろん、そういうライトな層は発信できることが乏しいのでわざわざ発信しない場合が多いでしょうし、発信してもスキルの劣る素人の文章は話題に上りにくいという事情もあるでしょう。しかし体感として、実際に「ちょっとプログラムを書く」という層は薄いだろうと思っています。積極的にプログラミングの話をしている人以外の人々は、全然やらない、全くわからない、ということがほとんどのように見えます。

 食うためではないプログラミングをするということはつまり、プログラミングの勉強がそのまま稼ぎに繋がるわけではないということですから、プログラミングの勉強に手間がかかることと天秤にかけてもなおプラスになるイメージは持ちにくい、ということはあると思います。私もそう感じていた面があったので、ずっと手を付けないできました。プログラミングを覚えたところで、それで何をするのよ、という疑問があったわけです。

 プログラミングに無縁だった当時の自分に、今の自分が如何に自由かを伝えたい。そのために、食うためではないプログラミングにどういう意義があるのかを言葉にする必要があります。実際には過去の自分には伝えようがないので、自分と似た人間の誰か一人にでも届けばいいなという思いです。


情熱の記録


 そのように「プログラミングと無縁な自分」と「プログラミングをちょっとだけできる自分」のビフォーアフターを表現したいというのは動機として大きな要素なのですが、しかしそれだけではありません。それだけなら具体的に時系列を追って自分の体験を書き記す必要はあまりないでしょうし、直接心に訴えるような文章を目指して書いたほうが早いように思えます。

 わざわざ細かく書いているのは、読み手に何事かを伝えたいということとは別に、自分のために書く必要を感じているからです。

 自分が生きた証をこの世に残したい、ということにはさして興味がないのですが、自分で振り返って「いろいろ考えていろいろやったはずだけど、なんだったかなあ」と思う羽目になることには非常に大きな恐怖を感じています。自分の人生がどこかに飛んでいってしまったように感じるからです。全てを記録しておかねばということではないのですが、いっときでも情熱を傾けていたはずのことは、そのまま飛んでいってしまっては困ります。困る割に記憶力が弱くて全然定着せずにすぐ飛んでいってしまうので、どうにか残しておかなくてはなりません。

 書き残すにあたって、普通はそういう時こそ日記の出番かと思いますが、日記を「後から読み返して楽しいくらいの記述」程度にしっかりしたレベルで継続するのが私には困難なので、自分以外の読み手の存在を借りる必要があります。人が読むと思うとちゃんと書かなければなりませんし、またそう思えさえすればするすると言葉が生まれていくのです。


励ましというよりは


 ここまでは、前々から考えていたことでした。ですがこの二点はどうも噛み合っていません。今書いてきたように、それぞれ別の動機であって、そのままではうまく絡み合わないのだろうと思います。

 それゆえに、「書けるのはこんなもんだけど、これでいいんだろか」という気持ちがいつもつきまとっていました。自分に書けることのレベルは決まっていますし身の丈に合ったものを書くしかありませんが、読み手に手渡そうとしているものが曖昧なのはよろしくありません。

 噛み合わせるにはどうしたらいいかと考えて動機を整理した時、上述の二点がまず浮かんだわけですが、「異なる二つの動機が離れたところにあるからうまくいかないのだ」という結論ですんなり納得できたわけではありません。というのも、それとはまた別に何かあって記事を書こうとしているはずだ、という気持ちがあったからです。鎹(かすがい)となる何かがあるに違いないのに自分でそれを捕まえられていないことが問題なのではないかと思いました。では、それは何か。

 これまでの記事をお読みいただいている方はご存知と思いますが、初心者初心者と言う割に、いきなり「ツール」と呼べそうなものを作ってきました。コードはぐちゃぐちゃでへんてこですが、それなりの機能は備えているものです。プログラミングが既にわかる人からすれば大した処理ではないことは明らかなものですが、全くやったことがない人から見ると「えっ、すごい」と感じる可能性もあるのではと想像します。

 その意識の乖離を埋めたいという思いがまずあります。ただ、これまで伝えようとして何か違うなと感じていたところでもあるのですが、「ちょっとできるようになればこんなにも自由になるんですよ」というメッセージが自分の本当の思いなのかというと、どうも少しズレているような気がします。

 なぜかといえば、私がツールを作るにあたって用いているものは、「ちょっとしたプログラミングのスキル」だけではないからです。なので私と同じ程度のスキルを身につけてもらったとして、それによってすぐツールを作れることを保証することはできません。「JavaScriptの勉強をたった一週間やるだけでこんなこともできるんですよ」という話をするとすれば、それはちょっと詐欺臭い感じがします。

 できるとかできないとか、そういう観点での励ましをしたいわけではないのかもしれません。励ましになればそれはそれで大変嬉しいのですが、「あなたもできるよ!」という話をしたいというよりは、「既存のツールにもやもやしているくらいなら自分で作ったほうがいいのかも」という気持ちを後押ししたいと感じています。


自分にできることは「選ぶ」だけではない


 立派なプログラマーが作った立派なアプリケーションが多様になるにつれ、「その中から選ぶ」ということがますます当たり前になっています。色々なものがあるので、その中のどれかひとつくらいは自分に合うような気がしてしまいます。今はまだなくても、待っていれば誰かが自分にぴったり合うものを作ってくれそうな気もします。親切で気の利いた開発者が世の中にたくさん存在しているのを知っていながら、敢えて手間をかけて自作する、なんていうことはもう考えにくいのではないでしょうか。会社で使うアプリケーションが定められていれば尚の事です。

 しかし、これまでの実感からして、本当に待っていれば自分にぴったりのアプリケーションを誰かが作ってくれるかというと、正直に言ってそれは望み薄だろうと感じています。ビジネスとして成り立つためには、リリースするアプリケーションは汎用的なものにならざるを得ず、個々人の痒いところに手を届かせるには限界があります。今は有志がプラグインを開発してそれを拝借するという形が当たり前になりつつありますが、どれだけ多様性が増していっても、自分が欲しい機能を必ず誰かが作ってくれるわけではありません。どうしたって、「これがあればなあ」「この機能のここがこうなっていればなあ」というちょっとした不満を抱えながら我慢して使わざるを得ないのです。(奇跡的に自分の要望を完璧に満たしてもらえることもあり得るにはあり得ます。)

 そうなった時に、「自分にはどうせ作れないし」と悄気げるのではなく、「やってやろうじゃねえか、ええ?」と思っていいのだぞ、ということが私の言いたいことの核にあるような気がしてきました。例えばアウトライナーがほしいと思ったら、まだそんなスキルはなくても、作ろうと思っていいわけです。作ろうと思えばいずれ作れます。「どうせ」とか言っている場合ではありません。作るったら作るのです。

(念の為言い添えると、何も「不満を言ってないで自分で作れ」と迫っているわけではありません。作るも作らないも自由なのであって、作るためのコストが収支としてマイナスになるなら挑まない方が賢明ですし、自力で作らないでいるのは悪だとかいうことではないです。)


いきなり作れ


 で、自分で作ってやろうとなった時に、「まずJavaScriptの知識を一通りインストールして…」と座学を決め込む必要はありません。もちろん基本的な文法については学ばなければ何もできませんが、解説書の最初から最後までまず読み通してから、などと考え始めると自由を得るまでが遠すぎます。そもそもそんな簡単に「一通り」勉強できるようなものではないので、如何に早く見切り発車してしまうかが大事だと個人的には思います。何事も子どもの習得が早いのは、全貌なんか気にせず知識を得次第に行動するからでしょう。

 また、初心者のうちに「他の人のコードを参考にしよう」とは考えないほうが良いです。工夫が凝らされた実践的なコードというのは初学者には到底読めません。積み木遊びしかできないのにタワーマンションの図面を解読しようとするようなものです。頑張っても「全然わからない」という気持ちに覆われるだけでしょう。読んでないで作るのです。おみくじを作る、じゃんけんを作る、トランプゲームを作る、メモアプリを作る、タスク管理ツールを作る、やれることは色々あります。どんどん作るのです。

 そして「じゃあこんなこともできるのかな?」と何か思いつけば、もうそこに「これまでこの世に存在しなかったツール」が誕生するのです。それを作れる人は無限にいますが、誰も作らなかったからこの世に存在していなかったツールを、他ならぬ自分の手で作り出したことになります。別にそれは世界初のひらめきというわけではないでしょうが(それはそう)、少なくとも自分の視界を作っている世界の中では見当たらなかったものを自分で作り出せたなら、それは結構嬉しいことで、そして結構すごいことです。

 というようなことを、私は記事を通して伝えたいのだと思います。


行きあたりばったりな紀行文を目指す


 誰かの旅の話を聞くとします。事前に綿密な計画を立て入念に準備を整えて決行に至った旅の話も興味深いですが、行きあたりばったりで(あるいは想像とあまりに違っていたために)全てが偶然の出会いとして語られるような旅の話はわくわくします。冒険譚のような感じがするからでしょう。

 実際の旅を行きあたりばったりにやるのはリスクが高すぎるのでそうそう真似できませんが、もっと身近なことを十分な予備知識なしにやってみることはできます。例えばオモコロの「やってみた」系の記事は、たまにシェアされてきたのを読んでみるといつも楽しさと驚きに満ちています(昔のニコ動もそういうのが面白かった)。いずれも本気でやっているので準備は入念になさっていることが多いですが、予備知識があるはずもないものに挑むわけなので、やっている本人が一番びっくり、みたいなことがたくさんあります。

 何かしら「やってみたらこうなった」という要素があり、そこに何らかの面白みが伴っているとわくわく感が生まれるだろうと思います。実際、自分がプログラムを書いている時というのは、(サンデープログラマーはきっとみんなそうですが、)ふと思いついたことを試しにやってみてその結果に感動したり心躍らせたりしているわけです。その気分を共有しなくては書いた甲斐がありません。オモコロのような高度な愉快さを提供できるわけではありませんが、兎にも角にも目指してみなくては話は始まらないでしょう。

 現状は「記録」あるいは「説明」といった様相なので、もう少し切り口を工夫した方が良いのかもしれません。とはいえ説明的に伝えなくてはならない要素が多いので、切り口を変えて改めて語り直すということもあり得ると思います。もしくは、説明的な部分を註にするのもありかもしれません。ブログを書いていて註をつけたことがなかったので今の今まで思いついていませんでしたが、文脈から外れる要素はそうやって話の外で補えばスッキリさせられそうです。


 やっているうちにだんだん雰囲気が変わってくるとか、同じ話を繰り返したいだけ繰り返すとか、そういうのを防いでしまう必要はないわけですから、しっくり来る表現を探しながらふらふら書き進んでいきたいと思います。



このシリーズ記事の概要はこちら→ノートテイキングアプリDIY体験記