The Rank of F

〜渋谷で働く底辺のブログ〜

日記 : 「創作」と呼べるアプリケーションコーディングと設計技法について

はじめに

個人的に「創作」という言葉には強い思い入れがあります。

自分は生まれてからずっと「創作」されたもので心を動かされてきたし,何よりも今の人格を形成しているものが「創作」されたものであったと考えているからです。

なので,「創作」を行える人は非常に尊い存在であると感じており,また自分がそれに携われない,支援できないという部分において深く無力感を感じている部分でもあります。

しかし,嘆いているだけでは何にもなりません。仮に自分が「創作」に携われないとしても,それをエンジニアリングで支援することは出来るはずです。嘆く前に,まずは行動するべきなのです。

では具体的に何を行っていくか,そして目標とするところは何なのか,というところについて考えてみたいと思います。

「創作」と呼べるプログラムは存在する

もちろん,これはエンジニアリングに携わる人間としての観点です。

多くの人から見て,プログラミング言語という物はどれも大差がなく,結局「特定の条件に従って処理をする物」以上でも以下でもないのでしょう。

しかし,無秩序でないプログラム・プログラミング言語には何かしらの「設計思想」があり,そこにある「哲学」をベースとして書かれていることが多いのです。

例えばプログラミング言語であるLuaなどもその一種で,データ構造が非常に単純であることから習得が容易であり,かつ深く習得することでプログラミングにおける手法の殆どを実現することが出来,しかも高速に動作するという優れた環境を実現しています。

これは近年におけるJavaScriptも同様であり(個人的にLuaのほうが遥かにきれいで簡潔な設計だとは思いますが),Lightweight Language界のトレンドでもあります。

このような「汎用性に優れ,様々なプログラミングパラダイムを実現出来る言語」は「創作」と呼んでしまっても良いレベルに尊いものなのではないかと考えています。

Dirtyな言語でも「創作的」なコーディングは生きる

Dirty(汚い)言語として,良くphpが槍玉に挙げられます。phpは歴史的経緯から純粋なオブジェクト指向とはかけ離れた構文を多く持ち,引数の順序すらめちゃくちゃな多くのグローバル関数に支えられて動いています。

標準phpにおける連想配列は確かに便利ですが,オブジェクト指向的概念から考えたときにはあまりにも不便です。しかし,現代のphpはモダンなプログラミング環境を提供できるだけの機能を有しており,それらの機能を用いたモダンなオブジェクト指向をサポートするライブラリが十二分に提供されています。(例えばCollectionなど)

こういった再利用可能で汎用性に優れたライブラリを用いて書かれたコードは非常に見通しが良く,そのコードが一体何を行おうとしているのか,どのような役割を持っているのかがひと目で分かります。これはもはや芸術的とすら呼べるでしょう。

多くの人には理解されないでしょうが,私はこのような「見通しの良い設計」は「創作」の一つであると考えています。それほどまでに見通しの良いコードは尊く,人を幸せにする力があるのです。

「創作」と呼べるレベルのコードを書くためには

何よりも大事なのは,技術的トレンドを常に追い続けることです。しかし忘れてはならないのが,「それが本当に必要なものなのか」を考えることを怠ってはいけないという部分です。

技術的なトレンドは凄まじい勢いで移り変わっていきます。その激しい流れの中で,一体どれが物事の本質を見抜いているのか,それを見抜く力が必要になります。

設計における理想の実現は確かに大事かもしれません。しかし,それと全く同じ理想を持ち,冗長で複雑な処理を記述することを好む人がいるかと言えば,そんなことはないのです。

例えば有名なphp言語のWebアプリケーションフレームワークであるSymfonyとLaravelの関係を見てみましょう。Symfonyはそれぞれの機能がコンポーネントとして提供されており,疎結合かつSymfony以外のフレームワークからも容易に利用できる環境が整っています。

しかしLaravelはどうでしょう。実のところLaravelは機能の多くをSymfonyコンポーネントに依存しており,それを独自拡張する形で実現されている部分が大半です。また,LaravelはSymfonyほどコードの再利用性について考えられておらず,あくまでも「利用者がアプリケーションを作りやすい環境」を作ることに注力しています。

近年のphp言語におけるWebアプリケーションフレームワークではLaravelが圧倒的に人気となっています。Symfonyの人気は低くないものの,学習コストの高さや疎結合が故にアプリケーションの設計自体も利用者に委ねられるという点で,「手早くアプリケーションを構築したい」という需要を叶えにくい物となってしまっている背景があります。

しかしLaravelの基礎にはSymfonyの存在があり,皮肉にもLaravelはSymfonyがあるからこそ成り立つものなのです。

私はLaravelもSymfonyも「創作」と呼ぶにふさわしいプロダクトだと考えています。これらのプロダクトがあるからこそ今のモダンなphp開発環境が実現されているのであり,これらの作者には感謝してもしきれません。少なくとも,LaravelとSymfonyは私の心を動かしたのです。

最後に

自分が人の心を動かせるようなコードを書ける様になる日はまだまだ遠いか,もしくは一生ないかもしれません。

しかし,いつかは自分のコード・プロダクトで人の心を動かし,感動してもらえるようなものを作りたいと常々思っています。