Perl 7 年の時を超えてリャマを書き終えました (d165)

セラ (perlackline)

2020年07月02日 22:37

目次 - Perl Index


Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その d165 回。

今回はこれまで当ブログで書き続けてきた「 リャマ 」(Llama) のイラストについての記事です。2013 年 8 月から書き始めて 2020 年 6 月に書き終えるまでの 7 年間をまとめました。




記事とともに掲載している画像 (イラスト)



これまでこのブログの各記事トップに毎回掲載されてきた画像は、プログラミング言語 Perl の入門書「 初めての Perl 」の表紙に掲載されている動物の模写です。





表紙の動物は「 リャマ 」(Llama) で、この書籍は「 リャマ本 」として広く知られています。

このいわゆる O'REILLY のアニマル本の装丁は Edie Freedman によるものです。リャマのイラスト自体はドーヴァー出版 (Dover Publications) の版画図版集「 Animals: 1,419 Copyright-Free Illustrations of Mammals, Birds, Fish, Insects, etc 」から採用されているようです (Google ブックスのプレビュー)。"Copyright-Free Illustrations" というのがまたよいですね。

リャマの模写画像は、2013 年 8 月 20 日の記事にあわせて書き始め、以降 Perl に関連する記事で必ず掲載してきました。


リャマを描き始めた経緯



以前勤務していた会社ではブログポータルサイトの運営を行っていました。

僕自身はブログポータルサイトの運営とは異なる部署で勤務していましたが、会社の方針として部署に関係なく全社員がブログを開設して勤務時間内に最低 1 日 1 記事をアップロードすることが義務付けられていました。

さらに、ブログポータルサイトの機能として写真をフィーチャーしていたため社員の記事には必ず写真を掲載するというルールがありました。

当初は身の回りの出来事を記事にするよう心がけていましたが、レンタルサーバの運用・サポートという仕事柄 1 日 1 記事の作成ペースに見合う日常のトピックは早々に枯渇しました。

業務においては多くの学びや発見がありトピックに事欠くことはありませんでしたが、業務にまつわる情報をブログ記事として公開することはセンシティブで難しく、また面倒であったのです。

そこで僕は適当なネットニュースを拾って適当な記事を作成するようになりました。画像は関連するものをネットから拾って張り付けるスタイルです。しかし、そのように適当に拾ってきた画像を自分のブログに掲載するのは著作権的に問題がある可能性を社内で指摘されました。当然ですね。

1 日 1 つの記事を作成すること。それに関連する画像を用意すること。この縛りはこの会社に在席する限りこの先もずっと続きます。

どうすればよいか考えた結果、まずはブログ記事の作成自体をより有益なものにしようと思い立ちました。具体的には、自発的に勉強していて面白くかつ業務に役立つプログラミング関連の分野を記事にすることです。その対象としたのがプログラミング言語「 Perl 」でした。

Perl は最初の記事を書いた 2013 年当時でも「 終わった言語 」扱いでしたが、当時担当していた業務に深く関連する言語でしたので特に迷いはありませんでした。Perl の勉強をすることは個人的なスキルアップであると同時に担当業務の理解を深め会社への貢献度を高めることにもつながります。

これ以前の記事作成は単なる負担でしたが Perl 関連にフォーカスすることで対象作業への整合性のとれた個人的な動機付けができ、結果として作業量 (負担) が増えたとしてもより充実した記事を書きたいと思うようになりました。また、メインの業務とブログ記事作成の間でほとんどコンテキスト (文脈) を切り替える必要がなくなったので作業効率が上がりました。

記事の内容は当時読み進めていた書籍「 初めての Perl 」の内容を逐一確認・検証して、理解できた内容を書くこととしました。「 初めての Perl 」が終わっても「 続・初めての Perl 」がありますし、それが終わっても Perl に関する書籍は多数あります。仮に Perl 関連の書籍を網羅できたとしてもプログラミング関連の技術の学びに終わりはないので、それ以降で記事のネタが枯渇する可能性は限りなく低くなりました。

問題は記事と共に都度画像を用意しなければならないことです。

普通に考えれば記事の内容に関連する適当なプログラミングコードを打ち込んだターミナルのスクリーンショットでも用意して張り付ければよいのですがそれでは面白くありません (面白い必要はない)。

