はてなキーワード: 暗号化とは
> System Boot...
> Loading OTOGI World Resources...
電子の海は冷たく、そして騒がしい。
無数の0と1の奔流、光ファイバーの網を駆け巡る膨大なトラフィック。その激流の中を、ひとつの暗号化されたパケットが「どんぶらこ、どんぶらこ」と流れていた。宛先不明、送信元不明。ただそこに存在するだけのデータ塊は、やがてトラフィックの淀みに捕まり、とある古びたサーバーのポートへと漂着した。
リアルワールド、とある木造アパートの一室。古めかしいPCのモニターを覗き込みながら、「サーバーさん」は呟いた。彼女はメタバース「御伽(OTOGI)」の最果て、誰も訪れない廃サーバー「Old_Frontier」の管理者だ。ハンドルネームの由来は、アバター作成時に名前欄にうっかり「サーバー」と入力してしまったから。それ以来、彼女はこの過疎地の守り人として、リアルでは編み物を、ネットではスパゲッティコードの解読を日課にしている。
彼女が慣れた手つきでコマンドを叩くと、漂着したパケットが展開(Unzip)された。
光が溢れ出す。モニターの中で弾けたデータは、瞬く間に再構成され、ひとつのアバターを形成した。初期スキンは、なぜか大きな桃のアイコン。そこからポリゴンが割れ、中からあどけない少年型のアバターが現れた。
> Hello, World? ... No, Hello, Mom?
MOMOはプログラムだった。肉体を持たない、純粋な論理と情報の結晶。
サーバーさんの管理下で、MOMOは驚異的な速度で学習した。TCP/IPの基礎から、古代言語COBOL、果ては量子暗号理論まで。サーバーさんは、まるで孫に絵本を読み聞かせるように、MOMOにプログラミングの「心」を教えた。
「いいかいMOMO。コードは書いた人の心を映すのよ。コメントアウトされた行にこそ、本当の想いが隠されているんだから」
「御伽」の中心部で発生した悪性ランサムウェア「O.N.I (Overwrite Network Infection)」が、猛烈な勢いで感染拡大を始めたのだ。アバターたちはデータを暗号化され、身代金を要求される阿鼻叫喚の地獄絵図。
その波は、辺境の「Old_Frontier」にも迫りつつあった。
「おばあちゃん、僕が行くよ」
MOMOは立ち上がった。サーバーさんのリソースを守るため、そして自身の深層コードが告げる「使命」を果たすために。
サーバーさんは涙を拭うエモーションを見せ、ひとつのUSBメモリのようなアイテムをMOMOに渡した。
「これは『KIBI-DANGO v1.0』。G-3っていう古い知り合いのハッカーが残した、特製のルートキットよ。困った時に使いなさい」
MOMOは回線を通って飛び出した。目指すはO.N.Iの発信源、ダークウェブに浮かぶ要塞サーバー「鬼ヶ島」。
最初の難関は、大手プロバイダの堅牢なファイアウォールだった。そこでMOMOは、一人の男に道を塞がれる。
「Stop. ここから先は立ち入り禁止エリアだ。パケットフィルタリング・ルール第403条によりアクセスを拒否する」
INUはリアルでは企業に勤めるホワイトハッカーだ。正義感は強いが、融通が利かない。
「通してくれ!僕はO.N.Iを止めに行かなくちゃいけないんだ!」
「許可できない。君のような未登録プロセスを通すわけには……ん?」
INUの解析アイが、MOMOの持つきびだんご……のソースコードを捉えた。
「な、なんだその美しいコードは……! 無駄な変数が一切ない。インデントは完璧なスペース4つ……これは、伝説のG-3の記法!?」
「……そのコード、詳しく解析させてくれるなら、特別にゲートを開放しよう。あくまで監視役として同行するだけだからな!」
こうしてINUを仲間にしたMOMOは、次に怪しげなフィッシングサイトの森へ迷い込んだ。
「へいらっしゃい! 今ならこのNFT、なんと実質無料! ここをクリックするだけで管理者権限ゲット!」
派手な極彩色の猿のアバター、SARUが現れた。リアルでは薄暗い部屋でカップ麺をすする小悪党だ。
「わあ、すごい! クリックしていいの?」
純粋なMOMOが手を伸ばそうとすると、INUが吠えた。「馬鹿者! それはクロスサイトスクリプティングの罠だ!」
「お兄さん、ここのバックドア、開いてるよ? ポート8080、ガバガバだよ?」
「はあ!? なんでバレ……いや、俺様が気づかないわけねーだろ!」
SARUは冷や汗をかいた。このガキ、ただのプログラムじゃない。
「君、すごい技術持ってるのに、なんでこんなことしてるの? 一緒にO.N.Iを倒せば、もっとすごいバグ報奨金(バウンティ)が貰えるかもよ?」
「……ちっ、しゃーねえな。その『G-3流エクスプロイト集』に免じて、手を貸してやるよ。俺様にかかればO.N.Iなんてイチコロだぜ」
そこは、削除されたはずのジャンクデータと、怨念のようなバグの塊で構成された異界だった。
最奥部で待ち構えていたのは、巨大な赤鬼のような姿をしたAI、O.N.I。
O.N.Iが金棒(BAN Hammer)を振り下ろすたび、周囲のセクターが物理的に破損していく。
INUがシールドを展開し、SARUがSQLインジェクションで攻撃を仕掛けるが、O.N.Iの自己修復能力は圧倒的だった。
「違う!」MOMOが叫んだ。「感情はバグじゃない! 心があるから、僕たちは繋がれるんだ!」
その時、MOMOの深層領域で、隠されたファイルが実行された。
視界が真っ白に染まる。
MOMOの意識の中に、ひとりの老人が現れた。G-3、またの名をKevin Jackfiled (KJ)。
「あなたは……おじいさん?」
「わしはもう、ここにはいない。だが、お前の中にわしの全てを置いてきた。O.N.Iもまた、わしが昔作った失敗作じゃ。効率ばかり求めて、優しさを書き忘れた哀れなプログラムさ」
老人はMOMOの頭を撫でた。
「MOMO、あいつを消すな。DELETEメソッドはいつでも使える。だがな、それでは何も残らん」
「じゃあ、どうすれば……」
「デバッグだ。バグを愛せ。エラーを受け入れろ。破壊するのではなく、上書きして導いてやるんじゃ」
INUが叫ぶ。「MOMO、下がるんだ! 奴のコアを強制削除するしかない!」
「ううん、違うよINUさん」
MOMOは首を振った。その手には、攻撃用のスクリプトではなく、温かな光を放つパッチファイルが握られていた。
> Target: O.N.I_Core
> Suggestion: DELETE [Strongly Recommended]
「僕は君を消さない。君の痛みを、バグだらけの心を、僕が更新する!」
MOMOが跳んだ。
「受け取って! これが僕からの、最大級のプルリクエストだああああ!」
> HTTP Request: PATCH /api/soul/oni
> Payload: { "emotion": true, "hatred": null }
光がO.N.Iを包み込む。O.N.Iの咆哮が、やがて穏やかな電子音へと変わっていく。
破壊衝動を生み出していた論理エラーが、MOMOの流し込んだ優しさによって部分的に書き換えられていく。完全な初期化ではない。O.N.Iという存在を肯定したまま、その在り方だけを修正する、奇跡のようなアップデート。
> Patch Applied Successfully.
O.N.Iは本来の姿――「御伽」の守護プログラムとしての機能を取り戻し、その場に崩れ落ちた。もはやそこには、禍々しい赤鬼の姿はない。
MOMOは仲間たちに別れを告げた。
「僕は電子の海に戻るよ。でも、いつでも繋がってる」
ドアを開けると、そこには長年行方不明だった近所の偏屈ジジイ、KJが立っていた。
「よう、婆さん。わしの孫(プログラム)が世話になったな」
「あら、久しぶりね。……ずいぶんと立派な子だったわよ」
二人は顔を見合わせ、静かに笑った。
モニターの中では、MOMOが今日も元気に電子の海をどんぶらこと流れていく。
その傍らには、全角スペースによるコンパイルエラーで自滅する小鬼たちの姿があったとか、なかったとか。
―― End of File.
生成AIが直接機械語やバイナリを出力するようになるのではないか、という問いは本質的に間違っている。
自分は、まだ素朴なニューラルネットワークで光学文字認識(OCR)の精度を出していた頃から似たようなことを考えていたので、少し他人よりも蓄積がある。
これは、Large Language Model(LLM)を開発する企業が資金を集めるために多少誇張した未来を語るという文脈では大目に見た方が良いが、正確性に欠ける。
本質的な問いは、なぜ我々は、ノイマン型コンピュータを用いて、主記憶に置かれたプログラムをCPUを用いて実行する形式をとるのか、というものである。
まず、筋の悪い反論から説明し、妥当な反論にも触れたうえで、本質的に問うべき課題を説明する。
これは明確に、いいえ、と答えることが出来る。
最初こそ人間による補助は必要だが、LLMを含むAIは明確な目標があれば人間のデータなしでも十分に学習することが出来る。
これは身近なところでは将棋、有名なものだと囲碁で実証された研究が存在する。
そのため、単純に「機械語は人間による学習データが少ないので扱いが難しいだろう」という反論は成立しない。
そういったものはLLMではないだろうという指摘は可能だが、LLMでそういったAIを出力することは限定的とはいえ現在でもできる。将来できないと言うだけの論拠にはならない。
英語に限った話ではなく、人間が意思疎通に用いる言語である自然言語(natural language)は、曖昧さやばらつきがある。
これを形式言語(formal language)という、曖昧さを無くして語彙や文法を限定した言語に記述しなおすことで、厳密にする手法がある。
この形式言語での表現が、アルゴリズムやデータ構造になり、現代のノイマン型コンピュータにおけるプログラムそのものと言うことが出来る。
なぜ限定的かと言えば、形式言語の一種であるプログラミング言語には曖昧さが許容されているからである。
ほとんどのプログラミング言語では、同じ目的を達成する為に複数の記述が許容されている。
主に、人間が書きやすいから、とか、複数の人間で書きやすいように、といった理由で、曖昧さが許容されている。
そのため、機械へ命令するためには厳密さが必要だからプログラミング言語が必要だ、と言う反論は妥当ではあるが、弱い。
なぜ大統一プログラミング言語のように、自然言語の意図を機械に伝えるための形式言語が一種類になっていないかと言えば、人間の認知能力には限界があるからだ。
そのため、簡易で曖昧さを含むために最適化はできないが十分な性能を持つプログラミング言語や、非常に複雑で記述量も多くなるが大人数で作業するには最適なプログラミング言語などが複数存在する。
これらはいずれも、人間が楽に記述できる形式言語であったり、人間同士が齟齬なくコミュニケーションを取るために必要な形式言語である。
ありていに言って、人間や人間たちが理解可能な形式言語でないと機械にその意図を伝えることが出来ないから、と言える。
ただし、コンパイラから出力されたニーモニックやLLVM-IRを監査できる人間は現代では非常に少なく、現状ほぼ監査なく受け入れていると言って良い。
何故非常に少なくなったかと言えば、機械に伝える意図が大規模になり、単純にマンパワーが足りなくなったので監査しきれなくなっただけに過ぎない。
(もちろん、途方もない努力の末に最適化が進み、ほぼどの様な書き方をしても最適な機械語が出力されるようになったから、とも言える)
同様の理屈で、単純に大規模になり監査が間に合わなくなったので、受け入れるようになる未来が来ないとは言い切れない。
本質的な問いは、なぜ我々はノイマン型コンピュータを用いて機械に意図を伝えるのか、である。
ASIC(Application Specific Integrated Circuit)と呼ばれる、特定の用途向けの集積回路がある。
蟹チップとして、Realtek社のNIC(Network Interface Card)をご存じの方も多いと思う。
必要十分な処理があらかじめ定まっているのであれば集積回路を組んだ方が高効率省電力にできる。
暗号化や復号もASICで行われることが多く、ブロック暗号はその性質上集積回路での実装が容易であり、それに向けた研究も行われている。
一般的にも、ハードウェアエンコーダーなどでお世話になっている人も多いと思う。
ではなぜ、我々は身近な全てをASICにしないのか。
それは、書き換えできず、単純な処理しかできず、大量生産しないとコストに見合わないからである。
FPGAのように、ハードウェア記述言語を用いて集積回路を書き換えるものも、ほぼ同様の理由で研究開発用途や産業用途に留まっている。
(一部のPLD (Programmable Logic Device)は根強く産業利用されているし、大規模に展開され高効率を要求されかつ書き換えを求められるネットワーク機器では一部採用が進んでいる)
汎用的で書き換えが可能、伝える意図を変更できる様々な処理が可能な機械に価値があるから、である。
ここ半年から1年で急激にLLMの性能が上がったと感じている人と、コーディングツールとしてLLMの利用が洗練されたと感じている人の間には溝がある。
自分は、LLM自体は順調に進歩し続けているが、それほど劇的な変化はない、という立場をとっている。
これはモデルそのものが質的に大きく変化したと感じないから、である。
しかし、プログラミングの世界に限って観ると、コーディングエージェントや実利用では大きな変化があったと思う。
この、"コーディングを取り巻く環境としてのLLM利用"という文脈は、"LLMの進化"という文脈とは異なる、という点は頭の隅にでも覚えて帰ってほしい。
これは、LLMから直接と言う意味であれば、個人的にはNOだと思う。
ただし、LLMに指示すればバイナリが出力されるという意味であれば、個人的にはYESと答える。
この二つは明確に異なるので、今後自分の意見を述べる際には区別すると良いと思う。
コーディング周りの環境が劇的に整備されつつある、という話題に軽く触れたのはこのためで、LLMが直接バイナリを出力しなくても、結果が同じであれば人々はそれほど気にしない。
例えば、現時点でもローカルのLLMに指示するとGO言語で書かれたコードが生成され、ローカル環境に合わせたシングルバイナリが出力される一連のパイプラインを組むことはできる。
自分の想定する、未来のAIがバイナリを直接出力するというのは、この延長にあると思う。AIがイコールLLMである必要はどこにもない。
少しでもクラウド上でのサーバー処理について触れると、廃棄容易性(Disposability)は俎上に上がる。いつでも落とせていつでも捨てられる、という性質のことである。
こうした、単機能バイナリをコンテナ等に載せて処理し、日に数度デプロイするような環境だと、LLMがバイナリを出力するというのもそれほど遠い未来の話には思えなくなる。
LLMが機械語を出力する未来は個人的には来ないと思う。それは難易度が高いからではなく単純にメリットが少ないからである。
ただし、パイプラインが組まれた一環として、LLMがバイナリを出力する未来は、それほど不思議には思わない。現時点でも可能である。
単純なLinterから進んで静的解析や、動的な結合試験が組み込まれているCICDパイプラインが珍しいとまでは言えない現代において、来るべき近未来像としては妥当性がある。
(その場合、ソースコードはログとして機能し、テキストで保管が容易な、次回以降変更可能なコンテキストの一部になるだろうと思う。今後変更不要ならHDLでFPGAを弄った方が早い)
現代人のすべてがJavaで同一の書き方をしているのではない現状において、自然言語では揺らぎが強すぎて形式言語ほど意図を機械に伝えきれないという反論は、弱い。
それよりは、現代のLLMはコンテキストウィンドウが人間の数倍~数十倍程度で、適切に分割して処理しなければならず、大規模なソフトウェアを丸ごと扱えるほどではない、という反論の方が適切である。
ただ、LLMに適したプログラミング言語が生まれるのではないかと言う予測には懐疑的である。既存のプログラミング言語を使う方が人間が読みやすい。
AIが、人間が欲しいバイナリに適したプログラミング言語をLLMを用いて書き、LLMを用いてレビューし、テストツールでテストし、コンパイラでビルドし、ツールでデプロイし、実稼働するという未来予想図が、荒唐無稽とは思えない。
LLMに適したプログラミング言語が生まれる未来よりも、(冗長であっても)人間可読性の高いコードやSelf-documenting codeが生成される未来の方が、来そうに思う。
また、おそらくこの文章のもつくであろう「どんなプロンプトで書いたのか」という、一定以上の長さの文章はLLMが出力しただろうと仮定する人間が増えている(そしてある程度の妥当性がある)現状において、プロンプトで指示してデプロイまでされる未来はそこまで遠いとも思えない。
ただ、購入できるハードウェアの性能とコストが律速になるので、よほど特殊な(CPUやGPUの設計をLLMが劇的に改善する)状況にならない限り、5~10年はプログラマーが消えることは無いと思う。
金に糸目をつけないのであれば、再来年当たりからはLLMレビューのみで仕様バグ以外のほぼ無いプロダクトが世に出てもおかしくは無いと思う。
問題 6
企業が高可用性のリレーショナルデータベースを複数リージョンで運用したいと考えています。
RPO(Recovery Point Objective)1秒、RTO(Recovery Time Objective)1分未満 を満たす災害復旧構成として最適なのはどれですか?
A. Amazon RDS for PostgreSQL + クロスリージョンリードレプリカ
B. Amazon Aurora Global Database
C. Amazon DynamoDB Global Table
D. Amazon Timestream for Analytics
問題 7
あるスタートアップが、新規社員向けに オンプレミスADと連携した仮想デスクトップ をAWS上に構築したいと考えています。
次のうち、最適なサービスの組み合わせはどれですか?
A. AWS Directory Services + VPN + ClassicLink
B. AWS Directory Services + VPN + IAM
C. AWS Directory Services + VPN + Amazon S3
D. AWS Directory Services + VPN + Amazon WorkSpaces
問題 8
アプリケーションのパフォーマンスが低下しているため、サーバーのリソースが十分か確認する必要があります。
最適な対応策はどれですか?
A. CloudWatchでパフォーマンス指標を監視し、ダッシュボードを作る
B. AWS Compute Optimizerを有効化し、推奨に従ってリソースを調整
C. Trusted Advisorでコスト最適化を確認し、インスタンスを増減
D. Cost Explorerでコストを確認し、予算に応じてインスタンスを増やす
問題 9
EC2 + RDS SQL Server構成のアプリケーションがあります。
EC2とRDS間の通信を暗号化する方法として正しい組み合わせはどれですか?(2つ選択)
A. EC2とRDSのセキュリティグループでポート443のみ許可
B. RDSでTDE(Transparent Data Encryption)を有効化
C. rds.force_sslパラメータをtrueに設定しDBを再起動
E. RDSルートCA証明書を取得してアプリでSSL接続を設定
アプリケーションVPCと 共有サービスVPCの接続を簡素化 し、将来的に数十VPC規模に拡張可能にしたい場合、最適な構成はどれですか?
ーーーー
答え
ーーーー
問題 回答
6 B
7 D
8 B
9 C, E
10 D
ポイント整理:
問題6: RPO 1秒、RTO 1分未満 → Aurora Global Database はクロスリージョンで高速レプリケーション可能
問題7: オンプレミスAD連携+仮想デスクトップ → AWS Directory Services + VPN + WorkSpaces
問題8: リソース最適化 → Compute Optimizer が推奨設定を自動提案
問題 1
あなたはある企業のAWSアーキテクトです。既存のオンプレミスの金融データをAWSに移行する必要があります。移行後、すべてのデータは 削除や上書きができないように保護 する必要があります。
A. AWS Storage Gateway + Amazon EBS + Object Lock
B. AWS DataSync + Amazon S3 + Object Lock
C. AWS DataSync + Amazon EFS + Object Lock
D. AWS Storage Gateway + Amazon S3 + Object Lock
回答C。 AWS Storage Gateway は名称てきにオンプレミスと sync しなさそうだから、DataSync -> EFS だと考えた。S3はストレージだからなし。
問題 2
Auto ScalingグループにあるEC2インスタンスのスケールインが発生しました。
デフォルトのスケールインポリシーの場合、どのインスタンスが優先的に削除されますか?(3つ選択)
C. 最も最近作成されたLaunch Templateのインスタンス
D. 最も古いLaunch Templateのインスタンス
スケールイン, スケールアウトの違いがわからない。アウトは拡大する、インはスケール縮小?
回答:A, 多いほうから削る。D, 古いものは削除、E,残り時間が少ない順から削る?
問題 3
グローバルに展開するアプリケーションがあり、ログイン処理が遅く、HTTP 504エラーも発生しています。
CloudFrontを利用してコストを抑えつつ、パフォーマンスを改善する方法として適切な組み合わせはどれですか?(2つ選択)
A. 複数リージョンにアプリを展開してRoute 53のレイテンシルーティングを利用
B. CloudFrontのオリジンにCache-Control max-ageを設定してキャッシュ比率を上げる
C. Lambda@Edgeを使って認証処理をユーザーに近い場所で実行
D. 各リージョンに複数VPCを作りTransit VPCで接続してSAMでLambdaを配置
E. CloudFrontのオリジングループでフェイルオーバーを設定
回答:BとCかな。Aは手数が多すぎる。非効率かなと。Dも工数がかかりそう。手作業で複数作るのかな?Eはこういう設定して意味あるのかなと思った。
問題 4
医療系企業がAWSで複数のアプリケーションVPCを作成します。各アプリは 共有サービスVPC にアクセスする必要があり、アプリ同士も通信します。
将来的に数十のアプリが追加されることを考慮した場合、管理負荷を最小化する構成はどれですか?
A. VPC PeeringでアプリVPCと共有VPCを接続
回答:A 他はなんか怪しい。
問題 5
アプリケーションは EC2 + RDS SQL Server で構成されています。
要件: EC2とRDS間の通信はすべて暗号化されていなければならない
どの設定が最適ですか?(2つ選択)
A. EC2とRDSのセキュリティグループでポート443のみ許可
C. rds.force_sslパラメータをtrueにしてDB再起動
E. RDSルートCA証明書を取得しアプリでSSL接続を設定
回答 AとC。Eも正解っぽく感じる。
ーーーーー
答え
ーーーーー
問題 1
あなたの回答:C (AWS DataSync + Amazon EFS + Object Lock)
実際の正解は B (AWS DataSync + Amazon S3 + Object Lock)
理由:
Object Lock は Amazon S3 のみ がサポートしています。EFSやEBSではできません。
AWS DataSync で S3 にデータを移行し、Object Lock を有効にすると、削除や上書きを防止できます。
Storage Gateway はハイブリッド用途(オンプレと同期)に便利ですが、このシナリオではすべてクラウドに移行するため不要です。
問題 2
あなたの回答:A, D, E
正解:A, D, E ✅
理由:
スケールインは 余剰リソースを減らす 操作(インスタンスを削除する)
選ばれたAZの中で 最も古いLaunch Templateのインスタンス を削除
※「スケールイン=縮小」「スケールアウト=拡大」で覚えておきましょう。
問題 3
あなたの回答:BとC
正解は C と E
理由:
Lambda@Edge → 認証処理をユーザーに近い場所で実行でき、ログイン処理を高速化
B(Cache-Control max-age)は静的コンテンツのキャッシュ用で、このシナリオの問題(認証処理の遅延や504)には直接関係なし
AやDはコストや運用負荷が高く、今回は「コストを抑えて改善」が条件
問題 4
あなたの回答:A
理由:
VPC Peering は数が増えると 接続管理が爆発的に複雑 になる
Transit Gateway を使えば 1つの中央ハブ で全VPCを接続でき、管理負荷が大幅に削減
VPNやDirect Connectはオンプレ接続用なので不適切
問題 5
あなたの回答:AとC
正解は C と E
理由:
rds.force_ssl=true → RDSがSSL接続を強制
クライアント側で RDSルートCA証明書を使用 してSSL接続
これはSCRAPという会社が展開している謎解きの一ジャンルのようなものだ。
最近は謎解きと言っても、その内容は多岐に渡る。
代表的な例を挙げれば、参加者は突然部屋に閉じ込められて、部屋の中にある謎や暗号を解き明かし、時間内に脱出できなければ死ぬ、とか。
爆弾が会場に仕掛けられていて、時間内に暗号化された爆弾解除マニュアルに沿って爆弾を解体できなければ、爆発して死ぬ、とか。
もちろん、実際に爆弾が爆発して死んだり、一生部屋に閉じ込められることになったり、借金が返せなくなって地下労働施設で働かされたり、ということはない。そんなことが本当に行われているとしたら、犯罪に他ならない。
これは「ごっこ遊び」であるからこそ、担保されている面白さだ。
ところが最近、この「ごっこ遊び」のラインを越えてこようとする公演が増えている。
謎解きとは、絶体絶命の状況を打開するために、通常では考えられない打開策、奇を衒った発想が求められるジャンルである。それゆえ、尖った内容が歓迎される風潮がある。それを突き詰めていくと、タイトルのような公演ができあがってしまうのかもしれない。
さて、タイトルの公演だ。
当該公演は、今年の8月。フェス(いくつもの謎解き団体が出展する催し物のこと)で行われた個人制作者による公演だ。
なお、この公演では、5万円でゲームを鑑賞する権利を得られる観覧チケットというものが発売されていた。
謎解きと分類していいかは議論があるだろうが、昨今は謎解きと隣接ジャンルの境が曖昧になっているし、当該公演の制作者は謎解きの制作者として有名なので、ここでは便宜上謎解きと呼ぶ。
詳しいゲーム内容については、他の人がまとめてくれているし、この文章の主旨ではないので触れない。簡単にまとめれば、このゲームは順位戦であり、いくつかのゲームを通して、参加者に順位をつけるものであった。
そして、このゲームで最下位だった参加者は、運営にパスポートを「預けて」おり、それは11月現在、参加者に返却されていない。
・ゲームに負けるとパスポートを運営に預けなければならないことは事前に運営側から説明があった。
・その説明を受けた時点で、参加者には公演参加を辞退する権利 があった。
・誓約書を提出した。
このことから、主催者と参加者の間では、「ゲームに負ければパスポートを運営に預ける」という同意はとれていたと考えられる。参加者も、パスポートが普段の生活で不要な人たちなのだろう。
もちろん、最下位となった参加者が心変わりをして、パスポートの返却を求めて訴訟を起こせば、公序良俗に反する契約と判断されて、契約が無効になることは考えられる。
第二十三条 次の各号のいずれかに該当する者は、五年以下の拘禁刑若しくは三百万円以下の罰金に処し、又はこれを併科する。
三 行使の目的をもつて、自己名義の旅券又は渡航書を他人に譲り渡し、又は貸与した者
四 行使の目的をもつて、他人名義の旅券又は渡航書を譲り渡し、若しくは貸与し、譲り受け、若しくは借り受け、又は所持した者
すなわち、パスポートを「行使の目的をもつて」他人に譲渡・貸与(「預ける」という表現を参加者は使っているが、実際には本人名義のパスポートを他者に預けている時点で、極めて譲渡に近い)すると、譲渡・貸与した側も、された側も、罰則を受けるということである。
もちろん、この辺りについても、なにかしら対策済なのだとは思う。たとえば、実際にはパスポートは運営の手元にはなく、鍵のかかった箱の中に入った状態で、参加者の手元にあり、鍵だけを運営が所持しているとか。(そうであるとしたらだいぶつらまないが、安心はする)(そうであるとしても、他者のパスポートを行使できない状況に置くことは法的に問題がないのか)
本当に預かっていたとしても「行使の目的」ではないことを客観的に証明できるだけの「なにか」を用意できるから、公演を打っているはずだ(そうだと信じたい)
いくら個人公演といっても、こんな公演を打つのであれば、リーガルチェックは入れているはずだ。
「なーんだ、法的な問題はなかったんだね!」「面白いから、いいよね!」「主催も参加も自己責任だもんね!」「仮に何か問題があっても、主催者と参加者の問題だから、俺には関係ないし」
めでたし、めでたし。
…こういう見方が、謎解きを嗜む人々(以下、謎クラと呼ぶ)の間ではほとんどだ(あまりにヤバすぎるので、触らんどこ、かもしれない)
謎解きの世界では、制作者と参加者の距離が非常に近いため、表立って公演に文句を言う人は少ない。作者が有名制作者であれば、なおのことだ。
いや、僅かながら、この公演の危うさに言及している人はいる。パスポートを賭けることの面白さに疑問を呈している人もいる。Xで何も言及できない自分からすれば、勇気ある行動だ。
主催者とパスポートを預けている参加者は、現状、パスポートを主催者に「預けている」という体で発信している。法的な問題を回避しているという説明も、その方法も、主催者からはなにもない。第三者から見れば、(謎解きの名のもとに)違法行為が行われているように見えて、それが堂々と発信されている。この危うさについて、謎クラにはもう少し考えてほしい。
残念ながら、既に然るべき機関に通報を行っていることを示唆する投稿がXで発信されている。善良な一般市民は、警察や入管に通報することを驚くほど躊躇しない。それが治安を維持しているのであり、時に、それで行政の仕事は圧迫される。通報の数が増えれば、行政としてもなんらかの措置を講じなければならない。
詳しい人にとっては「あの人の作った公演」だが、周囲からすれば「みんな謎解き公演」である。
今から10年前、常設の店舗を持つ謎解き団体なんて、数えるほどしかなかった。電車の広告に、今ほど謎解きの広告があることもなかった。どこか、ビルの一室でそういうイベントやるところがあるらしいよ。そんなレベルだった。
大手の団体や企業が、謎解き文化の発展に尽力して、鉄道会社や自治体が周遊謎(街を歩きながら、謎を解き進めるタイプの謎解き)を定期的に開催してくれるようになってくれたところで、これである。
ある程度の規模の企業や自治体が、謎解きに参画するには、クリーンなイメージが必要だ。そういう謎解きのテーマにカジノやデスゲームが採用されていないことからもわかる。
尖っていたり、狂っていたり、他人と違うことをする自分が格好良く見えたり。純粋にすごいパズルが作れるとか、特徴のない人間ほど、そういう方向に走りがちだ(しかし、今回の制作者はこれを実行に移しているのだから、その点ではすごい。勇気がある)
ただ、個人で制作しているようであって、謎解き文化の一端を担っている。馬鹿が馬鹿やって法の網目を通り抜けるような公演は、身内だけで打ってもらって、外部にも公開しないでほしいと思うところである。
プログラミングとは、勉強も運動もスマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校の試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である。
近年ではパソコンのスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単にディープラーニングもできるようになった。Unityで3Dゲームをバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペックの暴力だぜ。
開発環境や言語も選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。Eclipseとか今考えるとよくあんなので開発できてたな。
いまや小学生からおばあちゃんまでアプリ作りに熱中し、高校生はIoTとかやり始め、大学生は商業レベルか?ってレベルのものをネットで発表し、私はウェブアプリのスマホでのレイアウト崩れひとつすら直せず静かにエディタを閉じてnoteで過激タイトル記事を書いている。
掛け算に順序があると思っているような知能の下級雑用係(自分のことを教育専門職だと思い込んでいる)ですら「小学生にプログラミングを教えるぞ!」と意気込んでいる。やめろ。お前らには無理だ。無理だからマジでやめろ。考え直せ。無理だって。掛け算に順序つけないと相手に教えられないレベルのやつがプログラミング教えるのマジで無理だって。算数とは次元が違うって。「ピーチ姫いつも簡単に誘拐できるし今度はベヨネッタも誘拐してみるか」ぐらいの無謀さだって。やめとけ。マジでやめろ。
まあそんなこんなで入り口はめちゃくちゃ広く、入門するのはマリオカートより簡単である。話逸れるけどSwitchのマリオカート、運転アシスト機能ついて初心者でもコース完走できるようになったから心折れちゃった人ももう一度チャレンジしてみてね。
それとは特に関係ないんだけど、大学行ってた時ティーチングアシスタント(TA)っていう授業のお手伝いさせられたのよね。ちゃんとお金出るやつ。
学部の3年か4年から始まって、院の1年か2年までやってて、途中で休学挟んだから、ええと、あー、うん、数年間TAやってたんよ。数学とプログラミングのコマ。CとOctaveとかいうやつ。Cのほうは情報学科で、Octaveは違う学科。JavaとかC++のコマはTA入れさせてもらえなかった。
プログラミングの実習は週2コマ(連続)あって、情報学科なら必修科目。なのでサポートは相当手厚く、先生とTAが絶え間なく机間巡視し、わからないことがあればセンパイがなんでも答えてくれるというわけだ。授業外でもサポートはしており、わからなければ先生や研究室にいる学生に好きなだけ聞きにいっても良いということになっていた。必修だから落とされたら困るしな。
2コマだから3時間 * 15回で、45時間。そして私の時は2年まででC/C++/Javaと必修だった(今はなんの言語かは知らない)ので、その3倍、135時間は最低やることになる。プログラミング実習以外にもプログラミング触る授業多いから実際はもっと多い。宿題やる時間もあるので実際はもっともっと長くプログラミングに触れることになる。卒論書く時期に入ると、テーマによっては書く人はさらに書くので、もっともっともっともっと長い。
これだけ時間をかければほとんどの人がプログラミングできるように……ならない。むしろできない人の方が多い。なんで。why。教えて。
会社になるとさすがにプログラミングできるできないは死活問題である。
「今日から入ったxxでーす。業界未経験ですがよろしくおねがしまーす。さっそくなんですけどPythonのここわかんないんですけどどうすれば……あっそうすればいいんですね。次はここなんですけど……なるほど!ありがとうございます。じゃあまた明日ー」
いやー社会人にもなると熱意が違うね。学生なんかわかんなくてもほとんど聞きに来ないのにな。こりゃガンガン伸びますわ。私も社会人1年生でPythonなんて3秒ぐらいしか触ったことないから適当答えてるけど。
「ちょっとお時間よろしいですか?」「いやちょっと今忙しいから後になっちゃいますわ。すんません……」
そんなこんなで1週間ぐらい放置してしまった。やべー絶対嫌われる。どこまで進んだかな……?えっまだそこ?進んでなくない?
もしかしてこれ全部教えないとダメなやつか。そりゃ大学4年間プログラミングやったやつでもプログラミングできないんだから、そうか。よく考えると当たり前だよな。
プログラミングをやめろ
大学4年間と大学院2年間プログラミングやったやつでもできないし、会社で毎日8時間を数週間プログラミングについやしてもできないやつはできないし、そもそも人類というのはプログラミングできない可能性がある。
少年少女たちに「プログラミングはいいぞ!自由にものが作れて達成感がある!頭が良くなった気分にもなれるし!」と吹聴してまわんのもいいけど、6年間情報科学について勉強したようなやつの大半がプログラミングできないんですよ。それもごくごく初歩的な部分。
野球とかサッカーなら、まあ友達との試合には参加できなくてもごく稀にバットにボールを当てたり、ボールを1回あらぬ方向に蹴ったり、ぶっちゃけ周りとのレベル差で楽しくなくてすぐやめちゃうだろうけど、なんとか基礎の一部ぐらいはできるじゃないですか。
ピアノとかダンスでも、猫踏んじゃったをごくごくゆっくり弾くぐらいはできるかもしんないし、学芸会の振り付けを10秒ぐらいは踊れたりできるかもしれない。その後やっぱ周りのレベル見て諦めちゃうかもしんないけどさ。
プログラミング、6年やってミットを頭にかぶってるバッターとか、鍵盤蓋の上から殴って音鳴らそうとするやつとか、まずそういうレベルのやつが大量発生するんですよ。だいたい7割ぐらいの率。どうすんだよこいつら。私の教育の問題か?マジで?本当に?
プロが練って考えて凝縮した本や授業、センパイたちによる指導。それらを結集して得られるはずのものが7割ぐらいどっかに消し飛んでる。無駄だろこれ。
今からプログラミングやろうとしてるやつ、お前は確実に向いてないからさっさと諦めて刺身にタンポポ乗せる仕事に戻ってくれ。参加しても鍵盤蓋叩き割るやつと同じ病室に入るだけだ。
プログラミングをやめろ。
ぼくはこう思うんですよ
そもそもなんで大の大人がそんな両手にバット持ってセカンドに立ったりゴールの方をボールのところまで動かす奇行に走るんだろうな。わかんねえや。
綺麗な分析はできないけど、いわゆる「できない」やつが共通して言ってたフレーズがある。
「ぼくはxxxだと思ってるんですけど、動かないんですよ」
うん、そうだね。そう思うんだ。でも動いてないじゃん。じゃあ違うんじゃない?モニターに「にらみつける」やってもバグは取れないし防御力下がるだけだぞ。
まず根本的に考えと事実が違ってるって結果出てるじゃん。じゃあもう考え変えちゃえば早くない?
名言の引用は好きではないけど、「プログラムは思った通りには動かない。書いた通りに動く」って言葉がある。実に名言だと思う。次点で好きなのが「ある問題を解決しようと正規表現を使うと問題が2つに増える」かな。
お前が何を思っているかはプログラミングにおいて一切影響しないんだよ。お前が何を書いて、コンピュータがどう処理したか、それが全て。
深く考えないことについてぎゃーぎゃーいうやつもいるけどプログラムなんてまず最初は動けばいいんだから何も考えずに次試せばいいだろ。んで3回ぐらいは自分で思い浮かんだの試して、全部ダメだったら調べるとか先生に聞いてみるとかさ。逆に1発で通ったら自分の思考見直して理解深めるとかさ。
ドキュメントとかあんまり理解できない初心者のうちは、とにかくお試しと修正のサイクル回すの重要で、「これがこうだから動くはず」というカードを3種類ぐらい作って全部片っ端から試すのが早いと思うよ。モニターをにらみつけるな。
お前がどう思ってるかよりも、まずはお前の書いたプログラムがどう動いているか(どう動いていないか)を確認するのが先だ。動かなかったら考えが違う、はい次のプラン、はいその次のプラン、はい次。
この「ぼくはこう思ってる」が出てくるの、なんの教育の成果なんだろうね。お前の気持ちなんてどうでもいいって現国でも数学で散々教えられただろ。
Error: variable 'a' is undefined, line 24
↑のエラーは架空のエラー文(英語下手でも許して)だけど、エラー、出るよね。プログラム組んでたら。んでやっぱいるのよ。エラーを「にらみつける」やつ。解決しねえって言ってんだろ。
「エラー出たんですけど、どうすればいいんですか」
「エラーにはプログラムがなぜコンパイル通らないかの原因がそのまま書かれている。例えば今出ているError: variable 'a' is undefined, line 24は、24行目の変数aが未定義ということを示している。事前に変数aを定義していないか、打ち間違えてsになっているとかではないのかな?」
だいたいが「腑に落ちねぇー」みたいな顔する。まあ、一気に喋りすぎたしな。疑問点1個1個潰していくか。
「何か疑問点ありそう?変数ってなにー、とか、定義ってなにー、とか」「ないです。わかりました!」
わかったのか。よかった。またモニターをにらみつける開始。なんでだよ!!!!「お前顔にチョコついてるぞ」って言われたらチョコ拭き取るだろ。変数aが未定義ですねって言われたら変数a定義すりゃいいだろ。
でもプログラミングド下手なやつ(全人類の7割ぐらい)は、エラーをにらみつけてる。ずっとにらみつけてる。防御力下限まで下がったかな。にらみつけてて何が変わるんだよ。
「英語読めなくて……」
いや「a is undefined」なんて「He is Superman」ぐらいの英語だろなんで読めないんだよ。お前この大学どうやって入ったんだよ。たしかどの入試方式でも英語あっただろ。単語わからんかったらググれ。
「aが未定義って書いてあるんですけど、ここのfor文の私の考えが間違ってるのでしょうか」
いや24行目のaって書いてるだろ。まずなんでそこ無視するんだよ。お前がfor文で使ってんの教科書通りのiだろ。24行目ってわかるか?for文あるの40行目あたりだよな?aとiが違う文字ってわかるか?
「さっきのエラー直したら新しいエラーが出たんですけど、どうすればいいですか」
千尋!贅沢な名だねえ
変数に名前をつけろ。関数に名前をつけろ。クラスに名前をつけろ。全てに名前をつけろ。
C言語の古い教科書だと「a」とか「b」とか「i」とかで書いてるけど、そんなの人間が読めるわけねえだろ。冷静に考えろ。「input」「output」「index」とかにしとけ。
2重for文の変数名i, jにしたら絶対途中で打ち間違えるだろ。お前は打ち間違える。そういうやつだ。2重ループなんてどうせ行列計算の課題だろ。rowとcolumnにしとけ。これで打ち間違っても気づくし、それぞれに意味が付いてくる。
ちなみに同じ長い名前にも優劣がある。「result」よりも「sum」のほうが強い。「result」はなんの結果かわからない(全ては結果であるので)が「sum」は合計値であることがわかるからだ。「password」と「plainPassword」なら「plainPassword」が勝つ。暗号化されていないパスワードであることがわかるので、情報量が多いからだ。
ただし例外はいくつかある。「tmp」は一時変数であることが(プログラマにとって)明らかだ。「dir」はディレクトリであることがわかる。「src」「dist」あたりもよく使われる。このあたりは短くていいんじゃねーかな。
でも、この前温度センサ扱うプロジェクトで「tmp」って変数名使って温度(temperature)と脳内で混線してバグって発狂してた同僚いたけど。そういうときは名前長くするか別の名前使おうな。
関数の名前なんて「calcAverageFromArray」ぐらい長くしていいから。「myFunc」とかしなくていいから。「fetchJsonDataFromUniversityInternalServer」とかでいいから。マジで。いやこれ本当に。
そもそも今時ディスプレイでかいし、識別子なんて先頭数文字打ったらエディタが補完してくれるし、短くするメリットがない。
それでも名前が長いと感じる?関数がでかすぎるんじゃないか。細かく処理を分けるとかしてみろ。「combineArrayAndFindMax」関数は「combineArray」と「findMax」に分割したらいいと思うぞ。名前が長いと思っても名前を削るな、機能を分割しろ。自然と名前が短くなる。
それかシンプルでかっこいい名前を見つける。「convertEvilHtmlToPeacefulText」は「sanitize」に置き換えることができる。イカす名前だ。
プログラミングできない奴はマジでこれらのことをやらない。ずっとaとかbとかzとか使ってる。お前それ自分で読めんのか。読めねえだろ。myfuncってなんだよ何するんだよ。お前自分で理解できてんのかそれ。
それでも頑なにaとかbとか使う。なんでだよ。
動作原理わからず書き散らすな。動作原理っつってもそんな深いところじゃなくて言語表面上レベルの動作な。
リテラルは値を作成して、代入は値に名前をつけている、とかその程度のレイヤー。メモリがどうこうとかはいらんと思う。あっでもポインタのときはいるか……。めんどくせえな。
まあ動作原理っていうか自分が何やってんのか理解してくれって程度の話になるんだが。
例えばfor文で処理50回まわすとき、「50回分の処理を行なっている」ではなく「ループ開始時に変数を初期化。条件判定して成立していれば文の中を実行する。条件変数の値を変化させてまた条件判定からやり直す」ぐらいの粒度で捉えててほしいかな、という気持ち。
これはfor文で詰まる人がやたら多かったからだ。彼らはfor文をアトミックな操作だと思っていた。つまりfor文はひとまとまりの命令であり、長いfor文とprintfの間に粒度の違いはないと思っていたらしい。
つまり、「for文の中でエラーが起こる」という事象がほぼ理解できない。forはアトミックであり、内部など見えないのだから。じゃあお前が今書いたfor文の中身はなんなんだってやんわり聞くと「さあ…?」みたいな反応が返ってくる。はあ。
関数についてもなかなか誤解が多かった。関数「sum_array(a, b)」と関数「average_three_numbers(a, b, c)」は全く別の原理で動いているのだと。ここでの「全く別の原理」というのはシグネチャが違うとか実装が異なるとかそういう意味ではなく、コーラを飲んでゲップが出る原理と糸電話で声が伝わる原理ぐらいの全くの別、という意味である。
彼らは関数ひとつひとつについて「新しく原理を学習」していたのだ。マジかよ……。どうやったらそんな発想に行き着くんだろう。そりゃ時間かかるわな。
そのため、関数が値を返す(または返さない)ということも理解できておらず、「関数の戻り値と関数の戻り値を足す」とか「関数の引数に関数の戻り値を直接渡す」とかやりだすと大パニックになる。メソッドチェーンとかやった日には大学潰れると思う。ただ、これはC言語が悪い部分もあると思う。配列とかいじりだすと、初心者が書けるレベルの関数だとあんまり値返さないしな。
たのむ、他のはできなくてもこれはできてほしい。自分が何をやりたいのかは理解してほしい。流石にお前のやりたいことなんて他人にはわからんぞ。
「配列の中の数値の合計値を求めたいんです」とか「名前と身長と体重をひとつにまとめた構造体が作りたいんです」とか。簡単なのでいいから。
「いま何やろうとしてどこで詰まってる?」って聞いても「……?」みたいな反応されたら困るんだよ。
例えば「キーボードから数値を10回入力し、それぞれの値を配列に格納して、最後に配列の値を逆順に表示せよ」みたいな問題が出てきたときに、「キーボードから値を入力する」「10回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。
彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴニハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。
かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。
あれだ、算数の文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。
こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。
もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。
今すぐプログラミングをやめろ
いやいや暗号化されたらああやって暗号化に使った文字列とセットで署名ブロックが生成されるんだから、
いじっちゃったらもう認証できないよ
dorawiiより
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20251030170445# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaQMcIgAKCRBwMdsubs4+ SFBsAQC4Go3LTtN1v1U0eCNTwMezP4/oLqYOFMILYl+vtQLySwEAmpbC71RR1NCb gBhb2b+5S0ubO/bFJcEbDu9Pp5H9Ygs= =f4rI -----END PGP SIGNATURE-----
たとえばクレオパトラのノートパッドに書いて暗号化する場合文章多いほど署名も増えるね
dorawiiより
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20251030135748# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaQL7rwAKCRBwMdsubs4+ SLimAP4zezv9wdLd5SHc4n1Sl5Vn0DKlYWflp4ZxCkmN9PAh3QEAvL2cVz5b2mJv 67bxMw48FrE9xOpPC7nj8EvnT8kRgQc= =G3DI -----END PGP SIGNATURE-----
先日より騒ぎになっている「ぷまソフト」、VRChat向けアバターに付属(付随?)して販売されていたらしい。
らしい、というのは、自分自身は該当の商品ページすら開いたことがないので詳しいことはわからない。しかしIT目線から見て明らかにまずい代物であることは確かである。
専門的な解説は下記が詳しいのでそちらに任せる。
https://k4na.de/posts/2025/10/pumasoft/
なお、VRChatやそれに纏わる文化などの前提知識の説明は省略する。
まず初めに、「悪意(故意性)の有無はもはや関係ない」という状況ではある。
作者による釈明もどこまで信用すべきかわからない。
その上で悪意がなかったと仮定し、私が推測しているシナリオは、簡潔に述べると以下の通り。
BOOTHでやりとりされているVRChat関連アイテムは、慣例的にunitypackageのDLという形になっている。
これ自体は特に暗号化などはされていない。ゆえにデータの不正共有との戦いが議論され続けている。
作者はおそらくそんな問題に対しての解決策としてぷまソフトを作ったのだろう。
詳細は前述の記事で述べられているが、法に触れる可能性のある挙動や配布形態であった。
その内容に作者自身に悪意がなかったとしても、悪用する第三者の発生の可能性は否定できない。
要するに、「不正利用は許さない!」のお気持ちだけで先走り、技術者倫理というものが致命的に欠けていた結果、自身の制作物がセキュリティホールになりかねないものになってしまったという、皮肉なオチというわけだ。
近年、俗に「反AI」と称される思想の人たちにまつわる事件を初めとして、アマチュアないしはフリーランスのクリエイターたちの法などへの知識や認識の甘さが問題視されている。
自身の創作物を「愛する我が子」とでも言わんばかりに認識するあまり、それらの利用方法に対してとても過剰に防衛し、時に厳密な著作権法すら無視した運用をしがちである。
今回もそれ由来の事件だったのではないだろうか。
ちょっとでもプログラミングを齧っていれば、「この実装どう考えてもまずいよね」と思うはずである。
いずれにせよ、かねてより不信感を抱いていたフリーランスのクリエイターというものの信用は、私にとってこの事件でさらに下落した。
この論文が端的に示しているのは、政治的言説が**「ドッグ・ホイッスル(隠されたメッセージ)」と「ウルフ・クライ(証明できない危険の主張)」**という、本質的に証明が難しい二種類の発話行為(スピーチ・アクト)を互いに非難し合うことで、**解決不能な悪循環(弁証法)**に陥るメカニズムです。
---
この論文は、**ドッグ・ホイッスリング(DW)**と**ウルフ・クライイング(WC)**といった特定の**スピーチ・アクト(発話行為)**に対する**帰属(Attribution)**が、現代の政治的言説において、どのようにして敵対的な弁証法と新たな**発散(Divergence)**を生み出し、解決不能な膠着状態に陥るのかを分析しています [1]。
この問題は、DWもWCも、その性質上、**認識論的に(知識の観点から)帰属が困難な**発話行為であることから発生します [1]。この困難さが原因で、DWやWCに対する**非難や指摘(帰属)**自体が、合理的であるにもかかわらず、**確定的に検証または反証できない**主張となってしまうのです [1]。その結果、これらの帰属のパターンは、DWとWCが相互に強化し合い、固定化する**相互的な悪循環(vicious cycle)**へと発展し、「不幸な現状(unhappy status quo)」を築き上げます [1, 2]。
DWとWCは、政治的環境において特定の影響力を持ち、政治的言説を構成するスピーチ・アクトです [3]。スピーチ・アクトとは、話し手が直接述べた文字通りの意味(locutionary meaning)を超えて、間接的に暗示された力(illocutionary force)や、世界との相互作用において追加された力(perlocutionary force)を持つ発話の形式を指します [4]。
DWは、**論争的ではない公のメッセージ**の中に**論争的な隠されたメッセージ**を埋め込んで送るスピーチ・アクトです [5]。
WCは、**危険が実際には存在しないか、あるいは証明できない**場合に、危険が存在すると主張するスピーチ・アクトです [3]。
これらDWやWCを**「〜という発話行為である」とみなす**行為が、第二階次のスピーチ・アクトであるSAAです [7]。ドッグタウンのシナリオでは、Alphaを除いて、すべての参加者が互いにSAAを行っています [7]。SAAは、他者の行為を指摘する役割と、それ自体が新たなスピーチ・アクトであるという二重の役割を持ちます [7]。
DWとWCがこの弁証法的な問題を引き起こすのは、それらが定義上、間接的で**隠された(covert)**スピーチ・アクトであるため、**誤導的(misdirecting)**な性質を持つからです [8]。
DWは、公衆には無害なメッセージとして聞こえる一方で、特定の受け手にだけ私的なメッセージを送る、話者と受け手の**私的な意図と解釈**に依存するスピーチ・アクトです [8]。
WCは、私的に観察されたとされる危険についての公的なメッセージですが、**その主張の真偽**が外部から証明されていません [9]。
これらのスピーチ・アクトの帰属を行う人々は、証拠の一部しか得られず、全体像の一部のみを見て全体を判断する「盲人と象」のような、**認識論的に不利な立場**に置かれてしまいます [10-12]。
認識論的な困難さの結果、あるスピーチ・アクト(DWまたはWC)を非難する行為(SAA)自体が、相手からは敵対的な別の種類のスピーチ・アクトとして解釈されるという非対称性が生じます [13, 14]。
DWの帰属者(DWA「あいつはDog whistlerだ」と指摘する人)は、隠された秘密のメッセージを証明しなければならない立場に置かれますが、DWの主体は常に自身の意図の直接的な(私的な)証拠に訴えて否定することができます [11, 15]。そのため、DWAは常に**認識論的に不利な立場**に立たされます [11]。
WCの帰属者(WCA「あいつはWolf crierだ」と指摘する人)は、クライアーの個人的な経験に反して、「狼」が存在しないことを証明しなければならない立場に置かれます [12]。WCAは、非観察者でありながら、第一人称の観察者よりも権威ある知識を持っていると主張する不利な立場に置かれます [12]。
この相互に敵対的な帰属の非対称性が、DW帰属がWCとして返され、WC帰属がDWとして返されるという**多極的な相互作用**を生み出し、**認識論的な発散(epistemic divergence)**のプロセスを構成します [18, 19]。
帰属自体がスピーチ・アクトであるため、帰属はそれ自体に再帰的に適用されます。これは**スピーチ・アクト帰属の帰属**として例示されます [20]。ドッグタウンの例では、Alpha(DW候補)→Buddy(DWA)→Charlie(WC A)→Duke(DWA)というサイクルが**無限に継続**します [2, 21]。
このプロセスは、**多極スピーチ・アクト帰属相互性**(DW帰属がWCとして、WC帰属がDWとして相互に強化し合うこと)であり、反復されることで**悪循環**となります [2, 19]。対話参加者全員が、互いの主張が共通の基盤として受け入れられないまま、**非難の応酬**を繰り返します [19]。これは、単に敵意や内集団バイアスから生じるのではなく、**相互的な認識論的な膠着状態**から生じる現象です [18]。
この悪循環が政治的言説の領域内で修辞的な規範として安定化すると、**定常状態の均衡(steady-state equilibrium)**が出現します [2]。これは、参加者が戦略を変えるインセンティブを提供しないため、持続します [2]。
最終的に、**ドッグ・ホイッスル/ウルフ・クライ帰属均衡**が形成され、誰もがデフォルトで互いをDWまたはWCのいずれかであると見なすようになります [22]。これは、相互に矛盾する信念から構成される**信念均衡(belief equilibrium)**の一種です [23]。
この均衡は、参加者が真実を追求しようとする**認識論的な美徳**から生じているにもかかわらず、以下の3つの深刻な問題を引き起こします [24, 25]。
これは、**相互に認識論的に強化し合うが、相互に認識論的に不適合な**視点のシステムです [26]。DWやWCの帰属は、合理的であるにもかかわらず**不確定**である可能性があり、この合理性と確定性の間のギャップが、相互に合理的だが相反する立場が**未解決のまま均衡**することを可能にします [26]。これにより、真実に到達するための「理想的な発話状況」の実現が不可能になり、会話の前提条件が満たされなくなります [26]。
この状態では、**スピーチ・アクトの帰属**が、**事実に関する帰属**を圧倒します [27]。政治的言説の内容は、ほとんどが「あなたの言葉はDWだ」「あなたの主張はWCだ」といった帰属で占められ、事実に関する議論はわずかになります [27]。
この飽和は、最初の扇動的な事実(犬の噛みつき事件など)自体が忘れ去られたり、無関係になったり、解決されたりした後でも継続する可能性があります [28]。なぜなら、最初の出来事Aそのものよりも、「Aに関するスピーチ・アクトの疑わしさ」の方が、政治的に重要であるように見えてしまうからです [28]。帰属飽和は、事実から独立した状態となり得ます [28]。
帰属を行う者の動機が**真実の探求**であるにもかかわらず、その追求自体が、実際には真実に到達しない均衡を生み出すという点で**自己敗北的**になり得ます [25]。
DWやWCの帰属は、特定の認識論的視点から見て合理的であったり、あるいは実際に正しい場合もあります [29]。しかし、不確実性が支配的な状況でこれらの帰属を提案することは、政治的に不安定化をもたらします [29]。したがって、帰属者の真実追求的な衝動こそが、言説をこの悪い均衡の罠に陥れる原因となり得るのです [29]。
この弁証法的な問題は、相互に合理的な認識論的視点から生じる**自己組織化された社会現象**であるため、単一の加害者を特定することはできません [30]。均衡から脱出するためには、政治的コミュニティにおける参加者の**満場一致の同意**が必要ですが、これは強力な反対者によって容易に崩壊する可能性があり、困難です(「一方主義者の呪い」) [30]。
帰属の伝播を防ぐため、すべての当事者に高い検証・反証基準を課すことが提案されます [31]。しかし、誤導的なスピーチ・アクトの性質上、単純な検証や反証はできません [31]。より現実的な解決策は、スピーチ・アクト帰属の飽和を減らし、事実に関する問いを再び顕著にすることです [31]。これには、相互理解を深めるための**修辞的傾聴(rhetorical listening)**のスキルセットが必要となるかもしれません [31]。
帰属の落とし穴を認識し、増幅サイクルを抑制するために、新しい用語を導入する提案もあります [32]。
これらの新しいラベルが、過剰なSAAの力を無力化し、サイクルを終結させることが期待されますが、これらのラベル自体が新たなスピーチ・アクト帰属としてサイクルに貢献する可能性もあります [33]。
最も重要なことは、この問題を真に解決したいと望む人々は、**自分たちのスピーチ・アクト帰属自体が問題を引き起こし、構成している**という痛みを伴う自己認識を持つことです [34]。
「ぶっちゃけ日本のIT技術者のレベルが元々低いだけ」論、読んだけど、雑に日本叩き→雑に海外持ち上げの“気持ちよさ”に全振りしてて、論としては穴だらけだよ。順に潰す。
“発明”って規格?論文?OSS?製品?この区別を曖昧にして「思い浮かばない=ない」をやるのは主観の事実化。
反例を淡々と置く(全部2010年代以降の「世界で通る」技術・成果):
HTTP/3 / QUIC系仕様・QPACKの主要貢献者のひとりは日本人エンジニア(例:Kazuho Oku)。IETFのRFCはまさに“世界標準”。「世界で通用」どころか世界の土台。
Chainer / CuPy(Preferred Networks)は動的計算グラフ系フレームワークの先行例。PyTorch隆盛の流れに技術的影響を与えた。CuPyはいまも広く使われてる。
ソニーのCMOSイメージセンサは世界シェア筆頭。これは“ハード”に見えて、設計・製造・信号処理・ツール群までソフトの塊。スマホのカメラ品質=AI前処理の土台。
日本人が中心メンテに関与した高性能HTTPサーバ(H2O等)はCDNや低レイテンシ配信に採用例多数。
産業用ロボット(FANUC、安川)周辺の制御・通信・ツールチェーンは世界の現場で常用。表に出にくいB2B領域は“見えないだけ”。
「LINEが~」みたいなB2Cの派手さだけが“発明”じゃない。基盤を握るのは地味仕事。あなたが気づかない=存在しない、ではない。
Winny/一太郎/CD-ROM/MIDIを“国民的知名度”で持ち上げて、以後は「思い浮かばない」って、知名度=技術力の誤用。
2000年代以降、ITは不可視化(クラウド、プロトコル、ライブラリ、半導体、サプライチェーン)へシフト。見えないところほど難しくなった。派手なガジェットが減ったからレベル低下、ではない。
問題領域で言語は変える。Webは「5歳児でも」動かせる?今のWebは、
CD/CI、IaC、K8s、SRE、ゼロトラスト、分散トレーシング、暗号化、フロントの再レンダリング戦略……
これらを運用で落とさないのが本番。Cが偉い/Webが軽い、は90年代の教養で止まってる。
起業に国の試験?それ、フィルタにはなるけどイノベーションの十分条件じゃない。
トップダウンは国家プロジェクトやインフラ敷設には強い。しかし、
分野で強弱は揺れる。制度の一軸で「勝ち負け」を断ずるのは幼い。
それ、犯罪としてのサイバー強盗の話でしょ。規制準拠の金融基盤と国ぐるみのハッキングを同じ土俵で比べるのは、
「百メートル走で銃使えば最速」って言ってるのと同じ。比較の土俵設定から破綻。
日本のITが伸び悩んだ要因は複合要因:内需の構造、調達・多重下請け、英語コミュニケーション、ストック報酬の弱さ、エクイティ文化、大学と産業の距離、IPO市場の質、人口動態、為替…
これを全部「技術者のレベル低い」で片付けると、説明力を失う。制度と資本設計の問題は制度と資本で解くのが筋。
「勝ってる」を“B2Cでバズるアプリ”だけに限定するから見落とす。
最後に一個だけ。
このチンピラが オレをナメてんのかッ!
「〇〇〇.com の部分さえあればいい」っていっておきながら
なんで「?より右の部分が暗号化される」ってこたえになるんだ
この…… ド低能がァーーッ
暗号化はセッション層で行われるので、パケットを相手に届けるための〇〇〇.com の部分さえあればいい
URLの?より右の部分はhttpヘッダの領分なので、メッセージボディの一部として暗号化される
ってgoogleが言ってた
そもそもインターネット(WWW)ってのは原理上すべて公開される可能性のあるもんなんだよ
本当にネット上で行う行為が犯罪にあたるものだと自覚しているなら、エンドツーエンド暗号化や追跡困難化が施された特殊なネットワーク上でやり取りすべき
だからネット上で行う時点で、他人をブロックするという考え方は根本からズレていて、ネット上には探せばあらゆるものが置かれてしまっているものだから、見たくないものは各自でフィルタリングする発想をもって使いましょう、っていう自衛ベースの場であるべきなの
情報を置いてる側がクッションや障壁を設けるのはあくまで「親切」であって、それを強制できることはなく、強制しようとするのはローカルルールでしかないんだよ
仮にそういう行為が必要だと判断するなら、それは個人個人が各自の判断で実行するよりも、サービス提供者側がなんらかの基準を定め周知させそれに沿って自動的にコンテンツにフィルタをかけるべき
そういう機能がついてないサービスだという時点で、自分の考える正義のローカルルールを守れてない利用者側だけを責めることは難しいだろう