三井住友銀行などが開発を委託した先(の下請け)の社員がソースコードをGitHubにアップロードした件。コンピュータネタ、目次へアップしたのはなかなか気遣いのできる人間のようである。被害にあった各社のコメントはこんなふうにまとめられているからだ。
つまり実害が出ない部分をきちんと判断してアップロードしているということだ。倫理的にどこまで許されるかというのはおいておいて、優秀な人間であることは間違いない。
- 「ソースコードが公開されていたことは事実。流出したのは行内の事務系システムのプログラムの一部で、顧客情報の流出やセキュリティに影響がないことを確認済み」(SMBC)
- 「流出したものは開発途中の(システムの)一部。当社が納品を受けたものとは異なり、当社環境からの流出ではない。単独では(セキュリティに)悪影響を与えるものでない」(NTTデータ ジェトロニクス)
- 「弊社製品のソースコードではなく、汎用ロジックの一部をテストするためのテストコード」
- 「弊社製品のソースコードではあるものの、汎用なファイル入出力関連のソースコード」(Profit Cube)
その人はこの他にNECのシステムも手掛けているようで、相手としている企業名からも中々の腕利きであることが伺える。ソースコードをアップしたのは、書いたコードからプログラマとしての実力を見積もって適正年収をはじき出すサービスを利用したいとの動機らしい。たしかにこれだけの人物であれば、処遇改善を求めて転職を考えるのは当然であろう。
ただしそこに無理がある。「年収診断」のため、つまりプログラマとしての実力をみたいから書いたソースコードを見せてくれ、ということが正しいとして、なぜそれをGitHubにアップする必要がある。診断する会社に直接送るなり何なりすればいいのであってGitHubにアップして多くの人が見えるようにする必要はまったくない。バージョン管理なんか不要でしょうに。
この「年収診断」サービスをやっている会社って実際にあるのでしょうか?Newsweekの記事によると妙に言い訳っぽいです。さっき考えついたんだけど、たしかにGitHubを使ったほうが良さげなプログラマの実力診断の方法もあるよ。あるソースコードをGitHubで提示して「これに○○という機能を追加したい」とお題を出す。各プログラマはせっせと自分なりにコードを書き換えてGitHub上でブランチさせる。それをみて「あーエラー処理をきちんとやっているな」「途中でキャンセルされても大丈夫なように、また途中でコンピュータが止まっても影響が少ないように考えている」「テストケースが少なくて済むように巧みにモードを切り替えている」「インターフェースが優しいね」チェックするところはたくさんある。(元々のソースコードの不備を直しているのを見て「なまいきだ」と排除することも含めて。)
この辺はプログラマの個性だよね。(この辺を評価せず人月で払いが決まれば、そりゃ何か言いたくなるわ。ちーなみに、わたし今期8000行のソースをみて、作り直したら530行になったことありました。当然処理時間は短いし25箇所の手入力箇所は0になりました。それくらい差というものは出る。8000行に引き伸ばしたほうがお金たくさんもらえるのは理解できるけどね。要するにわたしコンピュータ苦手なので、わざと複雑に処理するテクニックがなかっただけかもしれない。)ところで、一つ大きな疑問がある。
ソースコードの「文体」はプログラマによって違い、例えば私が他の人が作ったプログラムを拡張したとき、あとから見た人は「どこが私が手を入れた部分か、一瞬でわかる」そうだ。あるいはKanameさんの書いたToDoChartのソースコードなんて惚れ惚れするほどきれいです。
報道するマスコミはそのへんが全くわからないだろうから無視するのもわかるが、現実にはソースコードにも「名文」というのはあるし、「美文家」というのもいるのだ。
だからこの人が自分の書いたコードを公開したのは「年収診断」のためではなく、この業界で最も希少な資源を求めてではないかしら。つまり「名声」である。良いプログラムを書ける人という評判だ。だから逆に書いたコードから実力が、ひいては年収がわかるというのも頷ける話ではある。プログラマによる技量の差は多分マスコミや(とりわけ発注先の)経営陣が想像するよりも遥かに大きい。そのへんの違いを無視して「プログラムは発注した会社の著作物だ」と言われれば反発したくなる気分もわかる。もしこれが「自分が社内報に書いた記事」をSNSに引用した場合はどう扱われるだろう。注意はされるがここまでひどくあげつらわれることはないんじゃないかしら。
極論ではあるがそもそも「ソースコードの著作権」はプログラマに与えられるべきではなかろうか、という考えがあってもいい。小説の著作権は出版社ではなくて作家にあるわけでしょ。出版社の依頼で小説を書いた場合もそれは同じ。だから自分の書いた小説を電子出版する際にどのベンダーを選ぶかの権利は小説家にある。
ソースコードも同じじゃなかろうか。だって紙と鉛筆があれば同じものがかけるもの。それともパソコン買い与えた人間が権利を持ちますか?だとしたらバイオリンを貸与しているストラディバリ協会は何もせずに演奏印税が入ってくることになるな。
じゃあ、企業が権利を持っているのはなあに?それは「ロードモジュール」でしょ。ロードモジュール作成は企業の提供するコンパイラとライブラリがあってはじめて成立するから。まさか発注先がコンパイルしたロードモジュールを納品させてそのまま使う企業なんてないでしょう。お客様ニーズに合わせてiOSのアプリを作ったが自社にはMacintoshがないので、コンパイルしてくれたものをそのまま配信している、となると他社のパッケージソフトを再販しているのと、さて、どこがちがうのだろう。
プログラムの「製造」はコンパイラが走る短い時間に限られる、という考え方もありますし、それでいいんじゃないかなあ。もし付け加えるとするならば、書きっぱなしのソースの著作権はプログラマ個人のものであっても、完成したソースはテスト環境を提供した会社にも権利がある、ということでしょうか。もっともソースコード管理システムを提供しているGitHubが、提供したサービスゆえにソースコードへの権利を主張しているという話は聞いたことがございませんが。