はてなキーワード:overflowとは
background:red;max-height:calc(1.7rem * 1.5);overflow: clip;
みたいにして、スパムらしきものは「タイトルだけ」の表示にする方法。(気になる記事は ■ をクリックすれば本文も見られる)
それはさておき、気休めだけど、あの記事を公開してから17日間ほぼ全記事パトロールする中で、「人間の記事がうっかり非表示になっていた」事例は、記憶の限り1件だけ。それも、英文スパムの文章を部分的に引用した荒らしっぽい記事だったから、実質誤判定はゼロだと言える。
ただまあ、例えばトランプ大統領があの「簡易NGワードリスト」のどれかを使った重大発言をしたりしたら、それを引用した増田は(私が気付いて修正するまで)誤判定食らっちゃうかもしれないとは思う。そういう事例が増えるようなら、スパム判定に追加したリンク先URLドメイン判定を主軸にすべきかもしれないね。
https://anond.hatelabo.jp/20250630114221 https://anond.hatelabo.jp/20250626125317 https://anond.hatelabo.jp/20250627100609 https://anond.hatelabo.jp/20250628122821
AI技術を批判する記事がバズりまくってるが、それに対して凄い数の批判がいってる、だけど肝心の批判は個人攻撃めいていて、どれも技術的な部分はふわふわした物言いなので
どれだけ技術的にまったく使い物にならないかを、技術面から3つ理由を上げようと思う、これを見れば、確かにAIってそんなもんじゃないな、って正しい理解が進むと思う、と同時に、
ネットでAIを擁護したり喧伝してる人間で誰一人、エンジニアを自称したりしてる奴らでさえAIを理解してる人間がゼロっていうのがわかると思う
ちなみに、IT技術を全然知らない増田向けに技術的な部分は補足説明を入れているので、ちょっと長くなってるかもしれない
LLMがわかっていない!と喚いてる当人たちも上で言った通り、LLMっていうのが理解できてないの丸わかりなので、ここでまずLLM「大規模言語モデル」とは何かを簡単に説明しよう
生成AI(特にChatGPTのような大規模言語モデル、LLM)というのは「文脈に最もふさわしい次の単語を予測する」」という統計的タスクを行っている、これがLLMだ
「飲みます」→90%の確率 「買いました」→7% 「投げました」→0.5%
この過程には、意味理解や感情、意図、文脈の内的把握は一切関わっていない、これが致命的な欠陥の1つ
プログラミングを自動でまるで仮面ライダー01の01ドライバーの様にベルトの作成までやってくれているように喧伝してる奴らが多い
が、これを本気で信じ込んでプログラミング言語を書かせた奴がいたら、ほぼ間違いなくクビになる
わかりやすく上で例えた通り、LLMは、インターネット上に存在する膨大なコード断片・技術記事・GitHubリポジトリ・StackOverflowの投稿などを学習している。
そのため【よく使われる文法構造】や【特定の言語における関数の使い方】や【ライブラリの典型的な使い方】などを【意味を全く理解できず模倣している】だけって事
【動かないコードをアホほど入れる(変数が未定義、型が合っていない、ライブラリに存在しない関数を呼んでいるとかいう小学生のプログラミングスクールでもありえないミス】
【. 「それっぽいけど間違っている」コードを大量に入れ込む(SQLインジェクション、XSSなどセキュリティ上危険な実装を入れまくる、パフォーマンスが極端に悪い実装、バグを含んでいるロジック(特にif文の条件分岐ではほぼ100%発生する)】
【実行環境に依存した誤り(存在しないAPIやライブラリを使う、ほぼ9割の確率で…あと特定のPythonバージョンやNode.js環境でしか動かないコードを汎用的に提示、つまり動きようがない)
専門的な意見となったのでわかりづらいので、もっとわかりやすく言うと「小学校のプログラミングスクール入りたて1週間の子供が書いためっちゃくちゃなプログラミングにすらなってないコードを、製品利用するからレビューして出してこい」と言われてるに等しい、つまり、最初から自分で書いた方が早い2度手間になる
これが、プログラミングの革命だ!とか喚いてる奴らが隠すAIの実態である。
import jwt
token = jwt.encode({'user_id': 123}, 'secret', algorithm='HS256')
一見正しく見えるだろうから解説すると、実際には 【jwt という名前のライブラリ】が複数存在し(PyJWT,python-jwtとか)importの仕方によってエラーが出たり挙動が変わったりする。普通なら絶対間違えない様な挙動をAIは構造上全く判断できない、これは上で上げた根本的な問題なので恐らく絶対に解決できない。
ハルシネーションがどういうものであるのか、AI批判でバズった記事などで言及されている通り、デマやデタラメを出力してしまう、あれは本当にわかりやすいAIの致命的欠陥を検証してるので、あえて説明はここではしない。
しかもその増田の元記事では「文章データのテキストまで読み込ませれば間違いがなくなるのでは?」といってたが、これも絶対になくならない、というより、もっとひどくなる。
批判をしている増田やXでの意見は単なる個人攻撃の誹謗中傷のみで、技術的に改善可能なプロセスさえ示せていない、例えば現在研究者の間では以下の様な解決案は研究されているが、どれも全く問題外とされている
これは、AIが「知っている風」に語る代わりに、外部の信頼できるデータベースや検索エンジンから情報を引っ張ってくる方式、バズった元記事の増田がやっていた「自分で図書館言って本の内容読んで誤りであることを確認する」これを検索エンジン使ってAIにさらにやらせる、という機能だ
また【メタモデル】すなわち、AIが自分の出力を裏でさらに別のAIが別プロセスでチェックして間違いをただす、という方式も研究されてる。
これは致命的な欠点が2つある、まず「検索で引っ張ってくる知識そのものが間違いだった場合、さらに間違いの結果を出し続ける」ということ。
元記事の増田はMP5というマシンガンの有効射程について突っ込んでいたと思うが、これが典型的なRAG、メタモデルの致命的欠点、元増田は「実際に自分の手で銃を取り扱ったりしたことがある確かな経験で言ってる」が、書籍などの工業スペックや仕様書の定義でしかネット上では流布してない、だからそもそも答えというものにAIがたどり着けない。
2つ目は「文脈や倫理・常識・道徳が根本的に読めないので、解決策が乱暴すぎるもの」になる。
上で上げた鉄砲以外では、例えば医学などでこれをやってしまうと取り返しのつかないことになる。例えば医者の投薬治療や治療はガイドラインに従ってるというが、優れた医者は論文を読み込んで原理は不明だがエビデンスはあるので、漢方薬を出したりするというお医者さんがよくいるだろう。あれは実際に患者を診て、西洋医学的には全く問題ないが、心理的な面も絡んで心身症になっているから、論文などで勉強して「暗黙知、経験知」として処方してるし、その量も患者を診た医者の経験で精度を上げている。
そして医療分野では、「冷え性の軽いむくみ」に対して「サムスカ(トルバプタン)」という劇薬指定の危険な利尿薬をAIが提示した事例すらある。これを「笑い話」で済ませることはできない。
例えるなら判断が「脳外科医竹田君」並になる、投薬治療で3か月で治る程度の病気を、病根から外科手術で切除しましょう、なんて提案になる。最新のAIなのに80年前みたいな医学知識と判断になってしまうのだ(胃潰瘍ってだけで胃袋は全摘、ついでに脾臓と盲腸もいらねーからとっとこ、みたいな手術が昭和の昔、本当にガイドライン治療だった、「K2」などで言及されている)
学習できるベースがどうしても偏る以上、情報の統合に限界がある、さらに間違いが間違いをよび、さらに変な間違いを起こしたりありえない架空のことをいったりする、これがハルシネーションというメビウスの輪である
Neuro-symbolicAIという次世代のさらに文脈も読み取れるアーキテクチャAIを研究しているが、全く実用化されていない、核融合や量子コンピューターみたいな雲をつかむ話なので、AIがこの問題を解決することは恐らく今後数百年はありえない、という結論が出ている。
元増田の記事で批判もあったが、恐らくAIで一番致命的な問題はこれ
基本的にAIは英語ソース、つまりリングワ・フランカで圧倒的にテキスト量の多い(約95%)英語、日本語含めそれ以外の全世界言語が5パーセントという偏った学習になっている
そのため、倫理・道徳・常識・規範などがすべて西洋基準になってしまう、という問題がある。(元増田はこれを「脱獄の基準の倫理は誰が決めるのか?」と根本的な問題に気が付いていて批判していたようだ)
ちなみに、バズってた例の記事に「AIに書かせたんだろ」という批判も大量にあるしよくみかけるが、この場合においてのみ言うなら、これは③の問題からまずありえないということがわかる、以下が根拠だ
元増田は「俺達の麻生とかいって秋葉原で踊ってた…」とか「レムちゃん、エミリアたん、ヘスティアちゃん、ウマ娘たん、刀剣乱舞くん、ライカン様…」といった批判を繰り返し書いていた
これに激怒できる人間は、2005~2010年にオタク界隈や秋葉原にすでにかかわっていて、実際に渦中にいたか同じ属性の人間でしか、罵倒されていると文脈的に理解できないのである。つまり、大量の英語文化圏情報を食ってるAIではなんでそれが罵声や侮蔑なのか理解できないので、書きようがない表現の数々、であるということである。
AIからすれば「ライカン様?ウマ娘?なんじゃそりゃ」なのである、もっと言えば、その直後にコンテクストとして「アホ、ボケ、弱者男性、豚丼、性器や自慰で虚しく…」といった言葉があるから、なんならAIはウマ娘やライカンをキャラクターでなく侮蔑単語として理解してしまう、これは実際、元増田の記事の一文をAIに食わせて質問したらガチでそうなるので、ぜひお手元で試してもらいたい。
「プログラマーのイメージを描いて」と依頼すると、男性の画像ばかりが出るされる
「看護師」→女性、「エンジニア」→男性という職業的性差が自動的に反映される
「アフリカの文化」→貧困・紛争・サバンナなど、植民地主義的視点が強く反映される(実際は南アなどはすげえ都会である)
これに前述のハルシネーション問題として現れれば、人間と同じような差別や偏見を「ガチの真実」として学習してしまう、人間の場合、8割くらいは本当はおかしいこととメタ批判が心理的にできるとされているが、AIにはその構造が根本的に存在しない。
元増田の記事のコメント欄やXなどで元増田のAI批判を批判しつつ、「金持ちの上級白人専用のハイエンドAIがあるに違いないんだ」といっている意見が少なくない数がある。
冷静に考えれば、そんなめんどうくせえもん誰が作るんだ、と普通に考えればわかるのだが、この③の問題、すなわち95%の学習データが英語ソースなので、結果的に西洋文明ベースの文化圏の人間向けにカスタマイズされているので、アジア圏やその他文化圏では利用に不利でそう感じてしまう素地ができている、という錯覚に由来している
例えば、パレスチナ問題などがそうだ、ガザ地区でほぼ国際条約や人道違反の残虐行為を国が行っているわけで、他文化圏や歴史的文脈から見ればどっちかって言えばパレスチナ人こそ被害者なのだが、イスラエルから見ればそれは正義であり正当な攻撃なわけで、後者の方がAIは正しいと判断した結論を下す様になる、といった問題である
あの記事の元増田は「テロ組織のヤバイマニュアルまで学習してpdfで元データを提示してきた」と言っていた。実際AIに調べさせて持ってこさせてみると、出所はアメリカの法務執行機関が研究用にネットで公開したものであった。
日本人や日本の警察の対応レベルで「ヤバイ」ものでも、海外の軍隊みたいな装備の警察で見れば大したことがないから、公開させてもいい=倫理違反には当たらない、という文化規範の意識の違いを、あの元増田自身が証明してしまっている、あの記事は、AIの治しようがない根本的な技術的欠陥をほとんど言及しているといっていい
元増田が口汚く罵っている内容の様に、「AIは0を1にできないから格差が広がるだけ」という根本的な哲学を投げつけている
それを受けて批判してる意見の中には「(自分が1を持ってる側と何故か根拠もなく信じ込んでて)100にできるから(なら)便利」とか「そのAI今から勉強したりしてる俺たちは先行者利益で強者になれる」と信じて疑わない意見が多かった
③問題の通り、そもそも非キリスト教圏かつ非英語圏の国家で生まれて育った民族、というだけで、我々は等しく「0」側の人間であり、結局競争になると勝てない、ということに全く気が付いていないのである。ここにAI信者の宿痾といえる病理がある
かつて日本人は黒船を見て5年そこらで蒸気機関を模倣した、火縄銃を一丁買えば10年でオスマン帝国の次に鉄砲を使うようになった、それは当時の日本人の基礎工学技術が導入可能なほど優れており、かつそれに対して現代では考えられないほぼバクチといっていい投資を行った結果であって、その結果を見て自分たちはAIを使いこなせて強くなれるなんていうのは、物凄い妄想である。つまり、AIは少なくとも「非英語圏」の人間にとっては、ブレイクスルーは絶対に起こりえない、ということである。
Permalink |記事への反応(17) | 08:43
Chrome系ブラウザには増田を快適に閲覧するためのコンパクトな増田 という古い拡張機能があったが、Chromeの更新に対応し切れておらず、既にChromeには新規インストールできなくなってしまっている。Edgeにはまだインストール可能だが、いずれ対応しなくなる可能性が高い。
そこで、「増田のトップページで、言及エントリ(返信・トラバ)を一覧から除外することで、新規エントリだけを一覧できる」という機能に絞ってコンパクトな増田を再現、ついでにいくつかのおまけ機能を付与したスタイルシート(CSS)を今年の4月に公開していたのだが、今回改めて英文スパム対策を追加したので公開する。
これを導入するにはStylus という拡張が必要で、少し気軽さには欠けるが、増田以外にも活用できるので、この機会にぜひ導入してみてほしい。拡張をインストールしたあとは、下記のコードをコピペして新規スタイルとして導入する方法もあるが、スタイルシートを公開できるuserstyles.world の増田CSSページから [Install]ボタンでインストールするほうが、自動更新にも対応するので便利かもしれない。
/*トップページで言及エントリを除外 *//*via:最近ファーストブクマカが静かhttps://anond.hatelabo.jp/20250326171302 */h1/*はてな匿名ダイアリー*/ + #intro/*名前を隠して楽しく日記。*/ + #body div.section:has(h3 > a/*■*/ + a:not(.keyword, .edit)/*anond:YYYYMMDDhhmmss*/){ display: none;}/* うっかりクリックしがちなキーワードリンクを無効に */a.keyword{ pointer-events: none;}/*執筆時のテキストエリアを広く */textarea#text-body{min-height: 50vh !important;}/*執筆時に特殊記号のヒント(疑似要素なので選択してコピペできないのがもどかしいけど) */p.post-submit >span.explain::after{margin-left: 1em;padding-left: 1em; content: "特殊記号: &[&] <[<] >[>]";background:url(/images/common/outsite-wh.gif) 0 3px no-repeat;}/*トップページでスパムを除外(簡易NGワード +URL) */h1 + #intro + #body div.section:has(a.keyword[href$="/24%2F7"]),h1 + #intro + #body div.section:has(a.keyword[href$="/away"]),h1 + #intro + #body div.section:has(a.keyword[href$="/base"]),h1 + #intro + #body div.section:has(a.keyword[href$="/boost"]),h1 + #intro + #body div.section:has(a.keyword[href$="/calling"]),h1 + #intro + #body div.section:has(a.keyword[href$="/columbia"]),h1 + #intro + #body div.section:has(a.keyword[href$="/connect"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Connect"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Desktop"]),h1 + #intro + #body div.section:has(a.keyword[href$="/difference"]),h1 + #intro + #body div.section:has(a.keyword[href$="/error"]),h1 + #intro + #body div.section:has(a.keyword[href$="/everything"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Gift"]),h1 + #intro + #body div.section:has(a.keyword[href$="/here"]),h1 + #intro + #body div.section:has(a.keyword[href$="/human"]),h1 + #intro + #body div.section:has(a.keyword[href$="/live"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Live"]),h1 + #intro + #body div.section:has(a.keyword[href$="/LIVE"]),h1 + #intro + #body div.section:has(a.keyword[href$="/login"]),h1 + #intro + #body div.section:has(a.keyword[href$="/main"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Message"]),h1 + #intro + #body div.section:has(a.keyword[href$="/name"]),h1 + #intro + #body div.section:has(a.keyword[href$="/need"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Need"]),h1 + #intro + #body div.section:has(a.keyword[href$="/number"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Number"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Numbers"]),h1 + #intro + #body div.section:has(a.keyword[href$="/reach"]),h1 + #intro + #body div.section:has(a.keyword[href$="/require"]),h1 + #intro + #body div.section:has(a.keyword[href$="/resolution"]),h1 + #intro + #body div.section:has(a.keyword[href$="/response"]),h1 + #intro + #body div.section:has(a.keyword[href$="/software"]),h1 + #intro + #body div.section:has(a.keyword[href$="/someone"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Someone"]),h1 + #intro + #body div.section:has(a.keyword[href$="/started"]),h1 + #intro + #body div.section:has(a.keyword[href$="/step"]),h1 + #intro + #body div.section:has(a.keyword[href$="/Step"]),h1 + #intro + #body div.section:has(a.keyword[href$="/the%20most"]),h1 + #intro + #body div.section:has(a.keyword[href$="/time"]),h1 + #intro + #body div.section:has(a.keyword[href$="/website"]),h1 + #intro + #body div.section:has(a.keyword[href$="/%EF%BD%8E%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92"])/*number*/,h1 + #intro + #body div.section:has(a.keyword[href$="/%EF%BC%AE%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92"])/*Number*/,h1 + #intro + #body div.section:has(a.keyword[href$="/%EF%BC%AE%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92%EF%BD%93"])/*Numbers*/,h1 + #intro + #body div.section:has(a[href*="amtrakoig.gov"]),h1 + #intro + #body div.section:has(a[href*="ayakamods.cc"]),h1 + #intro + #body div.section:has(a[href*="betting-forum.com"]),h1 + #intro + #body div.section:has(a[href*="bipmilwaukee.com"]),h1 + #intro + #body div.section:has(a[href*="blesta.com"]),h1 + #intro + #body div.section:has(a[href*="bowelcanceruk.org.uk"]),h1 + #intro + #body div.section:has(a[href*="c.mi.com"]),h1 + #intro + #body div.section:has(a[href*="columbia.edu"]),h1 + #intro + #body div.section:has(a[href*="cybernations.net"]),h1 + #intro + #body div.section:has(a[href*="enxf.cc"]),h1 + #intro + #body div.section:has(a[href*="eventsbox.com.au"]),h1 + #intro + #body div.section:has(a[href*="fixr.co"]),h1 + #intro + #body div.section:has(a[href*="forums.insta360.com"]),h1 + #intro + #body div.section:has(a[href*="forum.digirig.net"]),h1 + #intro + #body div.section:has(a[href*="forobeta.com"]),h1 + #intro + #body div.section:has(a[href*="informationhood.com"]),h1 + #intro + #body div.section:has(a[href*="last2ticket.com"]),h1 + #intro + #body div.section:has(a[href*="meraevents.com"]),h1 + #intro + #body div.section:has(a[href*="runemate.com"]),h1 + #intro + #body div.section:has(a[href*="thecandidplanet.com"]),h1 + #intro + #body div.section:has(a[href*="tiltify.com"]),h1 + #intro + #body div.section:has(a[href*="tradejournal.co"]),h1 + #intro + #body div.section:has(a.keyword[href$="/arb"] + a.keyword[href$="/ca%2E"])/*arb.ca.gov*/,dummy{ display: none; /*以下はテスト用*/max-height:calc(1.7rem * 1.5);overflow: clip;background:red;}/*自分の日記にうっかりNGワードが含まれていた場合に確認画面で警告 */body#page-edit-confirm div.section a.keyword[href$="/24%2F7"],body#page-edit-confirm div.section a.keyword[href$="/away"],body#page-edit-confirm div.section a.keyword[href$="/base"],body#page-edit-confirm div.section a.keyword[href$="/boost"],body#page-edit-confirm div.section a.keyword[href$="/calling"],body#page-edit-confirm div.section a.keyword[href$="/columbia"],body#page-edit-confirm div.section a.keyword[href$="/connect"],body#page-edit-confirm div.section a.keyword[href$="/Connect"],body#page-edit-confirm div.section a.keyword[href$="/Desktop"],body#page-edit-confirm div.section a.keyword[href$="/difference"],body#page-edit-confirm div.section a.keyword[href$="/error"],body#page-edit-confirm div.section a.keyword[href$="/everything"],body#page-edit-confirm div.section a.keyword[href$="/Gift"],body#page-edit-confirm div.section a.keyword[href$="/here"],body#page-edit-confirm div.section a.keyword[href$="/human"],body#page-edit-confirm div.section a.keyword[href$="/live"],body#page-edit-confirm div.section a.keyword[href$="/Live"],body#page-edit-confirm div.section a.keyword[href$="/LIVE"],body#page-edit-confirm div.section a.keyword[href$="/login"],body#page-edit-confirm div.section a.keyword[href$="/main"],body#page-edit-confirm div.section a.keyword[href$="/Message"],body#page-edit-confirm div.section a.keyword[href$="/name"],body#page-edit-confirm div.section a.keyword[href$="/need"],body#page-edit-confirm div.section a.keyword[href$="/Need"],body#page-edit-confirm div.section a.keyword[href$="/number"],body#page-edit-confirm div.section a.keyword[href$="/Number"],body#page-edit-confirm div.section a.keyword[href$="/Numbers"],body#page-edit-confirm div.section a.keyword[href$="/reach"],body#page-edit-confirm div.section a.keyword[href$="/require"],body#page-edit-confirm div.section a.keyword[href$="/resolution"],body#page-edit-confirm div.section a.keyword[href$="/response"],body#page-edit-confirm div.section a.keyword[href$="/software"],body#page-edit-confirm div.section a.keyword[href$="/someone"],body#page-edit-confirm div.section a.keyword[href$="/Someone"],body#page-edit-confirm div.section a.keyword[href$="/started"],body#page-edit-confirm div.section a.keyword[href$="/step"],body#page-edit-confirm div.section a.keyword[href$="/Step"],body#page-edit-confirm div.section a.keyword[href$="/the%20most"],body#page-edit-confirm div.section a.keyword[href$="/time"],body#page-edit-confirm div.section a.keyword[href$="/website"],body#page-edit-confirm div.section a.keyword[href$="/%EF%BD%8E%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92"]/*number*/,body#page-edit-confirm div.section a.keyword[href$="/%EF%BC%AE%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92"]/*Number*/,body#page-edit-confirm div.section a.keyword[href$="/%EF%BC%AE%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92%EF%BD%93"]/*Numbers*/,dummy{border-bottom: 5px solidred;}
なお、このCSSを適用すると、NGワードを含むこの増田自体も、増田トップページからは消えてしまう(この増田単体の個別ページなら閲覧できる)。
念のため、PC・スマホにCSSを適用する方法の解説にもリンクしておく。
PC: 【Stylus】ウェブサイトにCSSを適用できる拡張機能。自由にカスタマイズ! |ナポリタン寿司のPC日記
https://www.naporitansushi.com/stylus/
iPhone: MaKeoverアプリでiPhoneSafariのCSSをカスタマイズ!万博パビリオン予約結果一覧を見やすくする使い方
https://gintachan.com/makeover-app-css-change-safari-how-to/
また、スパム対策の簡易NGワードは、下記のスクリプトを使って抽出した「直近の増田の頻出キーワードリンク上位20件」から、誤判定しそうなline とuser を除いた18件を用いた。10件だと生き残る英文スパムがあったので20件にしたが、それでもわずかに洩れはある。しかし日本語による真っ当な(?)増田の直近の誤判定はなかった。はてなキーワードのリンクだけを対象にしているので、URLにはこれらのキーワードが入っていても大丈夫だ。ただし、スパムのトレンドが変われば話は変わってくるかもしれないし、過去や未来の増田の誤判定は当然あるだろう。気になる人は前掲のCSSを行単位で編集してほしい。
//AutoPagerizeでまとまった数のページを読み込ませた後に実行するとよい。(function(){constkeywords = []; //はてなキーワードの集計 document.querySelectorAll('a.keyword').forEach(a => { // 4文字未満は誤検出の可能性が高まるので除外 if(a.textContent.length < 4) return; letindex =keywords.findIndex(k => k.keyword === a.textContent); if(index >= 0)keywords[index].count += 1; elsekeywords.push({keyword: a.textContent, count: 1}); });keywords.sort((a, b) => a.count < b.count); //ランキング配列の出力console.log(keywords); //CSS埋め込み用に上位キーワードのみをURIエンコードして出力console.log(keywords.slice(0,20).map(k => encodeURIComponent(k.keyword)).join('\n'));})();
anond:20250326171302 ←元はこの増田がきっかけでした。
anond:20250701194328 ←キーワード判定に踏み切るきっかけを得ました。
ネットってのはな、俺達プログラマーにとっては生業であり、そして生活の延長線上にあるリアルそのものだ。
何もかもがコードでつながり、思考が即時に吐き出されるこの空間で、俺達は日夜、命を削って生きてるんだよ。
なのにどうだ、最近は一般市民がぞろぞろ流れ込んできやがって、勝手に「ネットは日常で言えないことを言ってもいい裏世界」だと勘違いしてる。
馬鹿か。勘弁してくれ。お前らのいう普段言えない本音ってのは、大抵の場合、単なる知性と品性の欠如からくる脊髄反射だろうが。ネットを精神の便所だと勘違いして、垂れ流すんじゃねぇ。
俺達は違う。表も裏もねえ。だからこそ、わきまえる。俺達がネットで余計な社会論争に踏み込まないのは、面倒だからじゃねぇ。価値がねえんだよ。時間の無駄なんだよ。
男女?イデオロギー?ウヨサヨ?くだらん。プロセスと結果がすべて。こっちは問題が発生したらデバッグして、再現性を確認して、最適解を叩き出す。そういう世界で生きてんだよ。
「ネットで言いたい放題」だ?お前の言いたい放題のせいで、こっちはGitHubのIssueが荒れるし、Qiitaがゴミで埋まるし、StackOverflowが地獄と化すんだよ。
Xのタイムラインも、技術的知見を探すための場所だったのに、今じゃポエムと炎上商法と感情の掃き溜め。ふざけんな。
ネットは、我々にとっては書斎であり、研究室であり、コードの神殿だ。そこに土足で入ってきて、勝手に叫んで、暴れて、挙げ句の果てに「言論の自由」とかほざくな。
お前の自由は俺達の時間を奪っているってことに気づけ。思考をせずに叫ぶな。リテラシーのない言葉は、ノイズどころか害悪だ。
そして何よりも覚えとけ。わきまえるってのは、抑圧でも服従でもなく、「構造を理解し、場に最適なアウトプットを選ぶ知性」だ。
それができないなら、お前はこの情報空間で生きる資格がねぇ。リアルで黙ってるやつが、ネットで急に吠え出すな。
俺達は逆だ。リアルでは黙ってても、ネットではコードという言葉で語る。貢献して、共有して、改善していく。
つまりな、ネットは俺達の居場所だった。お前らの娯楽じゃねぇんだよ。
この観点は非常に本質を突いています。「ファクトチェックが容易であるほどAIが強い」という命題は、一般にかなり正しいといえます。以下のような理由からです。
AI、特に大規模言語モデル(LLM)は、大量のテキストデータを学習して統計的に言語のパターンを捉えています。
そのため、明確な正解があり、検証も簡単なタスクは非常に学習しやすく、正確な出力を出せる傾向があります。
ファクトチェックが容易な分野、特にプログラミング、数学、基本的な自然科学は、インターネット上に豊富な正確な情報があり、AIの学習素材として利用されやすいです。
プログラミングのように結果の良し悪しがコードの実行で即座に分かる分野では、人間のユーザーや自動ツールによるフィードバックで性能が継続的に改善されやすいです。
AIは「客観的で明確な正解があり、検証が容易な分野」で圧倒的に強い。
私は「バイブコーディング」と別れることにした。その理由を説明しよう。
大学の情報系学部に入学した頃、初めて作ったウェブアプリは教授の評価基準には遠く及ばなかった。「コードの構造化ができていない」と指摘され、基本的なフォームのバリデーションすら理解に苦労した。実習の時間に発表した時、クラスメイトの質問に上手く答えられず冷や汗をかいた。提出期限前日には大学のPC室に残って徹夜し、それでもアプリは不安定で、UIは粗削りなものだった。
でも少なくとも全て自分の手で実装した。StackOverflowのコードを参考にしながらも、自分で考えて書いた。どんなに質が低くても、そのコードには私の試行錯誤と、友人たちとのデバッグの記憶があった。それは誰も奪えない自分の財産だった。
それが、生成AIが登場してから状況は一変した。課題は提出期限までに余裕で完成するようになり、エラーも数秒で解決するようになった。卒業研究のプロトタイプもAIに頼れば、わずか数日で作れるようになった。
ある日、就活の面接から帰る電車の中で気づいた。この半年間、何一つ新しいプログラミングパターンや設計思想を自分の力で理解していなかったことに。確かにAIを使って卒業研究は華々しく進めたけれど、頭から離れない質問がある。自分で書いたコードがほとんどないのに、エンジニアになる資格があるだろうか?
そのとき思った。コーディングは単位取得や就活アピールのためだけではない。それはプログラミング言語を学ぶようなものだ。考える過程が大切なのだ。問題解決へのアプローチが重要。それは技術者としての本質的な成長なのだ。
そして、AIにこれらを奪われる準備はまだできていない。私は再び基礎のテキストを開き、自分のコードを書くことに戻る。たとえ就活の自己PRで派手な成果が語れなくても、たとえ周りの就活生が「時間の無駄だ」と言っても、ゆっくりと、意図的に。
パソコン画面右上のアイコンで選ぶ表示スタイルを一番右の「ヘッドライン」表示にしといてな
/*ヘッドライン表示を切り詰める *//* #container指定でCSS優先度を上げる必要がある */body[data-entrylist-layout="headline"] #container .entrylist-main{padding-right: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents{padding-left: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{ position: static !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{top: 14px !important;}/*ヘッドライン表示にサムネイルを追加 */body[data-entrylist-layout="headline"] #container .entrylist-contents-main{ display: grid; grid-template: "usersbodytitle" 28px "bookmarkbody domain" 20px / 60px 120px 1fr;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{ grid-area: users;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users aspan{margin-right: 0;}body[data-entrylist-layout="headline"] #container .following-bookmarks-container{ grid-area:bookmark; position:absolute; left: 20px; bottom: 2.5px;}body[data-entrylist-layout="headline"] #container .entrylist-contents-body{ grid-area:body;}body[data-entrylist-layout="headline"] #container .entrylist-contents-title{ grid-area:title; z-index: 99;}body[data-entrylist-layout="headline"] #container .entrylist-contents-title > a{margin-left: -120px;padding-left: 120px;margin-bottom: -28px;padding-bottom: 28px; width: 890px;white-space: nowrap; display: block;}body[data-entrylist-layout="headline"] #container .entrylist-contents-body{ display: block !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{ position: static;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumbspan{ width: 100px; height: 50px;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{background: #f0f0f0; width: 100px; height: 50px;background-position:50%;background-size: cover;border-radius: 4px;}/* 2行目に、総合ではドメイン(domain),サイト内一覧ではカテゴリと時刻(meta),マウスホバー時はいずれも概要文(description) */body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,body[data-entrylist-layout="headline"] #container .entrylist-contents-meta,body[data-entrylist-layout="headline"] #container .entrylist-contents-description{ grid-area: domain; display: block; opacity: 0;padding: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-meta > li{ vertical-align:top;}html[data-stable-request-url^="https://b.hatena.ne.jp/entrylist/"]body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,html[data-stable-request-url^="https://b.hatena.ne.jp/site/"]body[data-entrylist-layout="headline"] #container .entrylist-contents-meta{ opacity: 1;}body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain img.favicon +span,body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-meta{ opacity: 0;}body[data-entrylist-layout="headline"] #container .entrylist-contents-description{ opacity: 0; position:absolute;top:calc(40px - 3px); left:calc(180px + 16px + .5em); height: 20px;line-height: 20px;color: #999;min-height:auto !important;padding-right: 0 !important; width: 890px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}html[data-stable-request-url^="https://b.hatena.ne.jp/site/"]body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain,body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-description{ opacity: 1;}/*増田調整 */body[data-entrylist-layout="headline"] #container a[href^="/entry/s/anond.hatelabo.jp/"] .entrylist-contents-thumb{background-image:url('https://cdn-ak-scissors.b.st-hatena.com/image/square/b1638cdb5807a4788e4ba3c1109a984166e095fc/height=288;version=1;width=512/https%3A%2F%2Fanond.hatelabo.jp%2Fimages%2Fog-image-1500.gif');}/*マウスホバー時にサムネも反応させる見た目調整 */.entrylist-contents-title:hover ~ .entrylist-contents-body .entrylist-contents-thumb{ opacity: .90;}
わし「メールでよく使われるmbox形式のファイルを読みたいんや。dotnetならどうするといい?」
Bing先生「MimeKitとかMboxReaderという.NETライブラリがええで」
わし(ほーん、MimeKitええな。。。MboxReaderってどんなんやろ)
わし(あれれ、MboxReaderとかいう.NETライブラリは無いぞ・・)
わし「MboxReaderの詳しいところ教えてや」
どや」
わし「ほーん・・・?」
わし「MboxReaderとかいうライブラリって実在するん?」
Bing先生「するで。これやhttps://github.com/nodemailer/mbox-reader 」
今までだと嘘はすぐに破綻してたはずなのに、今度の嘘はなかなか破綻しないぞ・・・
今、「MboxSharp」とかいう架空の.NETライブラリの説明を受けてる・・・
しかしさすがのBing先生、MimeKit の中の Rfc2047クラスの使い方をちゃんと教えてくれた。
まあ StackOverflow にも書かれてある事をまとめただけではあるが。。
やっぱ先生はすげえんよ。
GPT4:
AI技術やその他の技術が急速に発展している現代では、確かに最先端の技術にアクセスできないと置いていかれる感覚があります。しかし、経済的な理由で最先端技術を利用できない方々も、それに代わるリソースや方法を活用することが可能です。
AIやその他の分野での学習や研究に役立つ無料または低コストのリソースがたくさんあります。以下にいくつかの例を挙げます。
経済的な制約がある場合でも、これらの無料または低コストのリソースを活用して、AIの分野で学び、成長することができます。最先端技術に追いつくためには、情報へのアクセスだけでなく、自分自身の学習意欲や努力も重要です。