おはよう、こんにちは、こんばんわ。ハマです。
初めての記事は私が生業にしているエンジニアのスキルの一つ、プログラミングについての私の考えを寄稿しようと思います。
これはあくまでも個人的な感覚値を言語化したものなので、全てのエンジニアにとってそうなのだという話ではないのであしからず。
プログラムを”描く”という行為
エンジニアではない人によく聞かれるのが、
「プログラムを書くってどういう感覚なの?」という質問です。
この質問の多くはデザイナーやエンジニアという生き方に興味がある人から受けました。
その質問に対して、私はこう答えるようにしてます。
プログラムを”書く”という行為は、絵を”描く”ことに似ている
私にとって、エンジニアにおけるプログラムを書くという行為は、画家における絵を描く行為にすごく似ています。
例えば、画家(あるいは絵を生業とする人、およびデザインをする人もそうですね)はデッサンする時に構図から考えます。
そのあと、輪郭を書き、マッスなど細かい部分を輪郭の中に線を使って埋めていきます。
いわゆる、外(構図、輪郭)から内(詳細)へのアプローチです。
エンジニアも同じようなアプローチを用いて、プログラムに向き合います。
作りたい機能について考えを巡らせ、全体の輪郭となる構造を書き、コメントで処理の概要などを記載したあとに、アルゴリズムを詰めていきます。
こちらに関しても外(設計)から内(詳細)へのアプローチです。
こういう構造的観点から眺めると絵を描くという行為と、プログラムを書くという行為は同じように感じませんか?
私の感覚値としてはプログラムは”書く“ものではなく、”描く“ものなのです。
邂逅
プログラムを”書く”という行為と絵を”描く”という行為が私の中で出会った瞬間がありました。
私は子供の頃から絵やモノをつくることが大好きで、クレヨンや粘土で遊んでいました。
そんなこともあって、子供の頃の夢は芸術家になることでした。
レオナルド・ダ・ヴィンチ、ポール・ゴーギャン、ミケランジェロ、パブロ・ピカソなどの絵を教科書で眺めることがすごく大好きでした。
また、私は人の顔を描くことが大好きでした。
目や口、鼻、同じパーツなのに、形や位置、色や大きさが異なるだけで全く違う印象を持たせます。
そんな人の顔の構造に虜になり、映画のVIDEO・DVDのパッケージを見ながら、あらゆる顔を描いたりしていました。
そして、デッサンの本やWEBサイトを見ながら独学でデッサンや絵の描き方を学びながら青年期を過ごしていたと記憶してます。
プログラミングに初めて触れたのは確か13, 14歳くらいの頃だったと思います。
その時の頃の私は何故か、ものすごくコンピュータという機械に強烈に惹かれていました。
(恐らく、映画「ソードフィッシュ」や「マトリックス」でも観て、感情が昂ったのでしょう…)
C言語に関する書籍を購入し、その当時家にあったコンピューターにテキストエディタを使ってプログラムを練習してました。
その時は特に絵を描くような意識はなく、ただ単に様々なアルゴリズムをいわば写経的に繰り返していたと記憶してます。
私が絵を描くこととプログラミングの関係性に気が付いたのは、大学を卒業して最初の会社に入った頃でした。
私が入った会社はいわゆるSIの会社で、大小様々なプロジェクトにSE・PGとしてアサインされました。
システム設計から開発〜テスト、保守・運用まで一貫して行ってました。
開発プロジェクトの規模が大きければ大きいほど、コード量は多くなります。
私が入った頃のはまだ、NoCode(ソースコードを書かないで、システムやWebサイト・アプリを作成すること)のような考え方はありませんでした。
多くのコードを自分たちで書いていく必要がありましたし、作りたい機能があり、適切なライブラリがなければ、適宜開発していく必要がありました。
その当時、私はプロジェクトで何万というコードを書いていました。
その時、プログラミングを行う過程とデッサンを行う過程が身体感覚として結合していく感覚を覚えたのです。
絵を描くという行為は私にとって不思議な高揚感をもたらすものでした。
描いている途中は頭の中には描かれる対象以外は何もありません。
そこには対象物と私がいるだけで、その関係を繋ぐものがメディアと手に持っている道具です。
頭の中の対象物が徐々に輪郭を落とし、目の前のキャンバスに現れる瞬間、私の頭は言い得ぬ感情で満たされるのです。
プログラミングに対しても同じような感覚が生じました。
設計時点で頭の中にあったものが、キーボードを叩きながら徐々に形を表し、体を為すその瞬間、
まるで絵を描いているような感覚が身体全体に走ったのです。
それ以来、私はプログラムを”書く“とは表現せず、”描く“という表現を使うようにしています。
クロッキーする感覚で、ノートPCを開き、コードを描くような感覚です。
創造的行為としてのプログラミング(内側から外側へ)
プログラミングは物事を便利にするため、自動化させるために行うという認知される方が多いと思います。
というところで、現状日本ではシステムの文脈で語られることがまだまだ多い気がしてます。(あくまでも体感です)
もちろん、そういう側面も正しいです。ただ、他にもたくさん使い方があります。
例えば、プロトタイピングやアートや映像、Arudinoなどの電子基板を利用したリアルな体験を作り出すことです。
そう、プログラミングは絵や映像、音楽と同じように創造的行為としても多く利用されているのです。
また、アイデアがあり、プロトタイピングを進めて、プログラムを描いていると当初考えていた以上の体験を生み出す瞬間があります。
そう、プログラムを描くという行為は、ただアイデアを形にするためだけのものではなく、
プログラムを描くという過程自体が創造的なものを孕んでいるのです。
理解する行為としてのプログラミング(外側から内側へ)
話は少し逸れますが、外側から内側へという流れって、どことなく対象物の観察に似ています。
生まれてから人は未知の対象物を目で見て、耳で聞いて、手で触れて、自分の中に取り込んでいきます。
つまり、このプロセスは未知を既知にする、理解する行為です。
絵を描くこともプログラムを描くことも同じです。
未知の対象物(機能)を理解するために”描く”のです。
何かを生み出す行為の裏側には必ず理解するという行為があるのです。
プログラムを描こう
プログラムを”描く”という行為は、鉛筆を持ってスケッチブックに絵を描くのと一緒で本来ものすごく敷居が低いものなのだと思っています。
対象物のほとんどは形を持つものではありませんが、機能という輪郭を持ち、その細部が埋められるのを待っています。
今ではありとあらゆる人に対して、プログラムを描ける土台が用意されています。
未知の事柄に対して、敷居を高いと感じてしまうことは仕方のないことですが、それは何か新しいことに挑戦する際には必ずあります。
絵を描くことと同じくらい気軽な気持ちでプログラミングを、何かを作るという行為を始めてみてはいかがでしょうか。