初学者の頃、ググった記事に載っているコードが「お、思っていたことが出来そう!」と嬉々としてコピペ、使おうとしたら動かない…こんな経験はないでしょうか。
「どうせ記事にするならちゃんと動くようにしてくれよ!」と、口にこそ出しませんがそう思っていたころ、
「わざと完全動作するコードは提供せず、必要と思った部分だけ抜粋するべき」
え、わざとイジワルする人もいるの?? じゃあ記事にしなきゃいいじゃん!
当時の私には理解できませんでした。わからんやつはわからんのが悪いんだよ。記事の向こうでニタニタと、笑われている気がしたものです。
でも、そもそも記事に完全性を求めるのは正しいのでしょうか。
こうして記事を書くようになると、「気持ちはわかる。。でも、それは正しいことではないんだ」と思うようになりました。
校正には時間がかかる
ブログはほとんどが個人で管理しています。
そして、記事を書くには当然時間がかかります。内容によりますが、1つに何時間もかかってしまう事も。
その上で校正もするとなると、更に時間を取られてしまいます。
(私は一応記事を作ってから、読み直すようにしていますが平均1割は追加で作業時間がかかります。大幅に直す場合は5割以上になることも)
これを年単位で続けると結構な時間校正に費やしてしまいます。
おそらく訪問者は何百とある記事の1つにしか興味はなく、「なんでその1つが間違えてるんだ」と思うわけですが、1つ間違いを修正していたのであれば、かかった時間が何百倍にも膨れ上がるんですよね…。
それでもなるべく、記事の間違いは防ぎたい、と思ってイマス。
時間をかけたところで、100% 完璧になる保証はない
プログラマーが自分でチェックする場合、どうしても「これは正しい」という思い込みバイアスがかかっているので、間違いに気づきにくいです。それは記事も同じこと。
私も、ちゃんと見直しているはずの自分の記事を後で見返して「………」と沈黙してしまうミスを見つけることもしばしば。
小説でも、校正は別の人が行います。ゲームもデバッガー(最近はQAチェックと言うことが多い)に間違いを指摘してもらいます。
もちろん、それでもミスは100% なくなりませんし「ちゃんとデバッグチェックしてるんですか??」と言われてしまうわけです。ましてや個人が、100% ミスを防ぐのはほぼ不可能でしょう。
このミスも「作者野球知らなさすぎwww」というのはちょっと短絡的で、膨大な徹夜の末朦朧としながら書いてたらやっちまった…のかもしれない。
出版物なので校正も入っているはずですが、その校正者だって見逃しているのです。
苦労なくして、身につかない
3番目のこれが、一番最初に「イジワル」と評した部分の本当の意味だったんだと思います。
ソースコードで本当に必要な部分だけ抜粋する。
この「必要な部分だけ」というのは見る人のレベルによって変わります。例えばこんな unity のコードで、こんな抜粋。
button.onClick.AddListener( callPush ); void callPush() { Debug.Log("push button."); }
unity でまがりなりにもゲームを作り上げた事があればこのコードだけで何をいってるかわかるでしょう。でも、初学者なら「button ってどこから来たの?」「Monobehaviour どこ??」となり、ここで理解がストップする。
…と、ここでストップせずに、「じゃあ onClick.AddListener でググってみよう!」と自ら先に進める人でなければ、今後もプログラマーとしてやってくのは厳しいんじゃないの? というのが、
「わざと完全動作するコードは提供せず、必要と思った部分だけ抜粋するべき」
の真意だったのだと思います。
これをもし、完全に動くコードで提供した場合エラーもなく動作しますが、
public class Test : MonoBehaviour { [SerializeField] UnityEngine.UI.Button button; private void Start() { button.onClick.AddListener( callPush ); } void callPush() { Debug.Log("push button."); } }
- SerializeField ってなんなのか
- using UnityEngine.UI という記法
- button.onClick.AddListener( () => Debug.Log("push button.") ); とも書ける
こういった勉強の機会を奪っている可能性もある、という事ですね。
ただ、苦労させすぎるのも問題
ただ、「全部自分でやらせるのが一番いい経験になる」わけではないとも思います。
わからないストレスが強すぎれば結局新人プログラマーの芽を潰すだけかもしれないし、プログラム言語(やフレームワーク)の流行りなんて2~3年で変化するのですから、「必要と思った部分」が独りよがりでないか、十分考えたいですね。
熟考しても、人によって差が出てしまうと思いますが。
10 年 Laravel やったら1人前、なんてことしてたらそのプログラマーは 10 年後使えないと言われて職を失うでしょう。
ブログの記事が玉石混交なのは、一人だけの経験・意図で紡がれるもののため。
ちょうど同じステージにいる人にとっては素晴らしい記事になりますし、及ばない人にとっては役に立たない事も多いでしょう。
それでも私は様々な記事によって助けられましたし、これからも助けられると思います。
私の記事も、知らない誰かにとって役立つ事を願っています。