車輪の再発明について

こんにちは。
sadakです。

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

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

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

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

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

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


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


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

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

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

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

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

このブログの人気の投稿

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

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

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