静かなる名辞

pythonとプログラミングのこと

2019/03/22:TechAcademyがteratailの質問・回答を盗用していた件
2019/03/26:TechAcademy盗用事件 公式発表と深まる疑念



はてなブログの独自ドメイン化でカバレッジが切り替わらないときの対処

はじめに

 去年の秋頃、このブログを独自ドメイン化しましたが、今年に入ってもSearch Console上で古いサイトのインデックス・カバレッジが大量(数百件とか)に残ったままでした。

 思いついた方法を試したところ、さほど重要でないページ数件*1を残してカバレッジをすべて新URLに移動できました。

前提

 サイトの移転に際して、googleは以下の手順を踏むことを推奨しています。

サイトを移転する
0.サイト移転に関する基本情報を確認します。 手順の概要とユーザーや掲載順位に与える影響について確認しておきます。HTTP から HTTPS へ移転する場合は、HTTPS に関するおすすめの方法を確認してください。
1.新しいサイトを準備して、十分にテストします。
2.現在の URL から対応する新しい形式への URL マッピングを準備します。
3.元の URL から新しい URL にリダイレクトするようサーバーを設定して、サイト移転を開始します。
4.元の URL と新しい URL 両方のトラフィックを観察します。
概要: URL の変更を伴うサイト移転 - Search Console ヘルプ

 これだけだとはてなブログProの契約でやってくれる移転処置とSearch Consoleから行う手続きだけでぱっと見大丈夫なのですが、ヘルプページをよく読み込んだ結果、以下の記述を発見しました。

移転先のサイトについては、元の URL と新しい URL を含む、事前に用意した 2 つのサイトマップを送信します。このようにすると、Google のクローラが元の URL から新しい URL へのリダイレクトを検出しやすくなり、サイトの移転がスムーズに進むようになります。
3. サイト移転を開始する - Search Console ヘルプ

 あー、元のURLと新しいURLを含んだサイトマップ? そんなものが必要なんですね。

 しばらく考え込んだ結果、「googleのクローラが旧URLのクロールを試みる→301リダイレクトを検出→インデックスを切り替える」という流れで処理されるのだろう、と察しました。

 移転後、旧URLへのクロールは一日10未満という数字が続いていました。毎日10ページ処理してくれればそれでもいずれ切り替わることが期待されますが、外部リンクから来ているクローラだったりすると同じページしかクロールしてくれない訳で、クロールされなかったページは切り替わらないわな・・・。

対処

 はてなブログではサイトマップを編集できません(重要)。また、なぜか不具合があり、そもそも通常の状態でもいまいち正常に機能していなかったりする(googleがうまく読み込んでくれない)のがはてなのサイトマップです。改善してほしいのですが。

 サイトマップを頼るわけには行かないので、他の方法で旧URLをクロールさせます。理屈の上ではどうやってもいいはずです。

方法1:Fetch as Googleを使う

 Fetch as Googleを使って旧URLにクローラを巡回させます。・・・と書いておいて恐縮ですが、Fetch as GoogleというツールはSearch Consoleのバージョンアップに従って消滅しています。今はURL検査ツールというもので代替できます。

 とにかく、これらを使えば任意のページをクロールさせる(厳密にはクロールしてくれ、とお願いする)ことが可能です。ということで、何ページか送信してみたところ、それなりに効果があるような雰囲気を感じました。

 ただ、何百件もちまちま送信するのは大変ですし、やりすぎると自動操作を疑われるのか、画面上で操作できなくなる(やろうとしてもエラーになる)問題があります。数件だけ残ってしまったというのならともかく、普通の状況では使いづらいかと。

方法2:旧URLのカバレッジで表示されるページすべてへのリンクをサイト内に張る

 googleのクローラーはリンクを辿ってくれますから、理屈の上ではクロールしてほしいURLへのリンクを張ったページを作ってそのページをクロールさせれば、リンク先も見てくれます。

 ただし、この方法は若干ハイリスクです。リンクだけ載せまくったページなんて作ったらスパム認定されかねません。更に、このブログではGoogle Adsenseも使ってしまっているため、そちらの規約との兼ね合いも考慮する必要があります。

 ・・・ということで、プロフィールページの下部に載せておきました。他にコンテンツのあるページならなんとか許してもらえるでしょう。

 やり方としては、まずSearch Consoleで旧URLのインデックス・カバレッジを開き、有効なURL一覧をダウンロードします。

ダウンロードボタンは右の下矢印
ダウンロードボタンは右の下矢印

 csvで落とせるので、適当にいじってwebリンクになるようにします。私はリンクテキストをURLとしたaタグに変換したりするスクリプトを書きました(3行くらい。URLをそのまま貼ってもだいたいリンクが自動挿入されるのだが、一部パラメータなどがうまく認識されない)。できたらそのまま、好きなページに貼り付けます。

 この方法を取ったところ、次の日くらいにSearch Console上のクロールの統計情報で旧URLが猛烈にクロールされていることが確認でき、数日後には旧URLのサイトで登録されていたページが新URLのカバレッジに移動しました。成功です。

 ちなみに、プロフィールページ下部のリンクは、その後一週間ほど様子を見たあと削除しました。

懸念

 Search Console上ではすでにほとんどのページが移転できているのですが、なぜか旧URLに一定の検索流入が残っています。google検索で適当なキーワードを入れて確認した感じ、一部のページは旧URLのまま表示されてしまっているようです。

 これがキャッシュなどが一時的に残っていることによる効果なのか、変則的なことをしたせいで問題が発生しているのかは不明。

 ちなみに、これをやった直後は検索流入が1割ほど減りました。回復傾向にありますが、元の水準まで回復するかはなんとも言えない状況です。

 また、それなりのリスクもあり、上手くいく保証もないので、この記事を読んだ方は安易に試さないでください。旧URLのままでも実害は少ないですし、しばらく待てば自然に切り替わる可能性もあります。ただ、数ヶ月待っても駄目なときはこれを試す価値はあるかもしれません。

まとめ

 この方法で私のサイトの場合はうまくいきました、という報告です。一般的に使えるテクニックかどうかはまた別だと思いますが、1つの事例として参考にしてください。

*1:なぜ残ったのかは不明だが、実害もないので放置

TechAcademyのその後

はじめに

 以前このような記事を書きました。

www.haya-programming.com
www.haya-programming.com

 TechAcademyに問い合わせたところまでで終わっていましたが、その後すこし私生活がバタバタしていたので、ブログを更新する暇がありませんでした。少し落ち着いてきたので、その後の流れをまとめます。

 まあ、動きらしい動きはないんですが・・・。

