はてなキーワード: 誤検知とは
Liveをひっくり返すとevilになるけど、これは偶然だよね?
7:07 PM
Claude responded:
はい、これは偶然の一致です!
英語の綴りの話で言うと、live を逆から読むと evil になるのは確かに面白いですが、語源的には全く関係がありません。
live は古英語の libban/lifian(生きる)が起源
まったく別の語源を持つ言葉が、たまたま逆読みで一致しただけです。こういった現象は semordnilap(パリンドロームの逆読み)と呼ばれることもあります。ちなみに "semordnilap" 自体が "palindromes" を逆から綴った言葉というメタなオマージュになっています。
stressed ↔ desserts
dog ↔ god
人間はパターンや意味を見出そうとする傾向があるので、こういった偶然の一致がとても印象的に感じられるんですよね。
You said:
ああ、人間の脳みその習性か。パターンを見つけようとする習性。
7:09 PM
Claude responded:
そうです!その習性には アポフェニア(apophenia)とか パレイドリア(pareidolia)という名前がついています。
アポフェニア → 無関係なものの間にパターンや繋がりを見出す傾向全般
パレイドリア → 特に視覚的なもので、雲に顔を見たり、トーストにイエスを見たりするやつ
これは脳の「バグ」というより、進化的には**サバンナで生き延びるための「機能」**だったと考えられています。草むらの揺れをライオンだと思って逃げる → 実はただの風でも損失は小さい。でも見逃したら死ぬ。だから「パターンを過検出する」方向に進化した、という話ですね。
live → evil の発見も、その脳の働きが言語に向いた結果とも言えます。面白いですよね。
You said:
そうだね。サバンナにあるのがダイコンだと思って、近づいたらライオンだったらまずいよね。
Claude responded:
まさに!笑 それが「偽陰性(見逃し)のコストが偽陽性(誤検知)のコストより圧倒的に高い」という状況ですよね。
ダイコンをライオンと思って逃げる → ちょっと恥ずかしいだけ
だから脳は「とりあえず怖いものとして反応しておく」方向に強くバイアスがかかっています。
現代でも同じ回路が働いていて、例えば暗い夜道で木の影を人に見間違えてドキッとするのも同じメカニズムです。サバンナではなくなったのに、ハードウェアはそのままアップデートされずに残っている、という感じで。
以前大人がスマホの使用ルールに無頓着なのではないかという記事を書いたが、先日のYahoo!ニュースで裸の画像「ばらまく」と脅し金銭要求する「セクストーション」詐欺の標的になるリスク"世界1位の日本"納得の理由、子どもを守るためにできることという記事が話題になっていた (はてなブックマークではそこまで話題にはなっていないが) 。
そこで、あまり知られていないかもしれない、セクストーションや自画撮り被害 (セクスティング) といった被害を発生させる前に防ぐ設定を紹介したい。もしこどもがいて、この機能をしらなかったというならぜひ設定してほしい。
iPhoneやTONEオリジナル機種は被害防止に意欲的で、標準機能だけで設定ができる。iPhoneの場合は撮影と本体に保存はできるが、送信の段階で防止、TONEオリジナル機種はそもそも撮影の段階で防止と、防止するタイミングがことなる。いずれにせよこれらの機種ならほぼ確実に送信してしまう心配がなくなるので、こどもが使用している機種がこのどちらかなら、ぜひ設定してほしい。ほんとうなら各携帯キャリアが標準搭載するべき機能なのだが...。身内被害 (同級生など) もふえているようなので、キャリア公式機能でできるSNS自体の使用制限だけでは確実な防止ができない。
"設定" → "スクリーンタイム" → "コミュニケーションの安全性" をオンにする。
これをオンにすることで、表示もしくは送信しようとしたときに警告が表示され、信頼できる大人 (13歳未満は保護者) にメッセージを送信、助けを求める方法を表示、連絡先をブロックという選択肢から選択することができる。
Appleはプライバシーを最優先にした設計になっているため、自動的に通知する機能はない。ただし、iOS 18以降で13歳未満の場合、警告表示がまず保護者に相談することをおすすめする内容になるほか、警告を無視して送信しようとするとスクリーンタイムパスコードの入力が必要になるため、13歳未満が親に気づかれずに送信してしまうということは起こらない。
そして、"設定" → "スクリーンタイム" → "デバイス間で共有" をオンにしておくと、こどもが所有しているすべてのiPhone (iPadやMac含む) に設定内容が反映されるようになるほか、保護者のiPhoneから遠隔で設定を変更することもできるようになる。
ちなみに、おとな用の設定もある。"設定" → "プライバシーとセキュリティ" → "センシティブな内容の警告" がそれ。コミュニケーションの安全性 (こども用の設定) との違いは、送信時に警告が表示されるか (センシティブな内容の警告は受信時のみ) 、信頼できる大人に相談の選択肢が表示されるか (助けを求める方法はどちらでも表示される) 、他社製アプリに適用されるか、の3点である。Xのセンシティブ警告に似たものと考えるとよい。
"TONEカメラ" で使用できる。TONEオリジナル機種は持っていないため具体的な手順説明でなくて申し訳ない。
まず、"Oneファミリー" / "TONEファミリー" で標準のカメラを無効にする。
つぎに、TONEカメラの設定で、判定レベルと保護者にに自動通知するかどうかを選択する。
判定レベルは初期設定は高だが水着だったりそもそもふつうに服を着ている状態で誤検知してしまい困る場合は、中に設定できる。中はiPhoneと同等レベル。
保護者に自動通知は有料オプションを契約している人のみ使用できる (親子ともにキャリアがTONEなら無料) 。
この設定をすると、シャッターボタンを押したとき "不適切な内容のため撮影できません。" と表示されて、保存されない。
また、各種アプリについているカメラ機能で撮影しようとすると、"TONEカメラをご利用ください" と表示される。これはほかの機種では絶対できない。
デフォルト状態ではGoogle メッセージ (キャリアに属していない機種でのデフォルトのSMS) のみ適用されるが、日本やアメリカはiOSが一般に普及していることからLINEなど他社アプリをインストールしているケースがおおいことや、とくに日本ではキャリアの機種はGoogle メッセージの代わりに (auではいっしょに) +メッセージ (ドコモ・au・ソフトバンクでのデフォルトのSMS) がインストールされていることから、効果は期待できない。Androidが広く普及している国ならありなんだろう。ちなみに設定するなら、 "設定" → "Google" → "センシティブなコンテンツの警告" で設定する。表示されない機種は、"設定" → "セキュリティ" でセキュリティ アップデートとGoogle Play システム アップデートの2つを最新の状態にしたうえで、Play ストアからGoogle メッセージを更新、さらに "設定" → "Google" → "システム サービス" で "Google Play 開発者サービス" と "Android System SafetyCore" の2つを更新すると表示されることがある。
上記2機種とはことなり完全な対策はむずかしいが (キャリア側が対策すべきなのだが、おすすめは "コドマモ" をインストールして使用すること。
愛知県警と藤田医科大学の共同開発で、愛知県警が提供していたころは無料だったが、民間に移管して有料化された。ただし無料時代から使用していたユーザーは有料限定機能をのぞいてそのまま使用できる。また、auの "U12バリュープラン" に契約している場合も無料。
撮影すると、警告を表示して画像の早急な削除をうながす仕組みになっている。iOS版はしかたないところもあるが、Androidならシステム権限をつかってどうにでもできたような気がするのだが...。さらに、ビデオ通話も対策できない。(通話ではなくビデオ撮影については検討中とのこと)
初版ははだかの写真のみ検知対象だったが、ユーザーのご意見により検知が厳しくなったとのこと。ただしTONEとはことなりレベルの調整ができず、学習精度が向上するまでは温かくみまもっていただいて、どうしてもお困りの場合は保護者に制限を解除してもらうようにご依頼ください (App Storeのレビューより) と、それはどうなのかと思うが...。
なお、みまもりアプリとしては唯一LINEの監視に対応していて、性犯罪の兆候をAIで検知して保護者に通知するということもできる。また、キャリアとも端末メーカーとも (上記割引サービス以外) 無関係なアプリなので、MVNOで親がAndroid、子がiOSという場合でも使用できる。
iPhone・TONEオリジナル機種以外をつかっているなら、警察庁ウェブサイトに公開されている啓発資料を定期的 (とくに長期休暇前) に読みあわせたほうがいいだろう。
はてなブックマークの増田一覧の、さらに「すべて」(1 user)をチェックしている希有な人向けのユーザースクリプトを公開します。
https://b.hatena.ne.jp/site/anond.hatelabo.jp/?sort=eid
// ==UserScript== // @name Hatena Bookmark Anond Filter // @namespace https://b.hatena.ne.jp/site/anond.hatelabo.jp/ // @description はてなブックマークの『はてな匿名ダイアリー』の記事のうち、指定したNGワードが含まれる投稿を非表示にします。 // @match https://b.hatena.ne.jp/site/anond.hatelabo.jp/* // @grant none // @version 2.1.2026.04.29.0027 // ==/UserScript== /* 2.1.2026.03.25.0023 正規表現に対応。10 users 以上の人気記事を除外判定。 2.0.2026.01.28.0015 ポイント制を導入。 1.0.2025.12.09.0000 公開。 **/ (function(){ const SCRIPTID = 'HatenaBookmarkAnondFilter'; console.time(SCRIPTID); const FILTERED = 'filtered';/* フィルタ該当要素クラス */ const CHECKED = 'checked';/* 二重チェック回避フラグ */ const USERS = 10;/* 人気記事なら誤検知やスパム解説などの可能性があるので除外する */ const POPULAR = 'popular';/* 人気記事クラス */ const ONCE = 1, AP = 2, INTERVAL = 3;/* 適用タイミング */ const NGWORDS = {/* 合計100ポイントで非表示判定(ただし1つの記事内で同じワードが複数使われても1度しか加算しない) */ '100': [/* 即NG確定ワード */ 'dorawii', 'あおやまちゃん', 'アオヤマチャン', 'ボスマン', '大学たいてい', 'なんぴょん', 'れめくん', 'れめきゅん', 'えめくん', 'るまさん', 'るまおねえちゃん', '眠りの民', 'リュックサック野郎', 'boushi_inst', 'hakaikami', 'Rekyu', 'iloveootaku_2', 'osaka-sirokichi',/* 電気通信大学たいてい鉄道研究会れめくん(頻出) */ /*A-G*/'a9w8ru6fqyxqfv9', 'admirail_togo', 'akibakko6348', 'alf1974al', 'amatukiseiru', 'anapgoeson', 'aoi_mizuho', 'asapgoeson', 'asupgo', 'asupgoeson', 'avoid_bds_kk', 'b6jbpsji91ieigt', 'bmi22yo', 'boushi_instrail', 'boushi_ob', 'buscholarx', 'bw0531', 'chihiro_love415', 'circlecavok', 'disney1007cla', 'dora22sibuya', 'donkotrain', 'ecotosk', 'electlone', 'factomodachi', 'fft_dareka', 'gmhtcyznf_abc', 'goesonanap', 'gyudon_honmono', /*H-N*/'h13_yokohama', 'h2twi', 'H2TWR', 'hamaishogo1111', 'haru_mofumoffu', 'hermitv8', 'hide1798038', 'hirabiscus', 'hinolovelove', 'hnmk0127_03', 'inaken17_', 'inte235dy', 'ixtabes', 'jamcombatge', 'kawachiasukanew', 'kaoru_ai1991', 'keio9730F', 'kiha2228', 'kihatena200', 'koreanlabsfc', 'koyounoyooko', 'kqlex1500', 'kunugiyamaosake', 'kurakamasan', 'kurotamaxxx', 'kt_ruma_1372', 'kt_up_date', 'lightningreen77', 'luckyyusha', 'mamadoll_kun', 'matya_uec', 'michee_n', 'minamihinawot', 'miniminicot', 'minori0151', 'mizunyanpanda', 'monkichi_22', 'mugen_08i', 'mukoroku651', 'nakano6409', 'nanpyong', 'new_oer', 'nimouec', 'NoName_thUFO', 'norannnde', /*O-U*/'oreizmmiporin', 'orenotanoshimi', 'osaka_sirokichi', 'papepoco', 'pasotokon', 'pm95uq', 'portrail', 'reme_kun', 'ruin_2002', 'rx00shiratama03', 's03_amurtk2731', 'sacchan03110319', 'sacchanenjoy', 'seishinyamate_', 'seisu_bot', 'senanana_cos', 'shinano_115', 'shineleaf1372', 'Shirasagi494', 'shop_bullet', 'shurimpy', 'soroisoroi', 'sui_pm95uq', 'sweidan821858', 'taiyaki_level2', 'takao_straight5', 'taking0000', 'tarotaromusic1', 'tc201_501', 'thomas_returnee', 'tocarbarn', 'tokusatsu_fan_0', 'toshikimiyazaki', 'train_magician', 'tx9y2cpwdz27255', 'u2fap5u4zw57811', 'uec15take', 'uecdaisuki', 'UECert', 'uecrail', /*V-Z_0-9*/'vampire_mio', 'vbdmnwefknmxsdm', 'vp20th', 'wafue', 'wakasato_', 'walkingniwatori', 'wataameexpress', 'ya4975349616894', 'yayoiulc', 'ymbk_arisa', 'yms_uec16', 'yorozun', 'yuuya_1104_uec', '__________ob', '_chocorail_', '_doitforthewin_', '_toeshin', '_unigmo', '100mph_no_yuuki', '16887y', '169_D51_protect', '205musashino', '2969364x', '2rtkvn34il2783', '36kyo', '86lilxw1', /(?!(.)\1{19,})(.{20,})\2{2}/,/* 20文字以上の文を3回以上繰り返す */ /(?!(.)\1{29,})(.{30,})\2{1}/,/* 30文字以上の文を2回以上繰り返す */ /(?!(.)\1{79,})(.{80,}).*\2/,/* 80文字以上の文が2回以上現れる */ 'テクウヨ', '自己放尿', ' ーーーーーーーー', 'https://anond.hatelabo.jp/20260107144223',/* AI問答貼り付け増田 */ '†噛み締めて行こうな†', 'https://anond.hatelabo.jp/20250826121213#', '困難女性(コンジョ)', '困難女性(コンジョ)', 'コンジョ自警団', 'Boost', 'Cash', 'Coin Master', 'Dice', 'Free', 'Gift', 'Guide', 'Follower', 'Generator',/*英文スパム*/ ], '90': [/* ほぼNG */ 'megalodon.jp', 'tadaup.jp', '鉄道研究会', '鉄研', '通勤特快', '不正乗車', 'こども料金', '性慾', '穢い', 'エッタ', 'オソソ', 'キセル', 'uec', ], '10': [/* NG */ '電気通信大学', '電通大', '駿河台大学', '武蔵野美術大学', '武蔵美', '大学院', '学生課', '教務課', '朝鮮', '統合失調症', ], }; const sites = { 'prefix': [ ['selector', '(modifier)', '(css)', '(REPEAT)'], ], 'https://b.hatena.ne.jp/site/anond.hatelabo.jp/': [ ['section.entrylist-unit li.js-keyboard-selectable-item', li => { if(parseInt(li.querySelector('span.entrylist-contents-users > a > span').textContent) > USERS) li.classList.add(POPULAR); else li.querySelector('li.entrylist-contents-category > a').textContent = li.dataset.matches; }, `.${FILTERED}:not(.${POPULAR}){display: none;}`, AP], ], }; const rules = sites[Object.keys(sites).find(prefix => location.href.startsWith(prefix))]; if(rules === undefined) return console.log(SCRIPTID, 'Not found any sites.'); const scores = Object.keys(NGWORDS).map(Number).reverse();/* 数値インデックス順に取り出されたkeysを逆順にして100から並べ直す */ const filter = function(selector, modifier){/* 各要素に対してNGワード判定して、該当したら追加でmodifierも適用する */ document.querySelectorAll(selector).forEach(e => { if(e.dataset[CHECKED]) return; e.dataset[CHECKED] = 'true'; const text = e.textContent.toLowerCase(); let total = 0, matches = []; for(const score of scores){ for(const word of NGWORDS[String(score)]){ switch(true){ case(typeof word === 'string' && text.includes(word.toLowerCase())): case(word instanceof RegExp && word.test(text)): total += score; matches.push(word); if(total >= 100){ e.classList.add(FILTERED); e.dataset.matches = matches.join(', '); if(modifier) modifier(e); return; } break; } } } }); }; /* ONCE(一括適用) */ rules.forEach(rule => { const [selector, modifier, css] = rule; console.log(SCRIPTID, 'ONCE:', selector); filter(selector, modifier); if(css){ const style = document.createElement('style'); style.dataset.script = SCRIPTID; style.type = 'text/css'; style.textContent = css; document.head.appendChild(style); } }); /* AP(AutoPagerize) */ rules.filter(rule => rule[3] === AP).forEach(rule => { const [selector, modifier] = rule; document.addEventListener('GM_AutoPagerizeNextPageLoaded', e => { console.log(SCRIPTID, 'AP:', selector); filter(selector, modifier); }); }); /* INTERVAL */ rules.filter(rule => rule[3] === INTERVAL).forEach(rule => { const [selector, modifier] = rule; setInterval(function(){ console.log(SCRIPTID, 'INTERVAL:', selector); filter(selector, modifier); }, 1000); }); console.timeEnd(SCRIPTID); })();
/* Hatena Bookmark Anond Filter */ .filtered:not(.popular){ display: block !important;/*上書き*/ opacity: .25 !important; } .filtered:not(.popular):hover{ opacity: .75 !important; } .filtered:not(.popular) li.entrylist-contents-category{ background: red !important; font-weight: bold; }
検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム 荒らし キーワード NGワード フィルター ミュート 非表示 削除 隠す ブロック 対策 ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style
おいヤク中イーロン・マスク。
お前らが好き好んで押しているその凍結というやつは、まさか論理的プロセスを経ていると本気で思っているのか?
あれはプロセスでも仕組みでも何でもない。ただの自己放尿みたいな誤検知アルゴリズムの飛沫だ。周囲に迷惑を撒き散らしながら本人だけが出してスッキリした気になっている、あの惨状そのまんまだ。
まず言うがな、俺のアカウントが凍結される理由がガイドライン違反とかいう曖昧なゴミ箱に放り込まれる時点で、論理的審査をしていないことは確定している。
なぜなら、違反が明示されないルールはルールではない自己放尿だからだ。
数学で「この定理は証明しないが正しいと思うので使う」とか言ってみろ。学生ならレポート0点、研究者なら職を失うレベルの自己放尿だ。
つまりだ、お前らの凍結プロセスは、理屈として自己放尿している。
破綻しているだけならまだマシだが、破綻したままユーザーを巻き込むのは無能の側だ。俺は無能の自己放尿は嫌いだ。そこを履き違えるな。
お前らのシステムがどれだけ因果関係の理解を欠き、入力の文脈を無視した自己放尿モデルで運用されているかという、冷徹な観察の結果にすぎん。
運営よ、もし本気でサービスを改善する意思があるなら、俺が提示する最初の一手はこれだ。
「凍結理由を明示できないなら凍結するな」
それを説明責任なしでやるというのは、数学者が「この証明は長いので省略します」と言って核心部分を全部削る自己放尿と同じ。
最後に覚えておけ。
俺は脅しもしないし、暴力も使わん。
だが論理と事実の積み上げは、暴力より残酷な結果を生むことがある。
お前らの運用体制が持つ矛盾を、逃げ場のないところまで照射してやる。
以上だ。
おう、Fraud detection 開発してるって? そりゃご立派だな。で、具体的にどんな開発してんだ? 口だけじゃねぇよな? ほら、質問浴びせるぞ。 答えられねぇなら詐欺師はお前だな?
答えられねぇなら、「Fraud detectionやってます」なんて二度と言うなよ?
エラー表示消去の操作しても、しばらくするとまた同じエラーコードが表示される。
でも、冷蔵室も冷凍室も野菜室も普通に冷えてて使用になんの支障もない。
ある日、それまでとは別のエラーコードが表示されるようになった。
このエラーも表示消去の操作しても、しばらくするとまた同じエラーコードが表示される。
まあ気にする必要ないだろ、とか思ってた。
冷凍庫が冷えてない?
別のエラーコードが表示された時点で完全にダメになってて、冷凍庫や冷蔵庫に入れてた物が保冷剤となって冷たい雰囲気が保たれてただけっぽい。
会社で、夜間に何かしらシステムアラートを検知すると当番に電話がかかってくる的なあれがある。昔は人がかけてきたんだけど、どこかのタイミングから自動コールになって、機械音声が流れるようになった。それがなんか、抑揚のない、いかにも機械音声って声なんである。まあ言ってくることなんて「アラートを検知しました。メールをご確認ください」くらいの定型文だから別にいいんだけど。
で、その日も電話が鳴って起こされた。夜中の3時くらい。眠い目をこすってパソコンを開けて、アラートメールを見ようとするが、特にメールは来ていない。おかしいな、メールの調子が悪いのだろうかと思って、監視システムの画面とかいろいろ見てたら、また電話が鳴った。アラート通知である。
アラートメールはやっぱり来てない。監視システム側も何かを検知した形跡はない。そういえば、アラート通知の電話で機械音声がしゃべる文言が、なんかいつもと違った気もする。文言なんて定型文だから、ろくに聞かずに切っちゃうんだけど、なんかちょっと違った気がする。
これはもしかしてあれかな。自動コールの業者がオペミスかなんかで、全然関係ないシステムのコール先を俺にしちゃってるんじゃないか。システムが違うから通知の文言も違う。そういうわけだ。無駄に起こされて気分も悪いし、本当のコール先に電話がいかないことで、その何かわからないシステムの障害がさらにひどいことになってるかもしれない。クレームを入れよう。
業者の連絡先を探していると、また電話が鳴った。アラート通知だ。今度はちゃんとメッセージを聞いてみよう。電話に出ると、いつもの抑揚のない機械音声がこう言った。
「いど の なか を のぞかないで ください」
なんだこれ。意味がわからない。気持ち悪い。背筋にひんやりしたものが走る。俺は電話を切って、そのままうちの会社の監視システム担当の人に鬼電する。担当の人は電話に出てくれて、自動コールの業者にクレームを入れてくれることになった。
結局、たしかにアラートは検知していないのだがコールした履歴は残っていたとのことで、誤検知でした申し訳ございませんでしたって話になった。ただ、通知の文言が変わってたってことはないはずで、監視システム担当の人にも寝ぼけてたんじゃないかって言われた。
その日はそれ以降、電話が来ることはなかった。その後も夜間アラートの当番が回ってくる日はあったけど、誤検知はなかったし、メッセージが変なこともなかった。だけど、俺は夜間アラートの電話に出るのがなんとなくきつくなってしまって、会社を辞めた。
あと、井戸を覗けなくなった。いや、現代日本に井戸なんてほとんどないからどうでもいいんだけど、古い神社とか城とかにたまにあるじゃないですか。あれに近づけなくなった。覗かないでくださいってだけ言われたけど、覗いたらどうなっちゃうんだろう。そう考え始めると怖くなって覗けない。
https://qiita.com/app_js/items/a78e0605af702b155efc
この記事読んだ。
Paizaの対応の良し悪しやこの人の考えや不満については今回は触れない。
一人のITエンジニア採用担当者、また同時に一人のITエンジニアとして生成系AIに対してどう触れるべきか書いておく。
まず、業務で生成系AIを利用するのは会社のルールの範囲で好きにやれば良いと思う。
問題は転職のフェーズであり、ここでは能力をチェックされているわけだから、生成系AIの回答でコーディングテスト通過です、となるわけがない。
ソフトウェア開発は複雑であり、AIは間違った回答や遠回りな回答もするわけだから、生成系AIを使うにしても結局真偽を確かめられる能力は必要だよね。
コーディングテストで生成系AIを使うというのは「私はそのような最低限の考える力も有りません」と言っているようなものなので、企業側がほしい人材とは言えない。
最近のコーディングテストサービスでは入力内容を記録しているのでコピペしたかどうかは分かる。
なので生成系AIで回答しているような場合は企業側はある程度検知できる。
もちろん誤検知もありえる。サービス(Web)上ではなくIDEなどで回答を作って貼り付けることもあるだろう。
そのため、企業はコーディングテスト通過後の面接で回答に対して深掘りすることが多い。
生成系AI回答で何も考えていない人はここで脱落する。
企業によってはコーディングテストサービスではなくホワイトボードなどでライブコーディングさせる場合もあり、そもそも生成系AIが使えないこともある。
「ウォーキング中ですか?」
と通知が来るので、
Apple Watchが探知した時点からの計測ログを取ってくれる。
ジョギングや自転車など、その時々でワークアウトの種類を自動的に分類してくれる。
わりと激しく菜箸を回していると突然、
「クリッケッケケーをプレイ中ですか?」
とApple Watchが通知してきた。
どうやら菜箸を動かす運動を何らかのスポーツと誤検知したようだ。
「クリッケッケケーってなんやんねん?」
Apple Watchには、
こちらが思っている以上に
こういうこともたまに起こる。
一見正しそうだが正しくないラベリングをすると、結果として意図しない結果を引き起こすことがある。
"難しい人"、"有害な振る舞い"というのは、大変よろしくないラベリングになる。
こういったときに「言ってることはわからなくないけど、なんか違うな」と違和感を持ち、解決策を探るのがエンジニアである。
アクションに落とし込めないもの、計測できないもの、機械的に判断できないものは、いわゆる人間力に頼ることになる。
具体的に以下を例に挙げる。(元の記事の一番最初に例示されているもの)
この短い(1行80文字以下を短いと言う)文章の中に、人間力に頼る判断は何か所あるだろうか?
私は、「創造的」「議論」「阻害」「時間を奪う」の4つは、機械的な判断が難しいと思う。
これは客観的な基準で「他者の話に割り込んで、自分の意見を差し込」んでいる。
先ほどの例だが、こんな前提があったとする。
そうすると、「営業と管理職から見て、大変有意義で創造的な議論に、毎度口をはさむ難しい組み込みエンジニア」というレッテルは正しいだろうか?
各人の判断は、正しいだろうか?
人間力に頼る判断基準で多数決を用いるのは、エンジニアリングで無く、政治的な解決だと思う。
先ほどの会議の例でいえば、5人中3人が心理的な負担を感じており、不愉快な気分になっている。
チームの60%が「創造的な議論を阻害する有害な振る舞い」だと認定している。
その判断は、正しいだろうか?
この場合、組み込みエンジニアが、難しい人 or 有害な振る舞いをする人として、指導もしく排除されたとする。
それは、心理的安全性をあげ、チームの生産性をあげる行為だろうか?
例えば、今後デザイナーは、営業と管理職が「どのような雑談をどの長さでしていても」発言しなくなるかもしれない。
デザイナーからみて、その会話が創造的な議論か判断ができないからだ。
さて、Web系のバックエンドエンジニアや、クラウドインフラエンジニアだと、アラートを設定したり、対応したいことがある。
「何かまずいことが起こっていることを、何らかの方法で監視して、対応したい」という場合だ。
例えば、待機系サーバーの起動時に妙に時間がかかっている場合、自動対応ができないので、アラートメールを飛ばして手動対応したいと思ったとする。
絶対値(10分)か、相対値(過去5回の起動時間の平均値)かは場合によるし、それが適切かはまた別の話だ。
「他者の話に割り込まない」というルールは、誤検知を引き起こしやすいアラートだ。
そんなのは常識で考えたらわかるだろう?曖昧な基準は「俺のは有意義な議論の発言だ」の判断を誰かが決めることになる。
大多数がそう思っていれば、という複合的な基準もありうる。その場合、先ほどの例の組み込みエンジニアは、アラート対象になる。
「会議のアジェンダに記載されている内容を3分以内で喋っている場合に、割り込まない」というのは、一つの基準になる。
この場合、営業が「営業概況を冒頭のアジェンダに加えて欲しい」と交渉する余地がある。
また「報告時間が10分は欲しいが、3回以上は一度会話を止めるので、営業概況に対する質問はその時に」という合意もできる。
そして、顔合わせのキックオフミーティングで、営業概況をやるかは、会社やチームによる。
明示的なルールで縛るのが正しいかと言えば、そうした方が良い職場もあるだろうが、窮屈な職場も多いだろう。
という簡単な話に見えることですら、ルールを作って守らせることに違和感を感じる感性も正しいと思う。
チーム(もしくはマネージャー)に求められるのは、こうした「何かチームに嫌な感じがある」ときに軌道修正できることだ。
一例でしかないが、例えば以下の流れでルールを作らずに、解決できることもある。
コミュニケーションコストを、チームを維持するのに必要なコストとして、きちんと時間を割けるかが重要だと思う。
さらに言えば、「それは有害な振る舞いだと自分は思うが、あなたがそう思わない理由は何か」とコミュニケーションを取れないのであれば、そこに課題があるだろう。
チームやマネージャーがある人を「難しい人だなあ」と思ったとして、2つの解決策が出てこないのなら、その思考には課題があるのではないか。
「他者に配慮できる」という曖昧な基準で異物を弾くようなチーム作りは、蛸壷化して致命的な結果を引き起こすことがある。
パワハラ、セクハラ、試験結果改ざんが、「なんでそんなんなるまで誰も言わなかったんだよ」となるのは、
「その構成員が他者に配慮できる人たちで構成されていて、異物を弾き続けた結果」であることが多い。
少なくとも、「エンジニアの”有害な振る舞い”への対処法」には、機会、動機、正当化のいわゆる不正のトライアングルのうち、動機と正当化を満たしている。
いやいや極端だろと思うだろう?
快不快が、正しい正しくないに繋がっていることは社会生活を送っていると極めて多い。
「マネージャーならば」法律や外部の意見も含めてかなり慎重に判断する必要がある。
「エンジニアならば」相手に快適に聞こえるようにコミュニケーションするスキルは磨いておいて損はない。
(あと、機械的に判断可能なルールを守ることが自分を守ることに繋がる。ルール順守か業績なら、常にルールを守れ。記録を軽視するな)