見出し画像

魔法とソフトウェア開発は似ている。

お久しぶりです。
欲しい魔法は、 姿くらまし(姿あらわし)の 「ちょっとそこまで旅をします。 」の私(仮称)です。

先日(というよりも今日)、葬送のフリーレン というアニメを見返していました。
(見ていない人は、今すぐ Amazonプライムビデオ なり Hulu なりで見てください。とてもおもしろいです。)

エピソード 21 話「魔法の世界」にて、リヒターがありがたいお言葉を言っていました。

イメージできないものは、魔法では実現できない。

リヒター / 葬送のフリーレン  

今までの私の魔法の認識は、「唱えるとなんか出てくるすげーやつ。己が持っている魔法力?が源となっている。」と思っていました。
リヒターのお言葉を聞いて、術者が頭空っぽにして己の魔力だけで 「アバダケダブラ」 とか「クルーシオ」とか言っているんじゃないんだな と考えを改めました。

きっと魔法を習得するためによく出てくる魔導書においても、「本を開けば、よくわからない光が出て魔法習得!」ではなく、「魔法の仕組みが事細かく書かれている」のではと思いました。

魔導書

魔法 ≒ ソフトウェア開発

趣味で Youtube に旅の動画を上げていますが、その傍ら、日頃はソフトウェア会社で、細々とパソコンをカタカタしているお仕事をしています。
ちなみに、Youtubeのチャンネルは以下です。
良くても良くなくてもチャンネル登録してくれると泣いて喜びます。

話が少しそれてしまいましたが、「ソフトウェア開発も作りたいものをどのように作るかがイメージできないと作ることができない」と思いました(あくまで個人的な意見)。

例えば、Webアプリを作るときに「ページが表示されたときにふわっと文字を表示させて」みたいな要求があるとします。
駆け出しエンジニアさんなら、「そもそもふわっと文字出すって何やねん。」になり、作り方が全くイメージできないかと思います。(あくまで個人的な意見)
Webアプリ実装完全理解した人になると、「JavaScript で対処のDOMに対して云々カンヌン〜」とか「CSSアニメーションを使って云々カンヌン〜」というように実装イメージ湧きます。

この「イメージする」においては、魔法もソフトウェア開発も同じことを意味していると考えます。

イメージできないものは、作ることができない。

イメージできるようにすればどうすればよいのか。

※ 大層なタイトルですが、そこら辺に生えているソフトウェア開発で生活している人の意見です。

経験談ですが、自分で考えてなんでもいいからソフトウェアを作ってみる。が一番いいです。
「メモアプリを作ってみた。」や「ラジコンを作ってみた。」といった、すでに市場にありそうなものでも良いです。
自分で考えて作るのが良いのかなと思います。
※  ここで言う作ってみたは、参考書にあるサンプルコードを丸写しでアプリを作ったことを指しているのではない。自分が、いちから実装することを言っている。

作っていくうちに、「かっこいいエフェクトつけてページ遷移したい」とか「おしゃれなボタンにしたい」といったやりたいことが増えていきます。
これらのやり方を調べて作ることで、イメージの具現化ができるようになっていくのかなと思います。
(また、こういう急な思いつきが、オリジナリティに繋がり、完成したときは世界に一つしかないアプリになる。)

さらに高みを目指すと、ソフトウェア開発がだんだん好きになっていき、いつの間にか低レイヤーもできるようになるし、Webアプリ作れるようになるし、サーバーも作れるようになるフルスタックなエンジニアが完成します。
扱える言語もいつの間にか C, C++, Python, JavaScript, Ruby, Flutter etc.. となっていくので、ぜひ高みを目指しましょう。

まとめ。

休日に葬送のフリーレンをみて、「魔法って実は身近なものと考え方は変わんないんだなぁ」と思いました。
今まで魔法は、テレビの中でしかない遠くの存在 だと思っていましたが、そんなことはなかったという発見です。

プログラミングの勉強方法みたいなことをつらつらと書いていますが、あくまでそこら辺に生えているエンジニアの意見です。
有名人でもなんでもないので、鵜呑みにせずにやりたいようにプログラミングのお勉強をすればよいと思います。

最後に。

最近の目紛るしい情報技術の発展をみると、クラークの三法則の1つがすでに実現しているのではと思ってしまいます。

十分に発達した科学技術は、魔法と見分けがつかない。
Any sufficiently advanced technology is indistinguishable from magic.

クラー三法則 / https://ja.wikipedia.org/wiki/クラークの三法則


この記事が気に入ったらサポートをしてみませんか?