作る才能?それは欲望と傲慢さじゃないかな?

今回はテーマに引きずられていつもと少し文体を変えよう。僕は創作には根本的な欲望と傲慢さが必要だと思ってるからだ。それを才能と定義するならそうなのかもしれない。

発端

発端は[自炊の余禄]創作を推進する最重要エネルギーの一つはパクリじゃないかということ(その1) - しいたげられたしいたけというブログ。深みをもった知見、おもしろいなーと思いつつ、ちょっと気になった点があって僕は『創作って、どのジャンルでも真似から始まるのでは? / 創作できる人とそうじゃない人の違いは才能ではありません。「一つ作り上げたかどうか」だけです。 創作できる人というのはスタート地点に立った人か否かです』というブコメを書いた。

「創作ができる人」と「できない人」の違いは何だろうと、ずっと考えている。私は「できない人」だ。また圧倒的多数が、そうだと思う。「才能のある人」と「ない人」と言い換えることもできる。それを言っちゃあおしめえよ、というやつだが。

創作・クリエイティブは、ある種の特権的なものであるという意識を皆持ってるのかなーという気はしてて、古い友人なんかが作れる側と作れない側をわけたがる感じだったなーと思い出してりしてたけど、ほんとにそうなのだろうか?現代は創作するためのツールも、発表するための場も充実している。特別じゃない人が創作をする壁は昔より遙かに低い。敷居があるとすればそれは個々人の心理的な障壁ではないだろうか?

発端のブログに対して、パクリと模倣とオマージュと - *魂の次元*という別のブログで言及されていて、僕なりに作るって何?というのをまとめたくなったので、今回記事を書いた。

創作をできる人とできない人の違いは、苦労を厭わずに創作することを楽しめるかどうかにある

冒頭にも書いたように「欲望を抱いて傲慢になれるかどうか」だというのが僕の主張だ。(欲望に忠実で傲慢さを発揮するのが、楽しんでるという定義にできるならそうかもしれない。実際楽しんでるところはある。)

技術系のアウトプット

「創作」をどこからどこまでに範囲設定するのかはたぶん人によって違う。僕はいまのところ小説や文学を書く人ではないので、この記事では、自分の畑である技術書執筆やプログラミングを題材に話を進める。

この題材のどちらも何かしらのアウトプットを作り出す行為そのものだ。創作性がどれくらいあるか、見いだすかはものによって異なる。とりあえずは創作性を棚上げにして、ソフトウェア技術というジャンルのアウトプットの話をしよう。

ソフトウェア技術のアウトプットは、まず大まかに二つに分かれる。ソースコードそのものと文章だ。プログラミング専門で、技術にまつわる文章をまったく書かない人もいるし、ソースコードをあまり書かずに文章を書く人もいるし、もちろん両方を書く人もいる。

  • ほとんどコピペでしかコーディングできない人
  • フルスクラッチでエディタ1つ作り上げる人
  • 有名なOSSに貢献する人
  • 技術ブログを書く人
  • 有名なカンファレンスで登壇する人
  • 子どもたちにプログラミングをわかりやすく教える人

こういった人達はレベル感はさておいて、何らかのアウトプットをしてる人だ。コピペコーディングもアウトプットであることには違いない。きっとそういう人達の仕事もどこかの現場で必要なのだろう。

さて、これらの人たちはリニアな直線上に分布しているのだろうか?いやもちろんそんなことはないだろう。高次元のベクトルで表されるべきものだろう。創作力、技術力、表現力、あるいはコミュニケーション力など色々な名前のパラメータがあり、それももっと細分化した適切な何かがあるはずだ。

「技術力」というのはとてもふわふわした言葉だ。ドラゴンボールのスカウターのように「技術力」が計測できる装置があればいいのだろうけど現実的ではない。なぜなら綺麗で読みやすいコードを書くのも技術だし、高度なアルゴリズムを書くのも技術だし、なんで動いてるのかよくわからないけどスゴイという黒魔術めいたものを作るのも技術だ。人それぞれの立場と受け取り方によって「技術力」なんてのはいくらでも変わる程度の指標に過ぎない。そもそも、これらを何かの数値で簡単に示せる程度のものであればプログラマなんて人種はこの世に必要無い。プログラミングはそれほど単純じゃないからこそ技術者というジャンルが成立してこれだけ盛況なのだ。

そして、技術力が高かろうが低かろうがスタートしないと技術力なんて上がらない。むしろ技術が古びて技術力が下がるだけだ。何もしなくても技術力が上がる才能を持ってるチートなヤツは知ったことではない。(そういう人はたぶんこの文章を読む必要もない)

始めないと始まらない