メール

 TechAcademyが「お知らせ」を出した後、私は彼らに対してメールによる問い合わせを行いました。先の記事にも書きましたが、再掲します(下に要約を載せるので読まなくて構いません)。

キラメックス株式会社様

貴社のオウンドメディアに対して、指摘のブログ記事を投稿したはやたかという者です。差し出し元の証明のため、このメールの文面は送信と同時に私のブログにて公開しますので、ご確認ください。
https://www.haya-programming.com/

今回の騒動を受けて、貴社の行った発表(https://www.kiramex.com/news/info/2019/5c98d89a6d027a17770002ea/)を拝見させていただきました。残念ながらこちらの内容は、少なくとも私にとっては不満の残るものでした。この発表を読んだ多くのteratailユーザ、貴社サービス利用者も同じ思いを抱いていると確信しています。よって、以下の問い合わせに応じていただきたく思います。

まず、以下の疑問にお答えください。
・TechAcademyマガジンの盗用疑惑は数ヶ月前からインターネット上で囁かれており、その度に記事削除の対応が行われていた。より早い段階から把握していた社員もいたはずであり、どうしてこれほど対応が遅れたのか。
・そもそも(仮に盗用がなかったとしても)「質問の存在を捏造して掲載する」という行為自体がTechAcademyマガジンのユーザ・読者を裏切る行為である。この点については社内でどれだけの人間が認識していたのか。問題とは思わなかったのか。

また、次のような要望があります。これについてはTechAcademyのサービスに関わる問題なので、ユーザではない私から申し上げるのも恐縮だと思いますが、あえて貴社のユーザを代弁する形で書かせていただきます。
上でも述べましたが、今回の件については、「そもそも実際に寄せられたものではない架空の質問と回答を創作し、実際にTechAcademyに対して寄せられた質問であると偽って掲載し、企業の宣伝等に用いるという行為自体に深刻な倫理的・コンプライアンス的な問題がある」と考えています。貴社の発表では、これについてどう考えているのかが読み取れませんでした。
また、キラメックス株式会社のお知らせページでの公表は、必ずしも多くの貴社サービスのユーザに触れるものではありません。しかし、貴社の行われた行為はそれらのユーザを裏切ったものであり、自社のユーザに対して謝罪する姿勢がなければ、このことを知ったユーザは「TechAcademyは信用できるサービスではない」という印象を抱くでしょう。
よって、以下の2点について要望します。
・まず「架空の質問・回答を『実際に寄せられた』ものとして掲載したこと」について立場をはっきりさせるような声明を出すこと。
・TechAcademyのページやTechAcademyマガジンのページ、SNS等にも声明を出し、今回の件について周知を図るとともに、謝罪する姿勢を示すこと。

何卒よろしくおねがいします。

 要約すると、まず

  • 発表しなかった範囲で確実に対応を行っていた件
  • そもそもユーザから質問があったという事実から捏造してた件

 についての経緯と責任の所在を明示するよう求め、

  • 捏造の件についても声明を出すこと
  • 会社サイト以外の多くのユーザが閲覧するサイト(TechAcademyやTechAcademyマガジン、SNS等)での周知

 を要望しました。

 2019/03/26にメールを送りましたが、現時点で返信はなく、要望が聞き入れられた形跡もないため、スルーされた形です。

 少し言い訳させてもらうと、これはいずれもタダでは済まない痛みを伴う要望であり(外部に対して責任を示すこと、売上に直結するような周知を行うこと)、聞き入れられるかどうかはメールを出した時点でも、楽観的に見て五分五分くらいだと考えていました。スルーされたことに驚きはありませんが、少し悲しいと言えば悲しいところです。

 @TechAcademy社員の皆さん もし見ていたら、今からでも良いのでメールに返信して、要望も可能な範囲でいいので検討してください。よろしくおねがいします。

キラメックスの「お知らせ」第二弾

 キラメックスは自社サイトで、ひっそりとお知らせ第二弾を発表しています。

www.kiramex.com

 なぜ出したのかは不明。私がああいうメールを送って、確実に把握しているであろう状況でも、頑なに企業サイトにだけ掲載する根性って・・・

 「今後の対応方針等」と「既存コンテンツへの校閲等」の2つが主な内容となっています。まあ、かいつまんで見ていきます。前文等は必要ないので省略しています。

1.今後の対応方針等
(1) 今後の対応方針
(内容が少ないので省略)

(2) 今後問題を発生させない仕組み作り
今回のような問題を今後発生させないために、運営体制を強化し、事前に問題が発生することを防ぐような仕組みを構築し、強化して参ります。具体的には、以下のような対応を実施して参ります。

・記事製作ガイドラインの改訂
・コンテンツ作成フローの見直し
・コンテンツ作成フローにおける編集員による複数名での記事内容確認体制の徹底
・情報流用をチェックする第三者事業者提供のツール導入を含めた、第三者によるコンテンツの確認体制の新設
・運営体制強化のためのオウンドメディア編集者増員
・コンテンツ管理およびチェックプロセスの強化
・社内規程の改訂による厳罰化

(3) 情報取り扱いリテラシーに関する意識改革
今後、今回のような問題を発生させないためには、問題の発生を防ぐ仕組み作りとともに、実際に運営に携わる弊社社員および関係者の意識改革が不可欠だと考えております。そのため、弊社社員および協業する弊社関係者に対し、情報取り扱いリテラシー教育を実施し、それを徹底して参ります。
また、弊社におけるガイドラインおよびポリシーが適切に遵守されているかどうかをチェックすべく、コンテンツに関わる社員および関係者に対し、弊社ガイドラインおよびポリシーに対する理解度チェックを行って参ります。

 そのまま読んで面白いものはありません。ぱっと見ありきたりな内容です。まあ、こういうのは言うは易しの典型なので、頑張って実行してくださいとしか思えません。

 そう思いつつ、「『編集者増員』ってこれまでどれだけ貧弱な体制で編集やってたんねん」と思って「techacademyマガジン 編集」とか何気なくgoogle先生に聞いてみたら、3番目くらいに答えが出てきてしまいました。

www.wantedly.com

 1992年生の新卒を入社後いきなり編集長にしてるぅ

 たぶん、実質的に、すべて彼一人の実績(やらかし)の可能性が高い、ってことですよね。なんとなくすべてを理解してしまったような気持ちになりました。

 ちょっとブログが書けたりする若者を新卒採用で捕まえてきて、一人でオウンドメディア運営を任せる構図かぁ・・・

 念のために書いておきますが、編集長の彼個人を責める意図は私にはまったくありません。個人の責任に帰してしまえば、集団の非を問えなくなります。あくまでも会社組織の責任であり、こういう人事采配を行ったキラメックスに対しては憤りを感じますが、編集長個人はきっと限られたリソースと能力の中で善戦したのでしょう。まだ将来のある方ですし、今回の件を反省し、今後は健全なWebメディアの運営に尽力していただければと思います。

 とても「駄目な例」なので、メディア運営に携わっている皆さんは反面教師にすると良いと思います。会社の看板です。イメージ下がるような看板は出さない方がマシです。

 この件はこれ以上特に言うことはありませんが、他にもキラメックスは既存コンテンツへのチェックを行ったとしています。

2.既存コンテンツに対する校閲等
今回の問題を受けまして、弊社において、2,000記事以上の弊社既存コンテンツ全てに対する再校閲を実施いたしました。また、流用記事を作成した外部エンジニアおよび外部ライターに対しては、2019年3月25日付けのお知らせのとおり、既に業務依頼を停止いたしました。

 ほーん。

 たとえばこれ。

Pythonのimportメソッドの使い方【初心者向け】 | TechAcademyマガジン
(どうせ修正されるので魚拓)

 import「文」でしょ?

7.11. import 文 | 7. 単純文 (simple statement) — Python 3.7.3 ドキュメント

 技術記事の校閲なんて、技術のわかる人がチェックしないと駄目です。理系の専門書を出す出版社では、そのためにわざわざ理工系出身者を採用していたりするくらいです。

 こういうのはまともな編集者(それこそトップクラスのエンジニアとして働ける実力のある人間)を置かないとどうにもならないと思います。そういう人はメンターには結構いても、正社員にはほとんどいないという構図なのでしょう。某侍とかと同じ体質です。

 ほんと、こういうのなんとかしろよ、と思うのですが。初心者が困惑するような記事をネットにばらまくのは害悪です。せめてコメント欄を開けておいて、第三者が気軽に指摘してくれるような仕組みにしないと。

本ブログの今後の対応

 私は今回の件については直接の利害関係は一切ないただの第三者なのですが、なにしろこれを含めて3記事も書いてしまったので、何も言わずに平常運転に戻すのもなんだか変な感じがします。そこで、ここで今後の対応について示しておきます。

今後この件についての記事は書きません。

 100%ないとは言い切れませんが、たぶん書かないと思います。

 もし何かあれば、必要と認められる範囲で既存記事を加筆します。ただし、匿名掲示板やSNS等はすでにリアルタイムでヲチしていないため、はっきり言って状況を把握しきれません。最新情報等は期待しないでください。

ヘッダでの周知は継続します。

 この事件が発生して以来、本ブログのヘッダ部に関連記事へのリンクを貼っていますが、これは無期限で継続します。ただし、「TechAcademyがマガジン・SNS等での周知を行えば」解除します。また、運営上の都合でサイドバー等他の場所に移動する可能性も皆無ではありませんが、少なくとも目立つ位置には貼り続ける予定です。

 本ブログには初心者の方もたくさん来られていて、プログラミングスクールの受講を考えている方、すでに受講されている方もいると思います。私にネットのIT界隈を大炎上させるような影響力はありませんが、せめて見に来てくれた方に対しては判断材料を提供しよう、という考えです。

まとめ

 今後、TechAcademyが健全に運営され、teratailユーザのような第三者、そして受講者の方々に不利益がないことを願います。

TechAcademy盗用事件 公式発表と深まる疑念

これまでの経緯

 TechAcademyマガジンで、teratailの質問・回答の盗用疑惑があり、前回の記事で取り上げました。

www.haya-programming.com

 私が書いたその記事はTwitterやはてブ経由で拡散して多くの方に見ていただき、TechAcademyマガジンの運営上の問題が多くのインターネットユーザに共有されました。それを受けてか、昨日teratail運営、TechAcademy運営からそれぞれ公式のアナウンスがありました。


www.kiramex.com

 TechAcademyの一方的な盗用であったことが確認された形です。とはいえ、これですべて腑に落ちたかというと幾つか疑念が残ってしまったので、それについて書いておきます。

teratail運営側の説明

 teratail運営側の説明している内容をまとめると、

  • TechAcademy運営が勝手にやったことである。

 という一点です。また、ユーザの投稿を活用する際は適切な周知を行う(teratail運営承認のもとで今回のように勝手に不当利用されることはないので安心してほしい)としています。

なおteratailがこれまで他メディアに対して、コンテンツ使用に関するライセンス等を行なったことはありません。
今後、仮にユーザー様の投稿を活用した活動を行う場合でも、ユーザー様が認識できる方法で事前にお知らせをいたします。

 よってteratail運営はこの件に関しては100%白であることが確定しました。

 一方、teratail運営は、

  • teratailの保有する権利の侵害に対する、損害賠償請求などを含めた対応
  • 今後はこれ以上追求しないのか

 といった点については明らかにしていません。まだ検討中という可能性もありますし、大きな実害を被った訳ではないこと、運営会社同士には(TechAcademyの受講生の就職を斡旋するといった)ある程度の友好関係があることを考えると、これ以上ことを荒立てるつもりはなく、穏便に済ませるつもりなのかもしれません。まあ、これらに関しては運営会社同士で勝手にやってくれれば良いので、私からとやかく言うことはありません。

 ということで、とりあえず私個人としてはteratailを当分は使い続けるつもりです。運営側に黒い要素がなくて少しだけ安心しました。

TechAcademy運営側の説明

 TechAcademyを運営するキラメックス株式会社は、会社のホームページ上のお知らせで声明を発表しました。

www.kiramex.com

 基本的に盗用した事実は認めているのですが、読んでみた感想はというと、頷ける部分もあるものの全体としては「んんん?」です。死体蹴りっぽくなっちゃいますが、いちいちツッコミを入れてみます。

『■ご指摘に対する時系列の対応について 』について

 キラメックス株式会社の発表によると、今回の件の「時系列の対応」は以下の通りです。彼らの発表を元に一部要約・編集して掲載します。

・2019年3月20日23時
 はてなブログ「saitouena」にて質問と回答の盗用に関する上記のご指摘が公開される*1
・2019年3月20日23時
 ブログの内容をもとに該当記事の精査を行うため、ご指摘の記事を含めて35件の一時削除を実施
・2019年3月22日9時
 はてなブログ「静かなる名辞」にて質問と回答の盗用に関するご指摘が公開される*2
・2019年3月22日18時
 代表取締役社長を筆頭に調査チームを組成し、過去の記事について精査。問題のある記事を一斉削除。

(以下は元の記述を踏まえて私が付け加えたものです)
・日時不明(22日か25日)
 teratail運営に対して直接伺い謝罪。

・2019年3月25日
 Webサイトに報告*3

 私のブログをきっかけに調査チームを立ち上げたのですか・・・ちなみに3月22日時点では件の記事はせいぜい150PV程度しか集めていません(土日に伸びて現在は累計2500PVほどです)。金曜日中にtwitterで投稿された方はいましたが(ブログ読者の方や私の知り合いが主)、それを察知したとしたら恐るべきエゴサ力とでも言うべきでしょうか。

 ということは置いておいて、この時系列表を見て浮かぶ疑問点は以下の3つです。

  • 2019年3月20日以前にもSNSや匿名掲示板で散発的に話題にされていて、記事削除の対応もsaitouenaさんが取り上げる以前に行われていた。少なくとも数ヶ月前から、一部の記事に問題があることを把握している社員(ないし少なくとも記事を削除する権限のある人間)がいたことになる。それについての説明はなし。
  • 「精査を行うために一時削除」とあるが、もみ消しと捉えられても仕方ないのでは。
  • それでも精査していたとしたら、2019年3月20日にsaitouenaさんが言及してから、22日に私が言及するまで丸一日以上あったのに、何をしていたのか。見れば一発で分かる問題であり、最速で動けば21日に調査チーム結成、当日中に状況把握と記事削除を済ませ、22日にはteratail運営への謝罪と公式発表というスケジュールでやれたはず。

 はっきり言って、21日頃まではもみ消す方向で動いていたけど、(私のブログが中途半端にバズったせいもあって)もみ消しきれないと悟った結果が22日以降の動きなのでは? というのが「時系列の対応」を見て思った率直な感想です。あるいは、権限のある上層部が状況を把握していなかったということかもしれませんが。

 グダグダ書いていて自分でも嫌になってきましたが、こんな感じであげつらっていくつもりです。

『■今回の問題とその原因 』について

 TechAcademy運営側は、以下のように書いています。長いですが全文引用します(読み飛ばしてください)。

■今回の問題とその原因
TechAcademyマガジンでは2018年4月から2018年7月まで、TechAcademyマガジンの読者などからプログラミングを学習する上でぶつかりやすい疑問や質問を集め、それに対して現役エンジニアが回答するコンテンツ「実際のエンジニアが回答するシリーズ」を公開していました。

このコンテンツ制作作業の中で、一部記事では学習者の声から疑問を持ちやすいキーワードを社内編集部が設定し、それに関連した質問案作成を外部ライターに依頼、それを社内の編集チームが確認のうえで、ライターがコンテンツ投稿まで行っていました。また、回答に関しては、現役エンジニアが質問をピックアップし、記事の投稿を行っていました。

そして、この時期公開したコンテンツのなかに、今回問題となりましたteratailの内容がそのまま使用されていた記事がありました。

この問題が起きた原因として、協力を依頼した外部のライター・エンジニアの一部メンバーに著作権などに関する意識が不十分な方がいたこと、外部の方に執筆頂いたTechAcademyマガジンの記事は全て弊社で編集を行なっておりましたが、それらのコンテンツに対する著作権保護に準じた弊社内での記事の流用チェックが十分に機能していなかったことが挙げられます。

 (゜ロ゜)。。。

 5回くらい読み直して、ようやく何を言っているのかおぼろげにわかってきました。わかりやすくイラストで説明します。

 まず、外面的な記事の体裁はこうでした。

外面的な体裁
外面的な体裁

 この通りやっていれば、何ら問題なかったでしょう。でも実際はこうでした。

実際
実際

 ・・・これ現実的ですかね? 質問と回答は独立に作られているということらしいですが。。。

 どちらも同じteratailのページからコピペされているケースも多々あった訳で、単純に一人でぜんぶコピペしたんじゃ? という気がします。まあ、この通りだとしたら、

  • 質問者役コピペライター:「コピペで質問作ったろ!」
  • 回答者役コピペライター:「おっ、この質問teratailからのコピペだ! 回答もコピペしたろ!」

 という素晴らしい共同作業があった訳ですね。

 あと、さらっと流していますが、

一部記事では学習者の声から疑問を持ちやすいキーワードを社内編集部が設定し、それに関連した質問案作成を外部ライターに依頼

 とありますが、そうやって作成した記事を「現役エンジニアが回答」と偽って発表している時点で言い逃れできませんから。それに、実際にTechAcademyに寄せられた質問なんてそもそもあったのでしょうか? 現時点でTechAcademyマガジンのサイトで「現役エンジニアが回答」のようなキーワードで検索をかけてみたら1記事もヒットしなかったので(リンクテキスト等除く)、この形式の記事はすべて削除されてしまった訳です。そもそもすべてが「なんちゃって寄せられた質問」だったのでは? という疑惑があります。

 まあ、どうやって記事を作っていたのかは正直どうでも良いです。それよりこの節の全体に言えますが、TechAcademy側がどこまでコピペに関与したのか、まったく把握していなかったのかある程度はわかっていたのか、どのタイミングで把握してどう動いたのか、等、肝心な部分の説明がぼかされています。文字通り受け取るなら外部の人間が勝手にやって20日~22日に把握したたという主張のようですが、信じがたい点がいくつもあります。そのせいで、納得の行く説明にはなっていない感があります。

 個人的には、本当に外部の人が勝手にやらかしてチェックをすり抜けてしまったのなら、もっとスムーズに対応できたでしょ、という気がしています。数ヶ月前から散発的に話題になっていた訳ですし、運営はそれを把握していた*4でしょうから、その時点で動くべきだった。動けなかったのは、よほど重大な責任が内部にあったのでは? という気しかしません。

『■今後の対策 』について

 キラメックスは以下のように述べています。

他サイトなどからの著作物の流用がないように、下記対策を徹底し、誠意をもって運営に努めて参ります。

1)協業する外部ライター・エンジニアへの情報取り扱いリテラシー教育の徹底
2)運営体制強化のための社内のTechAcademyマガジンの編集者増員
3)情報流用をチェックする第三者事業者提供のツール導入
4)当該の流用を行った外部エンジニア・ライターへの業務依頼の停止

 いや、上でも書いたけど「現役エンジニアが回答」と偽って発表している時点で、単純な著作権侵害の問題ではありませんからね?

 外部に責任を押し付けたいようですが、運営体質そのものを変えないと駄目だと思う。

