Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

アウトプットとはなんだったのか

アウトプットとはなんだったのか

よくある言葉に「インプットすればアウトプットしろ」という啓蒙がある。

感じるのは、言われているアウトプットとはブログ記事として出力されたものを 意味する場合が多いということ。 加えてカンファレンスや勉強会での発表であったり、 どこかの雑誌への連載や書籍の出版などがある。

共通して感じるのはそれら「アウトプット」が指すものは、 ある程度体系化された情報であるということ。 情報の受取り手に対して明確に「こうすればこうできる」という提示できる もの。入門、ステップバイステップ、事例、失敗談、そういった情報を指す場合が 大半なのではないかということ。

これは主観的な感想なので、そう思わない人はいて当然だけど、 どこか「アウトプットしよう」という話を聞くと疑いたくなる。

得た情報を他に伝えたり、回帰する方法は他にあるんじゃないかと。

ソースコードで表してみる

文章で説明しなくても、ソースコードに書けばいいんじゃないか。

「こんな問題があった」ならその問題を解決するようコードを修正すればいい。 「こんなふうに使うと便利」ならその方法で作ったものを公開すればいい。

根本的に問題を解決できたり、読み解くことで参考にできたりを 実装として回帰すればいいんじゃないか。

ノブの上にノブを乗せる方法や、ノブを彩色する方法や、固着したノブを こじ開ける方法ではなくて、誰でもすんなり開けれるドアノブを作ってやる。 それが誰しもが求めてるはずの、正しいことなんじゃないか。

もちろん状況によっては「正しい」解を求めるべきじゃないときもある。 固着したノブを開ける方法が必要なときもある。 でもそれは実はとっっっても下らない話で、せめて自分の制限のない時間ぐらいは 本質的に求めているドアノブについて考えるべきなんじゃないか。

例えばWebフレームワークの提示する記述方法が貧弱故にテストしにくいとして、 その解決方法はWebフレームワークから提供されるべきだと思う。

FlaskやDjangoにおいて、Viewに適応されたデコレーターはユニットテスト時に 邪魔でしかないわけだけど、Pyramidはその問題を解決している。 Djangoにおいて厄介であったテスト時のsettingsの置き換えは後のバージョンで 取り込まれたoverride_settingsによって対処された。

Pythonにおいてサーバーとアプリケーションを切り離すのにWSGIは役立っているし、 厄介であったパッケージングの問題も解決に向かっている。

多くの人が考えて苦労してどうにかしてなんとかして対処法を体系だてて 解説してきたことは、実はその手にあるノブを修理することでアッサリ 解決するんじゃないか。魔法みたいに。

まずはドアノブは誰かに提供されるだけのものじゃなくて、 自分でも修理できるものだと常に意識して、毎度本質に気づかないといけない のかもしれない。

そのソースコードの意義と説明

実装でどうにかするというのは素晴らしいのだけど、それだけだと悪い場合がある。 その実装の説明が必要な場合だ。 ソースコードに表すだけだと人にはどう考えても伝わりにくい。 ガイドとしてそれの意義、使い方を説明する必要がある。

何より厄介なのは、実装だけするということに対して直感的に「悪い」 という感情を自分自身が持っているということ。 とくに私の場合は「ちゃんとやってない」という気持ちがフツフツと湧いて出る。 docstring、README、long_descriptionやドキュメントが無いと、ことさら「悪い」という気持ちになる。

それはプログラミングをすると絶対付きまとってくる感情で、 自分の得た知見を多くの人々に回帰できていないような感情になる。

でもそれってどうなんだろう。 別に吐いて捨てたコードがあって何が悪いんだろう。 もちろん成果として求められる場合は説明も含めて成果であろうけど、 少なくとも好き勝手やってる「アウトプット」にそれが必要なんだろうか。

「情報として体系化されてない」状態を「悪い」と思ってしまうのは 1ユーザー、1フリーライダーとしての感覚が大きいんじゃないか。 「1フリーライダー」としての感覚を適応すると、そういった説明のない ソースコードには残念な気持ちにはなる。 もっと俺は楽したいのに、もっと俺は楽できるはずなのに、と思う。

でもそれは、自分でもわかってるけど甘い考えなんじゃないかな。 そのソースコードを参考にしたりパクったりすることで十分使うことはできる し、公開されてるだけでもありがたいものだ。 もともと書いた人間が説明してやる義理なんてないし、公開する習慣がある だけでも感動ものなんじゃないか。

そんなに説明がないことが気に入らないなら自分で理解してそれをすればいい。 これは単なる地ならしだけど、もちろんこれも賞賛されるべき情報だ。

ソースコードだけというのは体系化された情報ではない。 整備された「高速道路」ではないけど、でもこれも存在するアウトプット だと捉えたい。

思った

全体として無駄な時間が削減されているかということに注目したい。

荒いアウトプットは、技術的に成熟してない領域に近づくにつれて必要になっていくようにも 感じる。 どのみちそんなのは多くの人間が求めてる情報ではないので丁寧に整備しても見合わない

結局アウトプットとはなんなのだろう。 ORMやアクティブレコードだけがモデルを指さないように、 ブログ記事みたいな、ある程度体系化された情報だけがアウトプットを指さない と思いたい。

自分が得た情報を回帰する方法はたくさんあって、その情報にとって最も効率の いい方法を選択ればい良いだけの話なのかもしれないけどね。