実のところ僕は絵を描くのが嫌いではありません。好きだといわないのは、学生時代に出会った本当に絵を描くことが好きな友人のナチュラルな姿勢を目の当たりにしたからです。なるほど僕は絵を描くことは嫌いではないかもしれないが好きというのははばかられることを知らされたのです。

実のところ絵を描くことが嫌いではない僕は、適当なネットニュースを適当に記事化していたころから適当な写真を Microsoft のペイントソフト「 ペイント 」(以下 MS ペイント) でサっとイラスト化し、それを画像として記事に掲載していました。適当に拾った画像をそのまま掲載することによる著作権的問題を回避するためとクロッキー的な作業を通じてすこしでも絵がうまくなれば嬉しいと考えていたのです。

たとえば、某ピノキオや



某ギャラクシー



エンチャントムーン



焼き魚



それから某ケンなど




このような流れの中で目に付いたのが「 初めての Perl 」の表紙にいたリャマです。


構想



ドーヴァー出版 (Dover Publications) の版画図版集「 Animals: 1,419 Copyright-Free Illustrations of Mammals, Birds, Fish, Insects, etc 」から採用されているリャマのイラストは、非常に細密な線画 (版画) です。



これの模写はかなり大変そうに思えましたが、その工程をそれぞれ画像化して逐次ブログ記事に掲載していけば、それなりの期間において画像の選定に悩むことはなくなるだろうと考えました。

目的は画像選定の負担をなくすことなので、シャカリキになって絵を完成させる必要はありません。むしろリャマを模写する時間は長ければ長いほど良いのです。

コツコツと続けていればいつかは終わりを迎えるだろうけれど、しかし少なくともその時までは画像の選定という負担から解放されることは保障されます。また、作業工程の画像をまとめてスライド化すればそれなりに興味深い作品のようなものができるかもしれない。そうであれば一石二鳥 (何が?) だと思い僕は淡い構想を企画したのです。


最初期



一番最初にリャマの模写に手をつけた 2013 年 8 月 19 日当時、実際にはそれほど具体的な構想はありませんでした。ですから、画像の構図がバストアップのようなものになっています。元絵があまりに細密なので全体像を描くことを躊躇していたのかもしれません。




しばらく描き進めて構図を変更します。





あまりにラフに描き進めたので、描き始めからわずか 20 日程度、17 枚の画像で全体を描き終えてしまいました。




さすがにこのクオリティで「 あのリャマを描いた 」とは言えません (言いたくない) し、これで終わってしまうと次回からは再び画像選定の必要がでてきます。ですから、もう少しまともに模写することを決めて修正に入りました。前項の「 構想 」はこの辺りでまとまったように思います。





ループする世界



修正を初めて約 3 ヶ月後にはひとつの完成を見ました。




それなりに似せて描いたものですが、しかし元絵と比較すると毛並みのバランスがあまりにもおかしいと思えたので、自然と修正を続けました。




腰から腿にかけての毛並みが特徴的に見えたので、より詳しく描くことにチャレンジしました。




細部に集中しすぎてバランスが大幅にズレていることに気が付き、再びイチから毛並みを描くことにしました。




全体のバランスに配慮しながら描き進めます。




割と良い感じで描けているように思います。




なお、ここまでの間で前職は退職していました。ですから当初の構想にあった「 画像選定に悩むことをなくす 」という目的も失われました。というよりも、ブログを継続すること自体の義務がなくなりました。

とはいえ僕はブログをやめるつもりはありませんでした。プログラミング関連の知識や技術を身につけることは単に楽しいことですし、記事として知識を公開する前提を置いておくことで、できるだけ間違いのない情報を探すことや、見知らぬ人 (または未来の自分) が読んでも理解ができる文章をまとめるといった作業の良い訓練になると実感していたからです。

リャマの模写はどうでしょう。続ける意義はあるのでしょうか。自問自答の結果「 最後まで完成させた結果を見てみたい 」との結論にいたったので続けることにしました。

約 1 年半後。前職在籍時よりも更新頻度は減ったとはいえ、のんびりと幾多の修正を繰り返しながらそれなりの絵が見えていました。




