ECWorks Blog

ECWorks Blog

CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。

【プログラミング全般】私が出来る限りソースコードを公開しない理由

prog-logoお気づきかもしれませんが、私は滅多にソースコードを相手に提示したり公開したりしません。
例えば、フォーラムなどで質問されたものに対してアドバイスはしますが、その中に適切なソースコードを書きません。

言い訳めいた話をするかもしれませんが、そのようにしていることにはちゃんと理由があり、漠然とした言い方をすれば、そうすることでご自身に「学んで欲しい」からです。

現在は、インターネット…もっと言えば検索サイトでのネット検索で、大抵のものは入手できる、大変便利な世の中になりました。ソースコードはいろんな所から入手でき、ダウンロードするかコピペするかでその機能を自分のものにすることが出来ます。これはこれで便利なのですが、それが原因で技術者もあまり成長していないのではないかと考えています。

私はどちらかというと「旧世代」の人間で、インターネットどころか外部記憶が「カセットテープ」の頃からやっていまして、その頃は何もない「自分で作るしかない」世界でした。雑誌や書籍が唯一の参考書で、それを片手にプログラムを「手で打ち込み」身体で覚えたものです。
だからといって、「この頃のプログラム技術が生きている」なんて野暮な言い方はしませんし、実際に現在のプログラム技術と比べたら、この頃のプログラムの知識など全く役に立ちません。しかし「自らが苦労して得た「考え方」はいつまでも忘れない」というのは確かにあります。コピペしたものは1年もしないうちにたやすく忘れますが、自分で苦労して作ったもの(あるいは手を入れたもの)は、詳細は覚えていなくとも「どこで苦労したか」は思い出すことが出来ますし、「失敗したことは二度としない」でしょう。他で似たような現象が出れば「これもあれと同じではないだろうか?」と推測が出来ますから、確実に新しく考えなければならない範囲が狭くなるのです。
ちなみに当時は機種毎に動作するプログラムが違うのは勿論、その機種そのものの絶対数も少なく、その機種用の出来合いプログラムは少なかったです。他機種用 ですらもそのプログラムは大変に貴重で、自分の機種用に移植することでいろいろな勉強が出来ました。つまり、ソースそのものは役立たずだけど、そのソース を読解することで「どのような仕組みで動くのか」を自分で理解することが必要であり、そこから得たことの方が何倍も価値がありました。

現在に置き換えるのであれば、PHPだろうがJavaScriptだろうが、プログラムの仕組み・考え方に本来の価値があるのであって、同じ言語であっても自分の環境に適合しているかどうかも分からないソースコードを引っ張ってくるだけではダメだということです。逆に言えば考え方さえ分かれば、素のPHPプログラムを提示されても、CakePHP用やsymfony用に作ることが出来たり、Windowsアプリや今はやりのiPhoneアプリにだって出来る、というわけです。

こういった「知識」をつけることは、受動的では覚えないと思います。「能動的」に経験をしなければ身につかないと思います。まあこれが「技術」というものだと思います。「(動く)ソースを貼り付けないから不親切だ」的な書き方をされたことが過去あるのですが、私としては、そうすることで「技術を習得することを妨げてしまう」方が不親切ではないかと思います。まあ、この辺は過去苦い経験があったから言えるのかもしれませんが。

CakePHPフォーラムを見ていると、(動く)ソースを要求していると思われる書き込みが最近増えているように感じます。常連さんはもちろんそんなことはないですが、CakePHPどころかプログラム経験が浅いと思われる方は、大抵ソースが出てくるのを待っているような書き込みをされます。自分でやらなくて済みますから、そりゃその方が楽だとは思います。ですが、それではいつまでも「技術」を学ぶことが出来ないと思います。かといって相手も困っているのでしょうから、「考え方」だけは提示して、後は自分で考えて作ってもらう…というのが私の方針で、その質問者が憎たらしいとか、困らせてやりたいとか、そんなことは考えたこともありません。そう思ったら書き込まないだけなので。
ただ、以上の理由からソースそのものよりも「考え方」が一番大事なのだということ、そしてその考え方について「自分も考え、行動してみる」ことが技術に繋がることを私は主張したいと思います。

ちなみに、CakePHPをはじめとするフレームワークを「簡単だから」という理由だけで導入する初心者の方がいるようですが、言わせてもらうと「素のPHPで同じ機能のものを作れる人が、作業を簡素化するために使う」のは大変に有効だと思いますが、「プログラムを覚えることなく作れる」ものではないと言いたい。もしPHPをあまり知らなくても、知る努力はして欲しいものです。それが出来ないのであれば、誰かに作ってもらって対価を払う方が、自分のためにもみんなのためになります。

そして、アドバイスしてくれた人には、必ずお礼をして欲しい。
最近質問しっぱなしでそのままのものが多すぎます。
少なくとも、その人が限りある時間の一部を割いてくれたのですから、それが自分の求めていた情報ではなかったとしても、感謝の一言くらいは。せっかくの情報がコピペと同じ扱いでは、可哀想すぎです。
まあ私にはどっちでも良いですけど、せめて他の人には必ずお願いします。


Tagged as: , , , ,

4 Comments

  1. このエントリー、すごく身にしみました。
    自分の考えかたの軌道修正ができました、ありがとうございます。
    #イブのエントリーですね、私にとってよいプレゼントになりました(笑

  2. コメントありがとうございます&フォーラムではお世話になってます!
    内容的には大変に耳の痛いプレゼントになってしまいましたね(^^;。

    プログラム技術そのもののサイトはインターネット上にいくらでもあるのですが、心構え的なことが記されているサイトは本当に少ないので、以前このようなことを連載しようとも考えていたのですが、暇が無くてなかなか…
    まあ「考え方を学ぶ」など悠長なことを言っていられない時代であることも確かで、それは私も身にしみています。今の世の中を生き残れる人はきっと「考えられる」と「利用できる」が両立出来る人なんだろうと思います。

  3. レスありがとうございます、こちらこそフォーラムではお世話になっています。
    「「考え方を学ぶ」など悠長なこと」とありますが、最終的にはそちらの方が近道だったりしますよね。
    私もなかなかできていませんが、、、、

  4. そうですね。
    作っている時は勿論ですが、デバッグを含めて考えるとかなり有利ですね。確実に「自分の手に負えなくなる」状況が減ると思います。一般的にコーディングから完成までを10とすると、コーディングは2とか3とかで、残りはデバッグや調整だと思いますから。コピペでは2や3の中からしか短縮できませんが、考え方を知っていれば7や8からも短縮することが出来ますので、断然有利だと思います。