始めないと始まらないというのは、人間の脳自体がもともとそういう仕組みらしい。やる気はやらないと出てこない。もしどうやっても絞り出せないなら必要なのはきっと栄養だったり、睡眠だったり休息だったり体を動かす事だろう。呼吸すること、身体感覚を取り戻すことそういうものが必要なのだろうきっと。瞑想は難易度が高いのでオススメしない。やるならちゃんとした指導を受けた方が良さそう。(自己責任だけどマインドフルネスとか自律訓練法はありだと個人的には思う)

そういった生物の仕組み以外にも「人間に見通せる未来なんてたかが知れてる」とか「最初は誰でも初心者」という話もある。アジャイルっぽいエンジニアになじみのあるもので言えば「不確実性のコーン」やスパイクという概念がある (プログラミングにおいて大切な  ‘スパイクを打つ’とは?)。やらない限りは上達しない。

始める時は誰でもへたくそだ。謙虚さ、遠慮、羞恥心そういったものは、それ自体がエネルギー源になるタイプのクリエイターなら別にいいのだろうけど、僕を含めた大半のひとはそうではない。そういったハードルを飛び越えられるかだけで選別されてしまっている。

他のエンジニアと話をしてても「自分の書くコードなんて粗末で」「文章苦手で」と言う人は多い。でもそこでそういった羞恥心を捨て去れる人こそがスタート地点に立てる人だ。僕自身もともとは文章を書くのが苦手だったけど、訓練の一巻としてブログやTwitterをやりはじめたところはある。今でも得意といえるほどだとは思ってないが少なくともスタート地点から走り出してるのは確かだ。

僕も長らく罹患していたからわかるけど完璧主義というのは呪い、あるいは深刻な病だ。それをどうやって乗り越えるか?心理学的アプローチが必要かもしれないが、何らかの手段で乗り越えないと始まらない。

不完全な作品、未熟な自分、それは受け入れるしかない。書いた本に星1つ付けられたらまぁそれはその時だ。修正可能なら修正すればいいし、未来の糧、次の経験値になれば最高じゃないか。(すいません、某JavaScriptの本に関しては、修正作業中です)

最小のサイクル

プログラミングの習得過程では、多くの場合打ち込みから入る。昔であれば読者投稿のソースリストが印刷された雑誌が出ていたし、今でも「写経」と呼ばれる手法がある。この時ソースコードを打ち込むだけじゃもちろん意味が無い。そのソースコードが実際にうごくことを確認しないといけない。実際に流れを経験することで、今度はそれをサイクルにすることができる。

ソースコードを改変する → 結果を確認する → 自分の中にフィードバックが貯まる

これが現代のプログラミングにおける最小のサイクルだ。その上に「このパラメータを変えたらどうなるの?」というような応用を積み重ねていくのだ。

インプット・コンピュート・アウトプットのサイクル

アウトプットする為には必ずインプットが必要だ。完全に無の状態から何かを創造出来る人はこの世には存在しない (神様か何かなら話は別だろう)。何かソフトウェアを作る時に何の知識も要らないわけじゃない。最低でも言語処理系、APIそういった知識は必要だ。そして大抵の人にとってはサンプルコードが無いとAPIの挙動なんて理解しづらい。世の中には様々なライブラリやサービスがあり、そういったものの活用が必要なケースも多い。無の状態からそれらを全部作り出せるのか?

これまでの自然科学に基づいて解析されてきた物理法則に乗っ取った電子回路の上で計算される0と1のやりとり、OSやデバイスドライバーや様々な基本的なソフトウェアが動いている上で、コンピュータサイエンスに基づいて作られた言語処理系を使って、コンピュータサイエンスに基づい(省略)。

そういった甚大な積み重ね・背景があるからこそ、我々はプログラミングを楽しみ実践できる。OSを自作する人でも、自作する時に既存のCPUとOS上で既存のコンパイラチェーン・アセンブラを使ってるはずだ。

ではインプットをいっぱいすればアウトプットが上達するかというともちろんそんな単純な話でもない。

インプットばかりしてる人は消化不良になるのが関の山だ。最低でも自分の中できっちりかみ砕く必要がある。僕はそれをコンピュータの動作になぞらえて「コンピュート(演算)」と読んでいるが「消化」「理解」という方が一般的な呼び方だろう。かみ砕いて「これはこういうことなんだ」という理解が必要だ。プログラミングでは最小の何かを用意して実験を繰り返すのが手っ取り早い。

アウトプット、それも広く公開するのも重要だ。ソースコード・文章どちらでもいいが、まとまった成果としてアウトプットをした方がいい。それはまとまったアウトプットがあって初めてえられるものがあるからだ。ソースコードでいえばプルリクをもらう、文章なら感想をもらうという直接的なフィードバックもありえるし、そうじゃなくても、体系だってアウトプットする、というのはかみ砕いて理解する上でとても効果的だ。

ここらへんの話は以前アウトプットのメリット 僕が技術同人誌執筆をお勧めする理由 / techbook meetup let’s writing tech book Doujinshi // Speaker Deckというスライドで発表をしたことがある。

