これから道徳の授業を始めます
前書き
技術者という職業は、己の正義感や道徳心を試される機会が比較的多い傾向にあります。心当たりはございますか?専門職である我々には他の人にはない「力」があります。この「力」は時に社会の理に反する形で秘密裏に行使することができます。
この記事では主に、我々が「力」を行使することにより「できてしまうこと」について記述します。ただし、この記事は「我々にはこんなことができてしまうから悪用しないように気を付けましょう」と促すものではありません。本記事は、我々が気付かぬうちに手にしてしまった「力」について確認するために書いた記事であり[1]、あなたの道徳心や価値観をコントロールする目的は一切ありません。ただ、一緒に考えることができれば幸いです。
道徳以前
その前に、まずは道徳以前に法的な問題等により、やるべきではなさそうなことについて少しだけ記述しておきます。この章をわざわざ設けたのは、明らかに違法や違反であっても案外普通に手を染めてしまう技術者が大変多いためです。
違法な仕事
個人事業主の技術者として活動をしていると、日々多くの仕事の相談が寄せられることになります。寄せられる相談の中には、違法な仕事もいくつか見受けられます。「違法ドラッグの販売サイトを作ってほしい」のような誰が見ても違法な相談であれば断ることは容易いかもしれませんが、パッと見では問題のなさそうな仕事を請けて後から法的に問題があったことに気付くケースは案外多いです。例えば、労働者派遣事業許可を得ていない事業者から労働者派遣のマッチングサイトの制作相談があったり、他社の特許やライセンスを侵害する技術を用いたサービス開発の相談があったり等です。相談している側は違法や違反であることを知らないだけの場合も多いです。「雇用主がしょっぴかれちゃった」という出来事は笑い話で済まないこともあります。カジュアルに仕事を請けられるのは個人事業主の良い側面でもありますが、こういった事故に遭わないように注意を払うことも時に必要になるかもしれません。
秘密保持契約
NDA、毎回読んでますか?基本的には秘密情報に関する定義の項目があって、「ソースコード」と明記されていたり、「秘密である旨を明示の上で開示する情報」といった書かれ方をされていたりします。「秘密を漏らしてはならない」等とは言うまでもないと感じるかもしれませんが、案外秘密に対して無頓着な技術者は多いのです。私も経験があって、雇った技術者がソースコードや Issue、Slack の内容等といった情報を漏らして第三者に技術的な相談をしながら内密に業務を遂行していたことがありました。相談していた側の技術者は新米でしたが、相談されていた側の技術者は界隈でも優秀だと名高い技術者[2]で、私はこの出来事から表向きはまともに見える技術者であっても違法や違反について良識があるとは限らないことを学びました。
Issue や Slack のやり取りに至るまで設計に関する情報まで漏らしてしまうような例は珍しいかもしれませんが、Stack Overflow 等の質問サイトで「なんかスタックトレースのディレクトリ名に御社のプロダクト名出てるけど大丈夫か...」みたいな経験がある方は多いのではないかと思います。Qiita や Zenn 等にアウトプットを行う際にも、秘密情報を漏洩させてしまっていないか、最後にちゃんと確認するように注意を払った方が良いかもしれません。
サービス残業
時間外労働の割増賃金を支払わないことは違法です。会社に強制されなくとも、「自己成長に繋がるから」とか「先に帰ると心象が悪いから」とかいった軽い気持ちで自らサービス残業をする技術者を山のように見てきましたが、サービス残業させている企業は違法な企業です。「みなし残業手当てが支給されているから弊社はいくら残業しても割増賃金が追加で支払われることはない」と勘違いしている技術者も多いです。[3]違法な企業に加担するのはやめましょう。あなたが50万円分の労働時間しか計上せずに80万円のコストをかけて行った仕事は業界に実績として残り、やがて別の人に50万円で発注されることになり、そうして業界全体の単価が崩れていく恐れもあります。働いた分は請求しましょう。
技術者ができてしまうこと
ここからが本題です。冒頭で説明した通り、本記事は「我々にはこんなことができてしまうから悪用しないように気を付けましょう」と促すものではなく、あくまで「こんなことができる」と説明するにとどめ、その是非についての言及は行いません。
グレーな仕事を請けられる
技術者には違法な仕事の相談も舞い込んでくることについて上述しましたが、違法かどうかグレーな仕事の相談も数多く舞い込んできます。例えばスクレイピングを伴うサービスや、二次創作物の販売サービス等、相談してくる事業者側がどの程度法的な課題をクリアしているのか、あるいは考慮しているのかが不明瞭な仕事があります。「契約上は多重派遣ではないけど実質多重派遣みたいなもの」といった仕事に心当たりがある方も多いと思います。また、特にスタートアップにおいては、グレーな範囲でビジネスを進めつつ行政との対話や調整を繰り返して社会の仕組みやルール自体に働きかけていくパターンも多いです。ただ、後からグレーどころか真っ黒であることが分かることもありますし、黒い仕事をしてしまった実績はキャリアとして積まれてしまうので、請ける仕事は慎重に選んだ方が良いかもしれません。
人の知らないところで手を抜ける
我々は成果物を評価される立場にあることが多いと思いますが、顧客が技術者でない場合はソースコードを見られることはないため、顧客やユーザーの知らないところで手を抜くことができます。テストコードを書かないだとか、異常系を考慮しないだとか、仮の識別子(hoge等)のまま実装して放置するだとか、成果物の品質からは観測し辛い手抜きをバレずに行うことができます。極論を言えば、契約終了後に自動的に動かなくなる爆弾を意図的に仕掛けることすらできてしまうわけです。特に開発は一括契約で保守運用は他社で計画されている場合等は特に問題を先送りにしたソースコードが納品されるケースが多いような気がします。
本番のデータベースを覗ける
ある程度の権限を与えられている技術者は、サービスの本番データベースを管理、あるいは閲覧できる立場にあると思います。本番データベースは宝の山です。ユーザーのメールアドレスのリスト、見込み客のリスト、ユーザーの行動履歴等、出すところに出せばお金になるようなデータが手元にあるわけです。ユーザーの性別と年齢を絞り込んでメールアドレスを取得して出会いを探す技術者もいるかもしれません。美容師がお客さんの連絡先をホットペッパービューティの予約情報から取得してプライベートな連絡を行ったなんて事件[4]もありましたし、技術者も似たようなことができるわけです。
技術者本人がどのように悪用するかは別にして、本番データベースの内容をどの範囲まで公開するか、という判断も場合によっては技術者が行うことになるでしょう。例えばサービスの管理ページに数百人の社員が全員アクセスできる場合、特権アカウント以外の人にはユーザー一覧画面のメールアドレスや氏名といった個人情報に深く関わる情報をマスクするようなロール処理を入れる等の配慮をしておいた方が良いかもしれません。これはサービス設計や運営の問題なので尚更是非を問えることではありませんが、技術者が開発関係者で最も個人情報の扱いに対するリスクの知見がある場合も多いので、技術者が率先して配慮した方が良いこともあります。
統計データを作れる
サービスの運用によって蓄積される情報からは、多くの統計データが得られます。しかし、統計データから差別的な思想を助長してしまうような情報が可視化されてしまうことは珍しくありません。具体的な例を挙げることは控えますが、性差や人種に関する統計データ等を曲解した形で切り取って政治的な主張に利用されてしまうことも考えられます。我々日本人も仮に「規約違反して BAN されるのは日本人ばかり」とか、「悪質なコメントを投稿するのは日本人ばかり」とか言われると良い気はしませんが、そういったデータを統計情報として可視化できてしまうのが我々の力です。
人々が安全だと信じているものを破れる
人々が安全だと信じているけど技術者の目線からはそれほど安全ではないものって世の中に沢山ありますよね。例えば HTML の input
要素の type="password"
属性です。多くの人々はパスワードのフィールドに入力を行うと「●●●●●●●●」のようにマスクが行われるので読み取られる恐れはないと信じていますが、我々は developer tools で input
要素の type
属性を書き換えるだけでパスワードを読み出せてしまうことを知っています。気になるあの子がノートパソコンで Twitter を開いたまま離席している間に、裏垢のログイン情報を盗み出すこともできてしまうわけです。[5] その他にも zip ファイルのパスワードや、フリー Wi-Fi 等、人々が安全だと信じている様々なものの安全性を破る力を手にしているのが技術者です。
他の技術者への配慮の話
最後に個人的な感情の話をさせてください。技術やソフトウェアに対して否定的な意見を述べる場合の配慮の話です。こちらも、あなたに「配慮しろ」と促すための章ではありません。あくまで「私は気になる」という主張と、あわよくば「確かに配慮は大切かもしれないな」と誰かが考えるきっかけになることを願って書いた章です。
好きなものを貶されるのは辛い
自分が愛情や熱意を注いでいるものを貶されると気分を害してしまう人は多いと思います。私もその傾向が強いタイプです。そのため、技術やソフトウェアに対して「クソ」や「オワコン」のような言葉が浴びせられる場面を目にすると悲しい気持ちになります。理由も説明できないのに「廃れ始めの技術を貶せば通っぽく振る舞える」程度のモチベーションでオワコンだと声高々に叫ぶ人々を見ると大変辛い気持ちになります。エアプのポジショントークだと思っていても、やはり気になってはしまうものです。
技術やソフトウェアには開発関係者が確かに存在している
何故か忘れがちですが、どんなものにも開発関係者が存在しています。我々が普段から使っている技術やソフトウェアは当然のように独立してそこにあり、批判の言葉はその独立した技術やソフトウェア単体に向けて行われたもので開発関係者を否定する意図がなかったとしても、子を貶された親が悲しみを覚えるように、開発関係者も批判の言葉を自分ごとのように捉えてしまうのは無理のないことだと思っています。私も自分が期待している挙動をしない表計算ソフトウェアや拡張が難解なライブラリを心ない言葉で非建設的に否定していた過去があって大変後悔しているのですが、否定的な意見を述べる際に開発関係者を意識できるようになったきっかけは、Matz の以下のツイートでした。[6]
But we are mere mortals. We sometimes feel sick. Please be constructive.
と、開発者も人間なので気分を害することもあるため建設的であってほしいと述べています。有名税だとか、気にしなければいいだとか、いろんな意見はあると思いますが、Matz ほどの人物であってもユーザーの声に心を良くも悪くも動かされています。有名な人であれば人智を超越した鋼の心を持っているだろうとか、そういう忙しい人は非建設的な意見を気にする余裕なんかないから何を言っても平気だろうとか、何故かそういうイメージをしてしまいますが、案外そうでもないようです。
結構皆エゴサしてる
インディーズのゲームやほとんどスターの付いていない小さなライブラリ等であればともかく、ある程度の規模を有するゲームやライブラリの作者が、いちいち自分からエゴサーチして評判を見に行っているとは考えにくい方も多いと思います。放っておいても Issue や問い合わせフォームに山のように声が寄せられているので、そちらの対応で充分だし手一杯であろうと。しかし、現実には有名ソフトウェアの開発関係者であってもエゴサーチでユーザーの声を確認している人は多いです。大手のスマホゲームの開発に携わっている方が 5ch を見ていると聞いて驚いたことがあります。Twitter で ActiveRecord の話をしていたら、kamipo さんから直接リプでアドバイスを頂いたこともあります。同じく Twitter で Next.js の話をツイートしていたら Vercel の chibicode さんからリプでアドバイスを頂いたこともあります。逆に言えば、開発関係者に届いてしまうなんて想像もせずに発した汚い言葉や強い否定も開発関係者の目に止まっている可能性があります。ちなみに私も自分が開発しているサービスにおいてキャンペーンで広告を打ったりテレビ CM に露出したりした際にはエゴサーチしてユーザーの意見に一喜一憂しています。その声、意外と届きます。
開発者にしかわからない事情もある
Twitter や飲み会で、「あいつがやってたプロジェクトを引き継いだことあるけどクソコードだったよ」のような陰口が叩かれている場面に立ち会うことがあります。しかし、過去バージョンとの互換性の問題であったり、元々引き継がれたときの設計の問題であったり、納期の問題であったり、その他様々な問題によってあるべき設計とあるべきコードで仕上げることは難しいのが現実です。技術者の多くはそれを理解しています。しかし、他人の技術力や仕事に対しては、そういった様々な問題を考慮せずに評価を下してしまいがちです。当事者にしかわからない事情もあると想像すると、批判や評価の方法は変わってくるかもしれません。
終わりに
本記事では、技術者が己の正義感や道徳心を試される機会について記述しました。だからどうしろ、という話ではありません。記事中でも繰り返している通り、あなたの道徳心や価値観をコントロールする意図は一切ありません。ただ、技術者という職業は、倫理上問題があったり、法的に問題があったりする場面に直面することがとても多い傾向にあると思っています。また、他の技術やソフトウェアに対しての評価を発信する機会も多いと思います。そんな時、この記事を思い出して頂けたら幸いです。お目通し頂き、ありがとうございました。
Discussion