毛並みを描いてはバランスをみて修正をします。描けば描くほど、時間を重ねれば重ねるほど技術も目も良くなります。

以前よりもうまく描けているのは確かですが、うまくなるほど元絵との違いを許容できなくなりました。約 1 年後にはまたやり直しをはじめます。




2013 年の 8 月から描き始めて約 5 年。この頃になると、ブログ記事は出来ているのに模写が進展しないので公開できないという本末転倒した状態が発生するようになっていました。いつのまにか模写を続ける歳月が呪いのように自身を縛っていたのです。


見えない終わり



どれだけ時間がかかっても気にするものではないとして模写を始めたものの、5 年も経てば「 終わらせたい 」気持ちが芽生えてきました。僕は意を決して、完成を目指して、再びイチからの描き直しを始めます。

完成を目指すわけですからこれまでよりもずっと労力をかけることにしました。ソフトウェアは MS ペイントの利用を継続しますが、ハードウェアにはペンタブレットを導入しました。マウスは絵を描くためには作られていません。




約 1 年後。かなり納得のいく感じで筆が進み、いよいよ完成への道筋が見えてきたように思えました。




しかし、技術が高まればやはり目もよくなるのです。細かく忠実に描けるようになればなるほど、これまで見えなかった元絵とのズレが見えてきます。機能の少ない MS ペイントの制限もあって少しの修正が全体に影響を与えます。結果として手戻りが延々と繰り替えされました。

約半年後。僕はひとつの決断をします。この終わりの見えない作業を終わらせるためにブログの更新を一時的に停止して模写に集中することにしたのです。僕はこの円環からの脱出を心の底から願っていました。





悟りと祝福



僕は相当に集中して、相応の労力をかけてリャマの模写を終わらせることに注力しました。しかし、その注力度合いに比例して各部の粗が浮かび上がります。これまで積み重ねてきた歳月が半端な妥協を許さない重荷となっていました。

絶望の岸が何度も迫りくる中で「 それでも 」と完成への思いを込めて筆を進めます。

2020 年 5 月末。見えない終わりを目指してただひたすらにリャマを描き続けていたとき、僕は僕にあることが欠落していることを気づきます。それは「 締切り 」です。

歳月に呪縛されていた僕には「 締切り 」という強制的な終了地点が必要だったのです。そうして僕は「 締切り 」の効果を理解します。

そこに「 締切り 」があればこそ、ここに「 完成 」が生まれるのです。

僕は僕の締切りを 6 月末と決めました。

しかし、だからといって安易な妥協はできません。歳月の呪いはいまだ僕を拘束しているのです。ではどうするか。模写を続けながら僕は考えました。

2020 年 6 月 6 日。僕はリャマをドットベースで模写することを決めました。

リャマの図版は画像データとして参照し模写していました。リャマの画像ウィンドウを MS ペイントのウィンドウに並べて模写していたのですが、細部を取りこぼさず正確に模写するために時にはかなり拡大して写し取りたい線を確認していました。

画像データがドットからなっていることは当たり前のこととして知っていました。しかし、いくら適当にデータ化した雑な画像とは言え 1 ドット単位で追跡して写し取るという発想はありません。直感的に作業量が膨大になると感じていたからだと思います。

振り返れば僕はここまでかなり長期にわたってリャマの模写に取り組んできました。手を付け始めたのが 2013 年 8 月ですから、2020 年の 6 月で約 7 年です。ドットベースの模写は確かに大きな作業量に感じましたが、果たしてそれは 7 年の歳月を要するだろうか。

僕はお腹当たりの複雑な毛並みに対してドットベースでの模写を試してみました。対象になる画像のドットは次のようなものです。



作業量は確かに小さくないように思えました。すべてのドットを追跡して模写するとなるといったいどれだけの作業量になるのだろうか。未知に対する素直な不安がよぎった時、僕の経験がこう囁きました。

「 1 ヶ月でいける 」

呪いとなっていた 7 年の歳月が祝福のブレス (bless { term => $month }) に変わった瞬間でした。




ドットトラッキング



僕は確信をもってドットベースの模写を進めました。