何が言いたいかというと、バランスの良いインプット・コンピュート・アウトプットが手っ取り早い上達方法だという話だ。そして、このサイクルは早ければ早いほど、数が多ければ多いほど得られる経験値は大きい。量は質を生み出す。

何かを作るときに、必ずしも特別な資格や能力、才能はいらない

そりゃ何か特別な才能、経験、知識そういったものが必要になる創作もあるだろうけど全部がそうってわけじゃない。仮にそういうものが必要な創作をしたいのだとしても、そこに到達する為に前段階として特別でもなんでもない創作を積み重ねればいいのではないだろうか?まぁこれは「始めなければ始まらない」の話と被ってしまうのだけど。

何かを作る為の土台は、スタートすること、サイクルを回し続けることだ。プログラミングから離れて気分転換することで得られるインスピレーションが必要かもしれないが、それすらもサイクルだ。作る、学ぶ、飽きる、気分転換する、渇望する、そういったサイクルの繰り返しがいってみれば作る才能・資格なのだろう。

もしかしたらそういうサイクルなしでいきなり何かを創造できるスゴイ人いるかもしれないけど、そんなスゴイ人であることが、自分の作りたい物にとって必要条件なの?

継続は才能ゆえ?

そうかもしれないし、そうじゃないかもしれない。僕としては正直よくわからない。ただ自分の事例でいえばプログラミングや技術系の文章を書くのは、僕にとっての欲望を満たすためのもの。枯渇してるから求め続けてるだけ。

僕にとってプログラミングのきっかけはゲームを作りたいというものだったがそれ自体は今回はどうでもよく、自分の中のプログラミングが本格的にスタートしたのは「既存のものに満足できない」というものだ。そしてそれは今でも燃え続けてる。「なんでこんなにクソなソフトでお前ら満足してんの?馬鹿なの?」「1970年代に生み出された哲学が未だにエンジニアの間で黒い画面の中で主軸になっているのは、後世の人間の怠慢以外の何物でもないだろ!」という気持ちが大昔から消えない。既存のものに満足できないからこそ何かを作る。ソースコードに限らない。僕が出した同人誌 (あるいは商業の書籍) にしてもそれを解説してる本が無くて許せないから書いたものだ。普通に考えると傲慢で短気という一般的には悪徳とされるものが僕のプログラミングや文章を支えている。

プログラマの三大美徳というものがある。怠惰、傲慢、短気。

オタクはなぜオタクになる?「読みたい」「見たい」「聞きたい」「飲みたい」「知りたい」「好きな作品を読み尽くしたい」「世界中にある自分の好きそうなコンテンツを余すところなく読み尽くしたい」「集めたい」みたいな欲望・渇望があるからでしょ?作るのだって全く同じだ。なんか知らないけど、止められない欲望に従ってるだけ。

満足できるんなら満足しちゃっていいと思う。僕は満足できないから書き続ける。

もし創作に才能が必要なのだというなら、そういった欲望を抱いていかに傲慢になれるかが、その才能なのだろう。

真人間のアドバイスを聞いたらスタート地点にも立てない

「そんなの金にならないから」とか「まっとうな社会人として」とか「年甲斐も無く」とかしょうもないアドバイスに耳を貸していると目的は絶対に果たせない。真人間の連中は無責任に自分の経験と感情を押しつけてるだけだ。アドバイスに従って出た損失を補填してくれるか?そんなヤツはいやしない。そんな無責任なアドバイスなんて糞食らえだ。失敗でも成功でもなんでもすればいい。一番恐ろしいのは失敗することじゃない。何もしないことだ。致命的な失敗さえ避けられればいい。致命的じゃない失敗についてあれこれお為ごかしをいうヤツはただのクソ野郎だ。

ソフトウェアの世界では車輪の再発明を嫌う人が一定数いる。自分の作りたい物においてそれが必要だと判断できれば車輪の再発明を恐れる必要もない。小賢しさは創作の妨げになることもある。自分の作りたい物に必要なだけの最小限の賢ささえ持っていれば十分だ。自分の中の真人間の言葉も鵜呑みにしてはいけない。

仮にあなたがこの世で1番弱い生き物だったとするなら、俺は2番目に弱い生き物でいい

ある地上最強(を名乗ることが許された)格闘家もこのように言ってた。

最後に

僕のやり方や知見をまとめただけなので他の人の創作論には通用しないかもしれない。才能や別の方法でうまくいく人はそれで全然問題無い。あくまで僕なりのものをまとめただけだから。

うまく休息取るなり自分のペースは重要だと思う。継続的に創作するならなおさら。自分にあったやり方重要。締め切り駆動開発とか締め切り駆動執筆は強い。人によって向いてる・向いてないはありそうだけど。

どうにかして自分に合ったやり方を見つけるしか無い。