そもそも論

 この発表は、「キラメックス株式会社のお知らせページ」に掲載すべきものだったのでしょうか?

 はっきり言って、誰が読むんだという感じです。「祭り」に乗っかった人たちに読んでもらえれば良く、できるだけこの事実が広がらないようにしようという魂胆が透けて見えます。同様の声明はTechAcademyのトップページやTechAcademyマガジンには今の所掲載されていません。Facebook, Twitter等のSNSでの発信もなし。

 もちろんteratailのユーザや運営に対する謝罪も大切だとは思いますが、それよりも謝罪しないといけないのは、彼らが裏切ったTechAcademyマガジンの読者、TechAcademyのユーザに対してではないでしょうか。私から言うのはどうなのかという面もありますが、はっきり言ってどうかと思います。

ひどかったので問い合わせる

 ここまで読んでいただいた方には理解していただけたと思いますが、キラメックス株式会社の対応は少なくとも私にとって不満の残るものでした。ということで、以下の文面でキラメックス株式会社に対して問い合わせを行いました。

キラメックス株式会社様

貴社のオウンドメディアに対して、指摘のブログ記事を投稿したはやたかという者です。差し出し元の証明のため、このメールの文面は送信と同時に私のブログにて公開しますので、ご確認ください。
https://www.haya-programming.com/

