‘写経’でスキルを上げる

こんにちは、プログラマの三浦です。

プログラマが自分のスキルを上げる方法はいくつかあると思うのですが、少しずつ紹介したいと思います。

今日紹介したいのは「写経」。

なんとも前時代的な言葉ですし、筆と紙を用意しろという話なのか?という声が聞こえそうです。ですが、歴史を振り返って、ある程度の長い期間用いられてきた方法というのは、何らかのメリットがあるからこそ続いたものと考えるべきです。もちろん、その時々の時代背景や道具が異なりますので一概には言えませんが、古いことは時代遅れと一蹴するのは浅はかだと思います。

プログラマの「写経」とは何でしょうか。

僕らの年代の頃は、他人のソースコードを手に入れられるのは貴重なチャンスでした。

大昔の話ですが、アスキーから月刊誌マイコンという雑誌が出てましたが、当時小学生の私はそこに何ページものダンプされたマシン語のコードをひたすら入力し、チェックサムで入力を手作業(目作業?)で行うという’修行’をしていました。

その当時は、ただその掲載されたゲームで遊んでみたいという気持ちが強かったですね。

しかし、継続は力なり、が発揮されるのはその後。著者の方が書いてくれた、この辺りのアドレスはキャラクタのデータ、この辺りはキー入力処理、この辺りはキャラクターの移動処理、この辺りは当たり判定、などというマップを手掛かりに、次第に内容が朧げに理解できるようになっていました。

先頭から入力せず、自分が興味のある部分から入力し、全部入力し終わっていない状態から、「あ、キャラクタが表示された!」とか、「キー入力できた!」などという芸当ができるようになっていました。

もちろん、その当時は論理和とか論理積、排他的論理和などは知りません。XOR HL,HLはなぜか知らないけれど、0を代入より短く書けるし、速い!という感じで、慣用句的に覚えていってました。

本日8/9でシンガポールは建国51周年を迎えました!おめでとうございます

本日8/9でシンガポールは建国51周年を迎えました!おめでとうございます

ちなみにその当時はBasicマガジンという雑誌が出てましたが、当時の自分はBasicにあまり興味がありませんでした。たまに購入するとすれば、MMLで音楽を入力したいときぐらいでしたね。多分、NEC PC-8001N-BASICの実行速度とマシン語の実行速度の天地ほどの差を体験してから、もうBasicを見捨てたのだと思います。

それから大分経って、Linuxのソースコードを読むようになってました。

というのもMS-DOS上で擬似的に動くマルチウィンドウマルチタスクなシステムを作った際に、OSの基本機能をしっかり知りたい!という気持ちが高まったのと、FM-TOWNSLinuxを走らせるのが流行っていたからというのが理由ですね。

今でも生き残っているLinuxのソースコードをただ読むだけではなく、「写経」のようにテキストエディタでそれを自分の手で打ち込んでました。

北東部にあるPunggolというエリアに行ってきました。自転車専用道路もあるほか、開放感があって気持ちよかったです!

北東部にあるPunggolというエリアに行ってきました。自転車専用道路もあるほか、開放感があって気持ちよかったです!

今でもそうですが、私は自分の手で入力しないと自分の頭に入ってこないのです。

とっても時間がかかり遠回りな勉強方法ですが、決して頭が良い方ではなかった自分には確実に覚えておくとっておきの方法でした。

また、入力しながら様々な妄想を働かせて、自分ならこうするなとか、どんな思いで作者がここを作ったのか想像をふらませていました。そこで、自分より実力のある人のソースコードを読んで写経すると、大分その方に近づけられる、という認識を得たものです。

今でも新しい技術や実装などが出てくると、その中身を確実に自分のものにしたいという思いが強いときには、GitHubのソースコードを「写経」します。もちろん、そんなに重要度が高くない場合は、コピペーでライブラリとしてリンクもしますが。

ただ、「写経」はつまらない場合が多いので、最近は異なる言語にポーティングするようにしています。そうするとそれぞれの言語の理解も深まりつつ、その内容も理解できます。出来上がった頃には、その言語でその機能を利用できるようになっているので、一石二鳥ですね。

「写経」侮り難し。

Best Regards,

  Nozomu Miura

miura

秋田県生まれ。ベルギー、東京を経て現在シンガポール在住。 様々な業務アプリケーションの開発に関わり、主に低レイヤーの開発を得意とする。 ベルギーへ渡り、照明最大手のR&Dのリードエンジニアとして、メディアサーバや照明制御の開発に6年間従事。 2006年のユーロビジョンソングコンテストやアーティストのステージを支えるエンジニアとしてベルギーを拠点に欧州で活躍。 日本ではライブストリーミングサイトdommuneや、坂本龍一の映像配信などをサポート。 その一方で、vjとしてクラブシーンとも関わり、積極的にvjソフトウェアを開発。 小さくてもニーズのあるツールを提供するのが生き甲斐。次のプロダクト作成のため、メンバーを探している半ばの人生。 エンジニアとしてのメンタルを保つために、アジア大陸最南端でギラギラ葛藤中。 動物とあんことレッドブルが好き。最近お酒に弱くなりました。

0 comments