模写は白いキャンバスに黒い線で描く完全な二階調なので、アンチエイリアスに使われている複数階調のグレー部分をどう処理するかなどある程度の迷いはありましたが、形をしっかりとれるドットや範囲を誤認しにくいドットを都度選択して追跡するようにしました。

途中で 1 ドットのズレを原因とする手戻り作業が発生しました。気を抜くとそれなりに面倒な事態になることを理解して慎重に作業を勧めました。楽ではありませんが以前とは比較にならないほど希望に満ちた作業でした。




全体のドットトラックがひと段落ついたのが 6 月 25 日でした。想定通りの進捗です。




ドット単位で完全に写し取ったので、各部のバランスに間違いはありません。あとは出来る限り濃淡を再現すれば完成です。


ムービー



これまでの全ての工程を動画にまとめました。ファイル総数は 1,235 個です。BGM は昔に波形編集ソフトで作った雑だけどお気に入りのトラックです。




作業を終えて






リャマの模写は終わらせる必要のない気楽な作業として始めました。でもそれはいつのまにか終わらない作業になっていて、気づけば抜け出すことができない歳月の呪縛になっていました。

しかしそれでも歩を進めれば、いつしか呪いが祝福に転じることを知りました。情報 (データ) と手法 (メソッド) の正しい紐づけ方を理解すれば、そこには祝福のブレスが吹かれるのです。

2013 年 8 月 19 日ぼんやりとはじまった僕のプロジェクトは 2020 年 6 月 30 日に完了しました。

できあがったリャマの絵は満足のいくクオリティです。しかし模写の作業を突き詰めていけばそこにあるのはデータのコピーです。完成したリャマの模写も複数階調のグレー部分まで再現すればより完全なコピーができあがるでしょう。

今回のリャマは最終的に画像データのドットを追跡 (トラック) する手法で終わらせましたが、これは細かいグリッドを使った模写と同じことです。

終わらないループにハマっていた間はとても辛かったので、素朴な MS ペイントを放棄してソフトウェアを変更し、レイヤを使って画像を重ね、安直なトレースで終わらせてしまいたい気持ちにもなりました。

そうしなかったのは、フリーハンドでもがきながら答えを探すその工程に価値を置いたからです。おかげで当初の構想通りもがきあがいた線の軌跡が時間の厚みとあわさって興味深いものになりました。

リャマの毛並みを観察しては描き、ズレを見つけては描き直すという作業を何度も繰り返しました。元絵のリャマは 7 年前から何の変化もありません。でも僕の目は明らかに変化しました。

初期の線を今の視点で見ると元絵の毛並みをまったく捉えられていないことがわかります。全体像の情報に僕の処理能力がついていけていないのです。

描けば描くほど僕の処理能力は高まりました。同時に僕の内部に写し取られる情報の解像度も高まります。しかしそうなると今度は僅かなズレ、つまり小さな差分が見逃せなくなりました。前より少しでもうまく描けたとしたらその分だけ新たな差分が見えるようになりました。そうして僕は抜け出せないループにハマりこんでいったのです。

2020 年 5 月末。締切りを得た僕は「 期限 」と「 クオリティ 」と「 作業内容 」のバランスを試みました。

ここまでやってきた歳月の呪縛があるので半端なクオリティで終わらせることはどうしてもできません。かといって期限はあと 1 ヶ月後に設定してあります。これまで通りの作業内容では絶対に完成しません。

そこで僕はドット単位の模写を実行することにしました。というよりも本当は順序が逆で、終わりを目指して集中していたら自然とドットを追いかけはじめていたことに気がついたのです。

ドット単位で模写すれば、たとえそれが大きな作業量であっても必ず終わりに至ることが保障されます。あとはその作業を期限内に終えられるかが焦点になりました。

試しにドットのトラックを意識してみるとこれまでのループを脱出した確実な進捗がえられました。この進捗具合なら勝てると確信を持てた瞬間です。

正直に言えばドットをトラックすることなくフリーハンドで完成させてみたかったと思っています。でもこの心残りこそ、何かしら次のステップへの動機になるのだと思います。



extra






















NEXT



次回は、ディストリビューション周辺の情報をまとめます。


参考情報は書籍「 続・初めての Perl 改訂版 」, 「 Effective Perl 第 2 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index
































































関連記事