今回の騒動を受けて、貴社の行った発表(https://www.kiramex.com/news/info/2019/5c98d89a6d027a17770002ea/)を拝見させていただきました。残念ながらこちらの内容は、少なくとも私にとっては不満の残るものでした。この発表を読んだ多くのteratailユーザ、貴社サービス利用者も同じ思いを抱いていると確信しています。よって、以下の問い合わせに応じていただきたく思います。

まず、以下の疑問にお答えください。
・TechAcademyマガジンの盗用疑惑は数ヶ月前からインターネット上で囁かれており、その度に記事削除の対応が行われていた。より早い段階から把握していた社員もいたはずであり、どうしてこれほど対応が遅れたのか。
・そもそも(仮に盗用がなかったとしても)「質問の存在を捏造して掲載する」という行為自体がTechAcademyマガジンのユーザ・読者を裏切る行為である。この点については社内でどれだけの人間が認識していたのか。問題とは思わなかったのか。

また、次のような要望があります。これについてはTechAcademyのサービスに関わる問題なので、ユーザではない私から申し上げるのも恐縮だと思いますが、あえて貴社のユーザを代弁する形で書かせていただきます。
上でも述べましたが、今回の件については、「そもそも実際に寄せられたものではない架空の質問と回答を創作し、実際にTechAcademyに対して寄せられた質問であると偽って掲載し、企業の宣伝等に用いるという行為自体に深刻な倫理的・コンプライアンス的な問題がある」と考えています。貴社の発表では、これについてどう考えているのかが読み取れませんでした。
また、キラメックス株式会社のお知らせページでの公表は、必ずしも多くの貴社サービスのユーザに触れるものではありません。しかし、貴社の行われた行為はそれらのユーザを裏切ったものであり、自社のユーザに対して謝罪する姿勢がなければ、このことを知ったユーザは「TechAcademyは信用できるサービスではない」という印象を抱くでしょう。
よって、以下の2点について要望します。
・まず「架空の質問・回答を『実際に寄せられた』ものとして掲載したこと」について立場をはっきりさせるような声明を出すこと。
・TechAcademyのページやTechAcademyマガジンのページ、SNS等にも声明を出し、今回の件について周知を図るとともに、謝罪する姿勢を示すこと。

何卒よろしくおねがいします。

まとめ

 とりあえず進展はあったけど、まだ腑に落ちないという感じです。私としては、腑に落ちるまでやってくれ、と思います。

 とりあえず以上です。新たな動き等があればこの記事に追記していきます。

続報

 けっきょくもう1記事書きました。

www.haya-programming.com

TechAcademyがteratailの質問・回答を盗用していた件

編集履歴

2019/03/22 朝

 投稿。その後数回微調整。

2019/03/22 夜

 タイトルと内容を全面的に改稿。

  • 現時点で確証がない部分について表現・内容を修正
  • 情報を追加

2019/03/23 朝

  • 追記

2019/03/25

  • teratailへの問い合わせ結果を掲載

 「ライセンスしていない」とのことです。

  • それに伴ってタイトルおよび内容を調整

2019/03/25 深夜

  • teratail運営とTechAcademy運営からそれぞれ公式のアナウンスがありました。


www.kiramex.com

 これらを踏まえた続報記事を公開しました。

www.haya-programming.com

 また、この記事の内容は古い情報に準拠しています。いずれ更新していくと思いますが、現時点では手を付けられていません。最新の情報を知りたい方は、続報記事もあわせて御覧ください。

はじめに

 私はteratailというQAサイトで回答をしていて、pythonカテゴリ総合一位だったりします。あちこちのサイトを見ていたら、TechAcademyというプログラミングスクールのマガジンページがteratailの質問と回答を盗用しているかも? という話を見つけました。図々しいと思いながらも情報をまとめておきますので、読者の皆さんはなにかの参考にでも役立ててください。

先人たちのまとめ

 こちらのブログ記事などが概要を掴むのに良いと思います。

evalcat.hatenablog.com

 5ちゃんねるのteratailヲチスレでも取り上げられているので(現在進行形)、とりあえずリンクを貼っておきます。

medaka.5ch.net


 要約すると、

  • 「TechAcademyマガジン」というオウンドメディアで、主に「TechAcademyに実際に寄せられた質問に現役エンジニアのメンターが回答しました。」という体裁の記事にteratailからの転載と思われる投稿が多数(少なくとも2桁、下手したらそれ以上)ある。
  • 有志の作成した「転載記事リスト」には特定のメンターの名前(複数人。実名なのかどうか、そもそも実在する人物なのかは不明)が多く上がる。
  • TechAcademy側は「Twitterや匿名掲示板などで取り上げられた」記事を削除して対応中。

 という感じです。

一例

 こんな感じです。この問題が盛り上がり始めた、最初期のツイートで取り上げられたものです。なお、TechAcademyの元記事は消えていたのでWeb魚拓です。

【魚拓】curlコマンドをJavaScriptのAjaxで実行する方法とは【メンターが回答】 | TechAcademyマガジン
jQuery - curlコマンドをjqueryのajaxで実行する方法|teratail

 見ていただければわかる通り、出典として元の質問を示す訳でもなければ(まあ「TechAcademyに寄せられた」という体裁なので示せないのですが)、内容を書き換えて誤魔化すといった小手先の芸もありません。コードはもちろん、質問・回答の文言もほぼそのままコピペです。良識を疑うとかそれ以前に、「なんでこれで問題にならないと思ったの?」というのが率直な感想です。

 こういうのがン十件あり、深刻な事態を伺わせます。

法律上はどうなるのか

 ふと「teratailの規約が緩すぎて法律上何ら問題ない」ということになったら大変だと思い*1、teratailの規約を調べました。

第9条(権利帰属)

3.登録ユーザーは、投稿データについて、当社に対し、世界的、非独占的、無償、サブライセンス可能かつ譲渡可能な使用、複製、編集、改編、掲載、転載、公衆送信、上映、展示、提供、販売、譲渡、貸与、翻訳、翻案、配布などができる権利および二次的著作物に関する現著作権者の権利(著作権法21条ないし28条の権利をいい、商用利用を含む)に関するライセンスを付与します。
利用規約|teratail(テラテイル)

 基本的には健全な内容でした。teratailのユーザはteratailの運営会社に対して諸権利をライセンスしている、という立場です。

 よって、

  • teratail運営がTechAcademy運営に対して、こういう使い方が可能になるライセンスを付与したのであればセーフ
  • それ以外は法的にアウト

 という状況であると考えられます。ユーザがライセンスを付与しているのはteratailの運営会社に対してであって、それに関係ない事例に対しては通常の場合と同じ扱いになるからです。

 なお、こういう使い方をされるのを承知でteratail運営がデータの権利を渡した確率は蓋然的には限りなく0に近いと考えられます。あまりにも酷い使われ方であり、これを承諾したのであればteratail運営の信用問題にも発展しかねません。・・・が、その可能性も皆無ではないため、初稿の時点でこの記事に多くあった「断定的な表現」は後から修正しています(2019/03/22夜時点*2*3)。

 ※この件についてteratailに対して問い合わせを行っていましたが、2019/03/25に返信があり、ライセンスは行っていないとのことでした。

 よって、TechAcademyが合法的(?)にライセンスを得て掲載していた可能性はなくなりました。

 また、「TechAcademyに実際に寄せられた質問に現役エンジニアのメンターが回答しました。」という記載は著作権以外の問題も発生させます。teratailの質問・回答をコピペしてつくったQ&A記事の質問が実際にTechAcademyに寄せられている訳はないので、実態より多くの質問が寄せられている、と誤認させていることになります。これは一種の誇大広告「みたいなもの」でしょう。「こんなに賑わっているプログラミングスクールなら安心して勉強できる」と思って入会する人がいれば詐欺「のようなもの」です。ただ、私に法律関連の知識はないので、これがどの程度深刻なものかは正直なところわかりません。あくまでも参考として書いておきます。

そもそもTechAcademyとは何ぞや

 プログラミングスクールです。「最短○○でエンジニアに!」のような広告などをよく目にすると思います。

 スクールとしての評判は、ググって出てくるページなどを読んでください。実際に自分が体験した訳でもありませんし、これ以上述べることはしません。

 また、ありがちなことですが、この運営会社は営業活動の一貫としてオウンドメディアを運営し、Web記事も発信しています。「スーツを着たイケメンのお兄さんと女子大生風の女の子のアイコンがセリフでしゃべるページ」と言えば、検索で引っかかった記憶がある方も大勢いると思います。

 で、こういう盗用?なんて真似をしている会社はどんなところなのでしょうか? 去年に大炎上した侍エンジニア塾の場合、元中の人によれば「設立が新しく、資本規模も小さい会社」であり、いろいろな杜撰さも同情に値するかどうかは別として「わからんではない」という面がありました。

古巣の侍エンジニア塾(株式会社侍)の炎上について思うこと【2018/10/23追記】 - INODEVLOG

 ということで、運営会社のページです。重要そうなところだけ抜粋しています。

会社名 キラメックス株式会社
事業内容 プログラミング教育事業
設立 2009年2月2日
資本金 4,800万円(資本準備金を含む)
親会社 ユナイテッド株式会社(東京証券取引所マザーズ市場)

運営会社 | TechAcademy [テックアカデミー]

 歴史はそれなり(10年)にあるようです。

 ふーん、マザーズ上場企業が親会社ですか。立派な会社なのかな? と思ってしまいますが、どうやら完全に子会社化されたのは近年のようです。

ユナイテッド株式会社によるキラメックス株式会社の完全子会社化について(2016年2月3日) | キラメックス株式会社

 それ以前に資本関係があったのかどうかまでは調査不足で不明です。とはいえ、問題の記事は子会社化されてから出てきたものが多くを占める訳で、けっきょく「上場企業(の子会社)がこんな杜撰な真似をしている」という構図には変わりはありません。こういうのってコンプラ的に一発アウトだと思うんですが、どうなんでしょうね。

なぜ人は間違えるのか(なんでこんなことになってしまうのか)

 ここまでの説明でも、あまりにも酷い状況なのは皆さんにおわかりいただけたと思うのですが、「どうしてこんなことするの?」という疑問を持った方も大勢おられることでしょう。簡単にですが私が説明できる範囲で大雑把な背景を説明します(正確を心がけますが、憶測も含みます)。

 基本的に、まともな記事を供給する、というのはけっこうお金がかかります。「エンジニア」として食っていける実力のある人が一時間とか二時間かけて記事を書いたら、時給ン千円以上ですから相当なコストになります。ASCII.jpとかならそれでやっているかもしれませんが(まあ彼らも彼らで厳しいだろうけど)、ほとんどのところはコストを捻出できないでしょう。更に、オウンドメディアの場合は「安いコストで宣伝に寄与してくれればいい」程度に思われていて、それほど予算を割かれていないといった状況が容易に想像できます。

 なので、多くのIT系オウンドメディアは給料の安い自社社員(当然専門的な技術力はない)に書かせるか、クラウドソーシングなどで安く書いてくれる人を探して書かせるか、インターンにやらせるか、といった運営方法を取っていると思います。結果、qiitaの殴り書きよりひどいクオリティのオウンドメディア記事が量産されてしまう訳です。

 では、今回の件は、TechAcademyがクラウドソーシングとかで雇った人が暴走しちゃった?

 その可能性はほぼない、と個人的には考えます。普通、ライターにそこまでの裁量権はないからです。ああいう記事をライターの方が作ってしまうとしたら、「teratailの質問をTechAcademyに寄せられた質問として転載してほしい」という依頼を受けた、というケース以外まったく考えられません。

 頼まれもしないのにこっそりやってバレたら、次の仕事はなくなります。ヘタしたら「企業イメージを損なった」って訴えられかねない。

 だって、確実に真っ黒で法律違反な行為ですよ? ライターの裁量でできる訳がない。

 また、「インターネットで囁かれ始めてからの対応が『記事の削除』だった」という話もあり、限りなくTechAcademy本体*4が黒と言う他ありません。

 ではどの辺まで黒いか? 以下はすべて憶測になりますが、常識的な遵法意識とリスク感覚を持つ(であろう)上位の経営陣が最初からすべて把握していた、というのは考えづらい状況です。どちらかといえば、担当者数名くらいが暴走してこうなったような気がします、というかそれくらいが自然に思えます。

 いずれにせよまともな会社のやることとしては悪質すぎるし、企業イメージへの悪影響も大きいので、上の憶測が正しい場合、もしこれ以上オオゴトになれば担当者は誰かしら処分されるんじゃない? と見ています。あーあ、、、、

他にもがばいよ!

 さすがに盗用と比べると霞んで見えますが、クオリティは低いです。

ソースコード

n = 1
 n+=1
 print (n)

https://techacademy.jp/magazine/18190

 そのままコピペしました。きっと真似して書いた人は「IndentationError: unexpected indent」に悩まされるでしょう。

 推して知るべし・・・

今後の展開

  • とりあえずTechAcademyは事実関係を認めて謝罪した方が良いと思います。ライセンスの件についてはイマイチはっきりしませんが、アクセスしたユーザに嘘をついた(teratailのコピペをTechAcademyに寄せられた質問と回答として紹介した)ことは事実です。「なかったこと」にするには遅すぎます(最初から遅すぎるのだが)。逆に、本格的に炎上する前に傷を閉じられれば、相対的に浅く済む可能性もあります。
  • teratail運営はできれば早急にこの件についての立場を示すべき。「ああいう使い方をされるのを承知で売っていた疑惑」が少しでも残っている限り、ちょっと安心して使い続けることができません。

 →2019/03/25に問い合わせの結果が来て、「ライセンスしていない」とのことでした。今後の対応は協議中とのことです。
 詳細は記事末尾の追記を御覧ください。

 以下の2つは、権利の不当な侵害があったとした場合ですが、

  • 権利侵害の不当利益返還請求とかは、個人で考える気には正直なれません。理論的にはできるだろうけど、手間に見合った額が取れるかと言うととても微妙な気しかしない。そもそもteratailの投稿で投稿者が直接経済的な利益を得ている訳ではなく、ユーザから不当利益返還請求は難しいのでは? という考えに傾いています。teratail運営はTechAcademyの記事にPVが流れた分の損失を被っているので、できるかもしれないけど。
  • teratailの運営は、不当に権利を侵害されたのであればなんか言ってみるのはありだと思います。ただ、teratailの運営会社のレバレジーズ(本業は人材アウトソーシングや転職支援などです)と、TechAcademy側にはそれなりの取引関係があることを考慮すると、最終的に「穏便に済ませる」といった判断に落ち着くのではないでしょうか。さすがに「今後も野放し」というのは、一teratailユーザとしては支持できないところなので、ほどほどの落とし所を探ってほしいのですが。

 おまけ。

  • この記事のアクセスが伸びる(伸びて)

今後の予防策

 プログラミングスクールや、オウンドメディア系のIT記事などが世間を騒がせた事例は去年幾つかありました。

qiita.com

 さすがにここまで続くと構造的な問題があるとしか言えません。予防策を書きます。

 とりあえず一般ユーザーに対しては、以下くらいしか言えることがありません。

  • オウンドメディア系記事は検索で出てきても信用しない。はっきり言ってクオリティの平均値は個人のブログ以下ですし、オウンドメディアによくある初心者向け的な内容であれば、書籍やチュートリアルを読んだ方がわかりやすくて正確な知識がつきます。
  • プログラミングスクールは・・・まあ、どうしても必要なら評判とか見て選んでください。オンライン学習なら書籍+progateとかやっすいサービスでも(優秀な人は)できると思うので、そういうのを検討するのもありです。また、オンラインスクール系よりは昔ながらの「専門学校」などの方が安定はしているでしょう。

 IT企業などの経営者の方が読んでいたらとしたら、私から伝えたいことは

  • 半端な気持ちで自社メディア、あるいは教育事業を運営できると思うな

 の一言ですね。まともにやるなら、相当のコストを覚悟してください。それで運営して黒字にならないなら、やるべきではないと思います。

 また、すでにそういう自社メディア、事業を抱えてしまっている企業の方がもしいたら、

  • いますぐ相当のコストを投入して、品質に問題がないかチェックし、問題があれば修正する

 のがおすすめです。潜在的な破壊力はすでに証明されていますから、もはや時限爆弾みたいなものです。炎上するまで放置するより、先になんとか処理した方が賢明だと思います。

まとめ

 とにかくひどい。そういう感想しかありません。なんかあれこれ論評するまでもない。

 とりあえず、関係者の皆さんには「まともに」対処してほしいところですね。

2019/03/23 追記

 現時点では、これに関係する記事がほとんど削除されているようです。このまま幕引きを図るつもりだと思われます。

 今後の動向をチェックし続け、何かあれば編集します。また、この件についてteratailの運営にも問い合わせているので、そちらの進展もいずれご報告します。

2019/03/25 追記

 teratail運営への問い合わせで返信が得られたので、許可を得てこちらに掲載します。

 要約を先に書いておくと、

  • teratailからのライセンスは行っていない
  • 今後の対応は協議中

 とのことです。

 私が問い合わせた内容。

送信日時: 2019/03/22 20:09:52
タイトル: TechAcademyに投稿されたteratailの投稿と酷似した記事について
本文 :
お世話になっています。表題の件について伺いたいことがあります。
TechAcademyというサービスのオウンドメディア上において、teratailの質問・回答と酷似した内容が投稿されているということがインターネット上で話題になっております。
この件について以下の点について確認したいと思います。
1. これはレバレジーズが正式に権利をライセンスしたものか
2.a. 1.について、そうであれば、妥当なものと判断し、今後対応も行わないというこか
2.b. 1.について、そうでなければ、現時点で今後の対応は検討しているか
(2.aと2.bは当てはまる方だけ回答していただければ構いません)
3. 利用規約第9条(権利帰属)から、ライセンスされたものであれば各ユーザはTechAcademyの運営会社について関連する権利を主張できない反面、そうでなければ原理的には通常通り権利侵害を申し立てられると理解しているが、それで正しいか

また、このメールと返信の公開の可否についてもお伺いしたいと思います。
お忙しいとは思いますが、何卒よろしくおねがいします。

 返信。

いつもご利用ありがとうございます。teratailサポートチームです。

この度は、お問い合わせありがとうございます。

お問い合わせいただいた件について、teratail側から記事使用のライセンス等は行っておりません。
teratailがユーザー様の投稿を活用した活動を行う場合は、ユーザー様が認識できる方法でお知らせをさせていただきます。

今後の対応については、現在協議中です。
ユーザー様に安心してご利用いただけるサービス運営に努力してまいります。

こちらの返信内容については、そのまま公開していただいて差し支えありません。

今後もteratailをよろしくお願いいたします。

 何はともあれ、teratailからライセンスはしていないとのことで、ほっとしました。

 今後は、

  • teratail運営の(公式発表、TechAcademy側への措置などを含めた)対応
  • TechAcademy側の対応

 に注目が集まりそうです。

2019/03/26 追記

 25日の夜に動きがありました。

 以降は続報記事で扱います。

www.haya-programming.com

2019/04/15 続報

 その後動きはほとんどなかったのですが、続報とまとめです。

www.haya-programming.com

*1:私がteratailを使い続けるかどうかも考え直さないといけなくなります

*2:なお、それまでにこの記事が集めたPVは本ブログの一日の総PVの1割未満であり、集めたはてブやtwitterのシェアも片手で数えられる程度で、現時点で世間にさほど大きな影響を及ぼしてはいないことを付記しておきます

*3:また、この件については私からteratail運営に問い合わせを行っています。結果が返ってくれば追記しますが、あまり期待しないでください

*4:あるいはメディア運営をまるごと別会社に委託しているとか、そういう可能性もあるかもしれませんが、考慮しません

【python】複数のlist(など)を対象にmapを使う

 組み込みのmapは実は複数のiterableを引数に取れるように定義されています。

追加の iterable 引数が渡されたなら、 function はその数だけの引数を取らなければならず、全てのイテラブルから並行して取られた要素に適用されます。複数のイテラブルが与えられたら、このイテレータはその中の最短のイテラブルが尽きた時点で止まります。

2. 組み込み関数 — Python 3.6.8 ドキュメント

 簡単な例を見てみます。

>>> list(map(lambda x,y: x+y, [1,2,3], [4,5,6]))
[5, 7, 9]

 numpyが使えないor使うまでもないときに、ちょっとした配列操作をやるのに良いかもしれません。

 ドキュメントにもある通り、zipなどと同じく結果の長さは最短の引数に合わせられます。

>>> list(map(lambda x,y: x+y, [1,2,3], [4,5]))
[5, 7]

 また、itertools.startmapで同じことをやるとすると、こうなります。

>>> from itertools import starmap
>>> list(starmap(lambda x,y: x+y, zip([1,2,3], [4,5,6])))
[5, 7, 9]

www.haya-programming.com

 単に複数の引数を取る関数を使いたければ、mapの第三引数以降を使った方が簡単です。

【python】__slots__は速度的にどうなのか

概要

 __slots__を使うとメモリをケチれるという話はよく見かけますが、属性アクセスの速度については話を聞かないので調べてみました。

実験コード

import timeit

class A_slots:
    __slots__ = ["a"]
    def __init__(self):
        self.a = 42

class A_attr:
    def __init__(self):
        self.a = 42

a_s = A_slots()
a_a = A_attr()

for a in [a_s, a_a]:
    print("{:.4f}".format(timeit.timeit(lambda : a.a)))

 大したことはやっていません。

結果

0.1026
0.1114

 何回かやっても__slots__に定義した方が1割ほど速いという結果になりました。でも10^6回やって0.1秒なので、ほとんど問題にならないかも。

おまけ

>>> import timeit
>>> timeit.timeit(lambda :None)
0.08125272499659332

 timeitだけでこれくらいの時間がかかるので、実質2~3倍くらいは速いことになります。

【python】辞書で複数の値を一つのキーにする

概要

 複数の値を一つのキーにまとめて、結果と対応させたいというケースがあります。

>>> d = {1,2:"hoge", 3,4:"fuga"}  # こんな感じ?

 残念ながらこれはエラーになります。

  File "<stdin>", line 1
    d = {1,2:"hoge", 3,4:"fuga"}
            ^
SyntaxError: invalid syntax

どうすれば良いのか

 基本的にはtupleをキーにします。

>>> d = {(1,2):"hoge", (3,4):"fuga"}
>>> d[(1,2)]
'hoge'

 これで(1,2)というtupleと"hoge"をマッピングできました。

やりたいことはそうじゃなかった

 複数のキーのうち、どれでアクセスしても同じオブジェクトにマッピングされるものがほしい、というケースもあるでしょう。上のtupleを使ったコードはそれを満たしていません。

>>> d[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 1

 しょうがないので、個別にキーに対応する値を登録してやることにします。

>>> s1 = "hoge"
>>> s2 = "fuga"
>>> d = {1:s1, 2:s1, 3:s2, 4:s2}
>>> d[1]
'hoge'
>>> d[2]
'hoge'

 うまく行っている気がする? でも、一つ変更しても他はつられて変わってくれたりはしませんね。

>>> d[1] = "piyo"
>>> d
{1: 'piyo', 2: 'hoge', 3: 'fuga', 4: 'fuga'}

 ポインタ的なものをもう一段追加して、連動して変更できるようにすることも一応可能です。listを使ってやってみます。

>>> l1 = ["hoge"]
>>> l2 = ["fuga"]
>>> d = {1:l1, 2:l1, 3:l2, 4:l2}
>>> d[1][0]
'hoge'
>>> d[1][0] = "piyo"
>>> d
{1: ['piyo'], 2: ['piyo'], 3: ['fuga'], 4: ['fuga']}

 組み込みでこういうことをやってくれるものは探した限りありませんでした。この方法だと面倒くさいというか使い方に注意が要るので、本格的に活用するつもりであれば自作クラスを作ると良いかもしれません。