車輪の再発明について

こんにちは。
sadakです。

新しいアプリ案がでないので
あいかわらずリビルディングサガ外伝をコツコツ実装中です。

リビルディングサガ外伝の実装をしてて
なんとなくおもったことを書きます。

プログラミングの世界(だけではないけど)には
「車輪の再発明をするな」という言葉があります。

既存のコード(orフレームワークが提供する機能)を
流用する方が安全でコストが少なくて済むから
同じような機能を再実装するな、ということです。

言葉自体は正しいし、いかにも「非レガシープログラマ」好みの内容だけど
・「その車輪」はバグってないか?
・「その車輪」はこれからやりたい機能要件を満たしているか?
 というところを確認せずに
「車輪の再発明をするな!」という言葉が独り歩きしている場合は要注意ですよね。
 
例えば、いま僕が実装しているRPGの戦闘ロジックですが
流用できる部分が80%ありますが、そのまま使おうとしたときに
いくつか機能要件を満たせないことがわかりました。
ソースコードの保守性は低いしバグもあり、「この車輪は再発明すべき」と判断しました。

流用できると踏んでいたのに、実は流用できなかったってことですね。
これがシゴトだったら、大変でした。
流用前提で見積もりしてスケジュールを決めた後に気が付いても
なかなかスケジュール変更はできませんので……。
(本当に自分のプロダクトでよかったです)


フレームワークなんかも、提供機能を使ってみたら
とあるエラーの場合だけ、既存と挙動が違っているなんてこともよくあります。
そんなときは一部をスクラッチ実装するんですが、そんなことを続けていると
フレームワーク提供機能とスクラッチ実装の混ぜ合った
複雑怪奇な代物ができていってしまいそうですね。


ところで、戦闘ロジックでは「車輪の再発明」をする、といってますが
そもそも自分のプロダクトの実装について考えてみると……
再発明しまくりです!

同じ処理の共通化を検討するくらいなら
同じ実装をコピペしまくるということはよくやります。

ノリノリの開発状態の場合は、とにかく動くものをつくりきって
そのあと冗長なコードをリファクタリングすればいいので
むしろ「車輪の再発明をしまくって」実装してますね。
共通化を考えるのってたのしくないので、スピード感ややる気がそがれていくんです。
むしろどんどんゲーム作っていくほうが楽しいですね。

あと自分ひとりがよめればいいので
「自己可読性」を高めればよいと思ってます。
コメントなんかも、何行にもわたって書いたりと、やりたいほうだいです。

制約なく、自由意志でプログラミングをするのは意外に楽しいものです。

このブログの人気の投稿

【EvaliceSaga】ちょっとプレイしてみた①

【RebuildingSaga】攻略wikiを作ってみました。

【Android開発】Admobでインタースティシャル広告を実装するときに気を付けること。