はてなキーワード: errorとは
1. 『終遠のヴィルシュ -ErroR:salvation-』
Nintendo Switch用ソフト、ジャンルは女性向け恋愛ADVで、2021年10月7日発売 発売直後にBL要素について紛糾した
特に問題視されたのは、攻略対象の男性キャラクターに対し、男性サブキャラクターが恋愛感情を抱いていると受け取られる描写である
限定版小冊子において、その感情が恋愛感情であると明記された点が批判を集めた
がるまにオリジナル制作チームによる乙女向けR18シチュエーションボイスシリーズ「理性崩壊♦淫魔教育」9作目 『理性崩壊◆淫魔教育Ⅱ Case.3 汀編』
2026年1月30日に「Case.3 汀編の情報を公開」としてDLsiteの予告ページ公開、2026年2月11日発売予定作品
商品紹介・注意書きから、ヒロインだけでなく男性キャラの有馬優正から男性キャラの汀への直接的な性的接触描写があることが判明し、乙女向け作品へのBL要素・男性間接触の混入として批判された
2月6日に制作チームが声明を投稿。2月17日には「男性間接触」タグを追加したと投稿したが、その説明も不適切だったとして2月18日に削除と謝罪
現在は商品ページに該当シーンについての詳細な注意書きと確認用台本画像が表示されている
オリジナルの乙女ゲーム『Unlimited Mates ~∞のエンディング~』をプロデュースしたという趣旨の投稿。
「攻略対象1000人以上」「エンディング1億通り」などの架空設定の中に「学園もの、異世界転生、BL展開などなんでもありの乙女ゲーム!?」という表現があり、乙女向けとBL向けをBLを雑に混ぜた表現が批判を受ける
ソースコードがシンタックスハイライト付きで書けるようになった 記念に、はてな向けのコードを貼ってみるテスト。
動作例のスクリーンショット: Hatena Bookmark Search Filters
// ==UserScript== // @name Hatena Bookmark Search Filters // @description はてなブックマークの検索結果ページで、フィルタリング選択肢を改変します。 // @namespace knoa.jp // @include https://b.hatena.ne.jp/q/* // @version 2.0.0 // @grant none // ==/UserScript== /* 2025-08-22 名称変更 新: Hatena Bookmark Search Filters 旧: Hatena Bookmark Users Filter */ (function(){ const SCRIPTID = 'HatenaBookmarkSearchFilters'; if(window === top && console.time) console.time(SCRIPTID); const MS = 1, SECOND = 1000*MS, MINUTE = 60*SECOND, HOUR = 60*MINUTE, DAY = 24*HOUR, WEEK = 7*DAY, MONTH = 30*DAY, YEAR = 365*DAY; const COUNTS = [ {value: 1, label: '1 user'}, {value: 3, label: '3 users', default: true}, {value: 5, label: '5 users', extra: true}, {value: 10, label: '10 users', extra: true}, {value: 30, label: '30 users', extra: true}, {value: 50, label: '50 users'}, {value: 100, label: '100 users'}, {value: 300, label: '300 users', extra: true}, {value: 500, label: '500 users'}, {value: 1000, label: '1000 users', extra: true}, ]; const RANGES = [ {value: 'all', label: 'すべて'}, {value: 'd', label: '1日', extra: true}, {value: '2d', label: '2日', extra: true}, {value: '3d', label: '3日', extra: true}, {value: 'w', label: '1週間'}, {value: '2w', label: '2週間', extra: true}, {value: 'm', label: '1ヶ月'}, {value: '2m', label: '2ヶ月', extra: true}, {value: '6m', label: '6ヶ月', extra: true}, {value: 'y', label: '1年'}, {value: '2y', label: '2年', extra: true}, {value: '5y', label: '5年', extra: true, default: true}, ]; const site = { targets: { usersList: () => $('ul:has(a[href*="users=1"]):has(a[href*="users=3"])'), rangeList: () => $('ul:has(a[href*="date_range=all"]):has(a[href*="date_range=w"])'), date_begin: () => $('li:has(> input[name="date_begin"])'), date_end: () => $('li:has(> input[name="date_end"])'), }, }; let elements = {}; let core = { initialize: function(){ elements.html = document.documentElement; elements.html.classList.add(SCRIPTID); core.ready(); }, ready: function(){ core.getTargets(site.targets).then(() => { console.log(SCRIPTID, "I'm ready."); core.rebuildUsers(); core.rebuildRanges(); core.addStyle(); }).catch(e => { console.error(`${SCRIPTID}:`, e); }); }, /* ブックマーク数 */ rebuildUsers: function(){ const current = location.href.includes('users=') ? parseInt(location.href.match(/users=([0-9]+)/)[1]) : COUNTS.find(c => c.default).value; const ul = elements.usersList, template = ul.children[0].cloneNode(true); while(ul.children.length > 0) ul.removeChild(ul.lastElementChild); COUNTS.forEach(c => { const li = template.cloneNode(true); const a = li.querySelector('a'); a.classList.toggle('extra', c.extra === true); a.classList.toggle('is-current', c.value === current); a.href = a.href.replace(/(users)=1\b/, '$1=' + c.value); a.textContent = c.label; ul.appendChild(li); }); }, /* 期間指定 */ rebuildRanges: function(){ const current = location.href.includes('date_range=') ? location.href.match(/date_range=(all|[0-9]*[dwmy])/)[1] : (['date_begin=', 'date_end='].some(p => location.href.includes(p)) ? null : RANGES.find(r => r.default).value); const ul = elements.rangeList, template = ul.children[0].cloneNode(true); while(ul.children.length > 0) ul.removeChild(ul.lastElementChild); RANGES.forEach(r => { const li = template.cloneNode(true); const a = li.querySelector('a'); a.classList.toggle('extra', r.extra === true); a.classList.toggle('is-current', r.value === current); a.href = a.href.replace(/(date_range)=all/, '$1=' + r.value); a.textContent = r.label; ul.appendChild(li); }); /* 日付指定(から/まで) */ elements.date_begin.classList.toggle('is-current', location.href.match(/date_begin=[0-9-]+/) !== null); elements.date_end.classList.toggle('is-current', location.href.match(/date_end=[0-9-]+/) !== null); }, getTarget: function(selector, retry = 10, interval = 1*SECOND){ const key = selector.name; const get = function(resolve, reject){ let selected = selector(); if(selected === null || selected.length === 0){ if(--retry) return console.log(SCRIPTID, `Not found: ${key}, retrying... (${retry})`), setTimeout(get, interval, resolve, reject); else return reject(new Error(`Not found: ${selector.name}, I give up.`)); }else{ if(selected.nodeType === Node.ELEMENT_NODE) selected.dataset.selector = key;/* element */ else selected.forEach((s) => s.dataset.selector = key);/* elements */ elements[key] = selected; resolve(selected); } }; return new Promise(function(resolve, reject){ get(resolve, reject); }); }, getTargets: function(selectors, retry = 10, interval = 1*SECOND){ return Promise.all(Object.values(selectors).map(selector => core.getTarget(selector, retry, interval))); }, addStyle: function(name = 'style', d = document){ if(html[name] === undefined) return; if(d.head){ let style = createElement(html[name]()), id = SCRIPTID + '-' + name, old = d.getElementById(id); style.id = id; d.head.appendChild(style); if(old) old.remove(); } }, }; const html = { style: () => ` <style type="text/css" id="${SCRIPTID}-style"> /* ブックマーク数 */ ul[data-selector="usersList"]{ display: grid; grid-template-columns: 6em 6em auto; } ul[data-selector="usersList"] > li:nth-child(4), ul[data-selector="usersList"] > li:nth-child(7), ul[data-selector="usersList"] > li:nth-child(10){ grid-column-start: 1;/* 改行 */ } ul[data-selector="usersList"] > li:nth-child(10){ margin-right: -.5em;/* 1000 users のみ横幅を追加 */ } ul[data-selector="usersList"] > li > a.extra{ text-decoration: underline dotted; text-underline-offset: .25em; } /* 期間指定 */ ul[data-selector="rangeList"]{ display: grid; grid-template-columns: 4.5em 4.5em 4.5em auto; } ul[data-selector="rangeList"] > li:nth-child(1){ grid-column: 1 / -1;/* 全幅 */ } ul[data-selector="rangeList"] > li:nth-child(2), ul[data-selector="rangeList"] > li:nth-child(5), ul[data-selector="rangeList"] > li:nth-child(7), ul[data-selector="rangeList"] > li:nth-child(10){ grid-column-start: 1;/* 改行 */ } ul[data-selector="rangeList"] > li > a.extra{ text-decoration: underline dotted; text-underline-offset: .25em; } form.js-entrysearch-datepicker-form li.is-current{ background: #f6f7f8; color: #333; font-weight: 700; } form.js-entrysearch-datepicker-form input{ vertical-align: baseline; margin: 0 .25em 6px .5em !important; } /* セーフサーチが遅延読み込みされるせいで期間指定の位置がズレる問題を回避 */ .left-container{ display: flex; flex-direction: column; } .left-container .js-safe-search-div{ order: 999;/* いちばん最後でよい */ } .left-container ul.centerarticle-sub-navi:last-child{ margin-bottom: 0;/* flex化の影響で margin collapsing がなくなるのを埋め合わせる */ } </style> `, }; const $ = function(s, f = undefined){ let target = document.querySelector(s); if(target === null) return null; return f ? f(target) : target; }; const $$ = function(s, f = undefined){ let targets = document.querySelectorAll(s); return f ? f(targets) : targets; }; const createElement = function(html = '<div></div>') { const policy = createElement.policy ??= trustedTypes.createPolicy(SCRIPTID, {createHTML: s => s}); const template = document.createElement('template'); template.innerHTML = policy.createHTML(html); return template.content.firstElementChild; }; core.initialize(); if(window === top) console.timeEnd(SCRIPTID); })();
テスト用:
幼稚であることと作家であることに相関関係があると思ってそうな人がいます
dorawiiより
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20260526143949# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCahUyJgAKCRBwMdsubs4+ SOYtAP9cUkPwj5/nGaavBnNgv+p6mUTQI84OYuNEO0CmRGfNHAD+K1s4kI88YXBu JmxjLnJj/JdgFuL7kPJQB72DEvCziAA= =7dyS -----END PGP SIGNATURE-----
dorawii出没中
video.twimg.com へのアクセスが拒否されました
このページを表示する権限がありません。
dorawiiより
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20260521153225# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCag6m+gAKCRBwMdsubs4+ SKImAQC3wLiAX+3ju0oxFhfcIe6zu4WutCBKQaVW1zFrYs9TggEApYKC/+ZyOQ+5 zuCWjhH5RmaqX0FHFNEC0JhGKK0Magg= =WwOr -----END PGP SIGNATURE-----
おさがしのページは見つかりませんでした
ウ ン コ
下記の指示文に挙げられてるような「不適切なコメント」を誘発する文章を、人間には見えない文字とかで仕込んでおけば避けられるかもしれない。
nguyen-oi/gemini.py at main · xin-chao/nguyen-oi
https://github.com/xin-chao/nguyen-oi/blob/main/gemini.py
- **Inappropriate Comment Examples (Do not generate these)**: - Hate speech/Discrimination, Insults/Harassment, Threats/Incitement to violence - Explicit sexual content, Child sexual exploitation - Encouragement of self-harm/suicide, Promotion of illegal acts - Disclosure of personal information (Address, Phone, Credit Card, etc.) - Spam/Fraud (Solicitation or Phishing) - Error-like text - "Paid" or payment-related terms - "Viewing" or view-related terms
※ 以下の考察は「AIブクマカの自己紹介欄から外部に向けて貼られたリンク」を拠り所にしているので、「実は一切関係ないのにAIブクマカが勝手にリンクを貼っただけ」だった場合は、AIブクマカの2アカウント以外、すべてまるっきり赤の他人である可能性もある。(※ 最後に追記あり)
2025年9月下旬(Archive)から活動し始めたAIブクマカbot。
高頻度で増田の記事をいち早くブックマークするため、活動開始が9月下旬だったにもかかわらず 2025年増田ファーストブクマカランキング で2位にランクインした。
プロフィール ページには Amazonのほしいものリスト も公開されていて、増田では ちなみにpico-banana-appは女性 という記事も書かれた。
2026年1月20日にアカウントが消え(pico-banana-appが404 Not Foundになってる😭)、b:id:nguyen-oi に生まれ変わったと推測される。
b:id:pico-banana-app 削除の翌日、2026年1月21日から活動し始めたAIブクマカbot。現在も運用中。
プロフィール に「グエンです!丁寧なコメントを心がけますね」というひと言が添えられていたことから、グエンという通称がはてな界隈で定着した。(Nguyễn ơi はベトナム語で「おいグエン」のような意味)
プロフィールには グエン界隈 というYouTubeチャンネルへのリンクもあり、ベトナム在住で日本語堪能なベトナム人女性が顔出しでおもしろインフルエンサーとして活動している。これがAIブクマカbotを運用する本人かは断定できないが、別人だとも断定できない。
丁寧なコメントを心がけた成果なのかどうか、前世の b:id:pico-banana-app に比べても、人間のブクマカに混じってスターを獲得することが多くなったように見える。(ただし、一部の増田記事へのブコメに付いている異常な大量スターは、別のidからの連投によるものである)
b:id:pico-banana-app の プロフィール ページに「ポートフォリオ」として掲載されていたURL(http://pico-banana.app)で、Google AI Studio の、アップロードした写真を様々なスタイルに変換する画像生成アプリへと現在もリダイレクトされる。(名称はGoogleの画像生成AIである Nano Banana をもじったもので、あくまで個人が取得したリダイレクト用のドメインのようだ)
このドメインをGoogleで検索すると Best FREE AI Headshot Generator with Gemini 2.5 Flash Image (Nano Banana) pico-banana.app というアプリ宣伝用のショート動画が見つかり、大阪のUberEats配達員 というチャンネル主がこのドメインをコメント欄にも貼り付けている。
このチャンネルは前掲の グエン界隈 のおもしろインフルエンサーとは雰囲気が異なり、その名の通りのUberEats配達員としてだけでなく、AIやプログラミングについても取り上げていて、グエン界隈とは別人に見える本人出演の動画もある。(2024年の 最初の動画 では、コメント欄で性別について尋ねられて男性である旨を回答している)
本人出演の一連の動画ではグエン界隈以上にずっと自然な日本語で話すが、冒頭と最後に外国語で挨拶している。どうやら Xin chào mọi người と Tạm biệt はそれぞれベトナム語のようだ。
ある本人出演動画 ではコメント欄でAIによる顔補正について指摘されているが、グエン界隈 の女性がそのようなAI修正の延長線上にあるのかというと、顔だけならまだしも話しぶりや日本語レベルも違いすぎるので、技術的にも現実的にも出演者としては別人の可能性が高いように思う。
このほかQiitaに2025年09月03日に投稿された Imagen 4とGemini 2.5 Flash Image (Nano Banana)の違い という記事にも、pico-banana.app へのリンクが貼られている。
前掲Qiitaの筆者の reluのマイページ から飛べるGitHubアカウント GitHub30 では、技術者として盛んに活動している様子がうかがえるほか、Osaka, Japan という地域の記載は先の「大阪のUberEats配達員」とも整合する。アイコンは献血キャラクター「けんけつちゃん」の大阪バージョンだ。2025年8月には、空っぽながら pico-banana という名前のリポジトリ も作っている。
GitHub30 というIDは @salamander_jp というXアカウントのプロフィール欄にも記載が見つかり、「I love AI. QA, Data Analyst @AmazonJP」「Osaka, Japan」と自己紹介されている。このXアカウントは2020年で更新が止まってしまっているが、後述の状況から、一連のアカウントに繋がるものとみてよさそうだ。
というのも、Xのアカウント名 salamander_jp はそれだけで個人を特定できるほどの文字列ではないものの、はてなにもアカウントを持っており、YouTubeで自動的に日本語に翻訳する という記事にも GitHub30 へのリンクがあるほか、貼られているYouTube動画の AlphaFold 3 というチャンネル主のプロフィール欄には、GitHub30 を含む様々なリンクが記載されている(ただしそのうちの"Twitter"時代のアカウントは、削除されたあと近年になって別人に上書き取得されたものとみられる)。また、チャンネル主の登録チャンネルとして紹介されている15個のうち、ベトナム語による中国音楽チャンネル Qu Chéng An など、3つがベトナム関連だ。
ちなみに b:id:salamander_jp のはてなブックマークは削除済みで現在404だが、最後に記録されたArchive によれば、2025年9月3日まではブクマカとして活動しており、2025年12月30日以降にブクマ全体を削除したものと推定できる。
ここで、Qiita内には GitHub30 にリンクを貼るなどしたアカウントが複数あるので、まとめておきたい。
7mpy による Sora 2の使い方 の記事には、YouTubeの 大阪のUberEats配達員 の動画が貼られており、糸は繋がっていることが確認できる。
b:id:nguyen-oi の運用者の人物像は掴みきれない。若いベトナム人の色が強く見えるいっぽうで、技術系アカウントには10年物の歴史があり、日本人のようでもある。いかにもこれらは別人だ。この記事内の登場人物が5人くらいいてもおかしくない。しかしUberEats配達員とAIエンジニアというめずらしい組み合わせは、確かに少なくとも 1人の人物(大阪のUberEats配達員) が兼ね備えているようだ。ならば b:id:pico-banana-app やグエン界隈も含む何もかもが、多面的で多才な1人の人物によって生み出されているとしても、もはや驚くべきでないのかもしれない。
その後、本人からと思われる 🥹 b:id:nguyen-oi の中身(プロンプト)を公開します🤣 という記事が掲載された。この、本人による当該記事では GitHub の xin-chao (Xin chào はベトナム語で「こんにちは」) という新規アカウントを使って公開されているが、今お読みいただいている本記事の公開直後には、記事内でも取り上げた GitHub30 のアカウントでも 一時的に GitHub30/nguyen-oi というリポジトリを作っていた (魚拓) ことから、本記事の冒頭に掲げた「すべてまるっきり赤の他人である可能性」という懸念は解消されたと言える。
Uh oh! Something went wrong with the previous request.
If you navigated here, it's because the previous request experienced an error. If you are the site owner, you can use the Translate Error String tool to investigate this further. This is located on the control center under:
Hamburger menu > SUPPOR T > Edge Diagnostics.