「正規表現」を含む日記 RSS

はてなキーワード: 正規表現とは

2026-03-18

AIのせいでIT介護が以前よりもひどくなってきた

ITエンジニア(以下非エンジニア)でもプロダクトが作れる良い時代になった。エンドユーザーエンジニア必要としない世界線は職を失うという恐怖はありつつも理にかなっていると思っている。

ただ非エンジニアは結局非エンジニアのままだと感じることが多々ある。「エンジニアリングはAIに変わられる」「プログラミングはAIで誰でもできる」そういう主張を社内で平然とぶつけてくる相手

「動かなくなった。AIに聞いたらこうだから治せ」と言ってくることがある。しかも1回や2回じゃない。「AIに変わられるなら自分で書けば?」とこちらも応戦してみるのだが「自分はわからない」と言う。

それなのに「AIで誰でもできる」と主張するのはやや相手職種に対してリスペクトなさすぎやしないかね、と思っている。まぁ治すんですけどね。


エラーを貼らずエラーを調べたAIの回答を貼ってくるのもやめてほしい。気遣いでやってくれてるのはわかるんだけど、エラーの原因や可能はいくつもあるので、AI結論を貼られてもわからないんだよね。

しかも恒久的対応をするか暫定対応をするかによって修正する場所も変わってくるし、AIが調べた結果が間違っていることも多々ある。


そして極めつけに「プロダクトのプロトタイプ作った」と言ってきて、「レビューしてくれ」と言うもんだから確認するとひどいったらありゃしない。

ちゃん設計してた当初のアーキテクチャはちぐはぐに、テキストハードコード正規表現で無理矢理書いたゴミ分岐、なんか知らんけど互換性を気にしてるのに互換性がないゴミコード、クレデンシャルはオープンに。

コード差分は数万。挙げ句の果てには「明日あさってリリースしたいんだよね。AI使えばできるでしょ」と。いやいいんだよ。そういうもんだよね。わかるわかる。

挙げ句の果てにそのコードなんと動かないしコンフリクトしてるんだ…。

「いやぁ流石にコンフリクト解消と動作確認くらいはAI使ってもいいので責任持ってやってほしいんですが」と言ったら「は?お前に営業できねぇだろ。こちとら営業しながらプロダクトも作ってお前らを手伝ってやってんだ。もっと感謝しろ」と。

ひえ〜〜。これが新手のIT介護かぁ〜〜〜〜。

ちょっと量が多くて時間がかかりそうです…」と伝えると「AIにSkillsを組ませてSkillsで見れば良いだろ」だとか「AIテスト生成してテスト通りに動くことを保証すればいいだろ」とか「ClaudeCodeのサブエージェント問題がなくなるまでオーケストレーションレビューし合わせればいいだろ」とか、そういうことを言われるんだよね。反論するも、そこそこそれっぽい回答をAIで身につけた浅い知恵を組み合わせてAIに作って返されてしまうので、いちいち事細かに説明しないといけなくてそれが本当にしんどい。

こちらがわからない単語は調べてくれるだろうと見越して、専門用語含めて細かく説明したのに、それをAIに要約させて「こういうことが言いたかったんだね」と専門用語簡単言葉に置き換わって要約された文章を貼り付けてきたりするんだよね。しかもその内容が圧縮されすぎて全く言いたい内容と違うんだけど、面倒くさいから「そうですそうです」と答える、みたいなのを3日に1回はやってる。やや精神がすり減る。

さらに、これ何が問題ってメンテ責任セキュリティ責任エンジニアなんだよね。「いやレビュー頼んだじゃん。ちゃんとやれよ」ってなるのは見えてる。実際に言われてるわけじゃ無いけど、レビューってそういう意味期待値としてあることを考えるのが自然だよね。

どういうわけかこの人達ってメンテセキュリティ解決はしてくれないんだよね。なんならアーキテクチャはぶっ壊しにくるからなぁ。マイナスなんだよね。それで問題が出たらこっちが治すと…。

これを介護と言わないなら何が介護になるんだ…。

新しいプロダクトバンバン作るの自分だってやりたいよぉ。さぞかし気持ちいいだろうな。

自分プログラミング始めたての時はそれが楽しいと思ってたもん。子供が散らかしたおもちゃの後片付けをする親の気持ちちょっとわかるよ。

いやそんな生ぬるくないな。モノ壊して捕まった子供の代わりに弁済を続ける親の気持ちのほうが表現としては適切かもしれないね

2026-02-21

anond:20260221134001

正規表現の本は、特にパソコンと並行して試すわけでもなく、一冊読み切ってすぐに試す予定があったわけでもなく、機会があるたびに血肉として役に立ったって印象があるなぁ。

2026-01-29

自然言語の指示をもとにシェルスクリプトを発行してくれるだけのAI需要あると思うんだ。text2shellとでもいうか。もうありそう。というかclaudeの内部に確かに存在してるんだよな。

あと正規表現も。text2regexという名ではないが、確かに行われている行為なんだよな。

ただ、Opus4.5使ってやるのは大げさすぎるんだよな。「このファイルから、こういう構造のここから文章とってきてリストして」だの「このディレクトリ内のファイルを、この規則リネームして」みたいなこと。

なんならLLMを介さなくても動きそう。枠をシェル正規表現限定するなら

2026-01-07

スパムが小賢しい。

今までのスパムIPアドレス逆引きできないやつを全部撥ねていたのだが、逆引きできるようにドメイン名を設定してくるようになった。

ドメイン名で弾くのはいたちごっこになるので避けたいのだが、

IPアドレス範囲規制をかけるとなると、メーラーではやりたくないなあ。

正規表現で書きたくない。

2025-12-09

はてなブックマーク増田一覧向けNGフィルタ

はてなブックマーク増田一覧の、さらに「すべて」(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

2025-11-09

お前は絶望的にプログラミングに向いてないから諦めて刺身タンポポ乗せる仕事でもやってろ

刺身タンポポ乗せる仕事ってきょうび言わねーな……。

プログラミングとは、勉強運動スマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である

近年ではパソコンスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単ディープラーニングもできるようになった。Unity3Dゲームバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペック暴力だぜ。

開発環境言語選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。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回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。

彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。

かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。

あれだ、算数文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。

こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。

もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。

今すぐプログラミングをやめろ

そろそろ本題に戻るか。お前らは絶望的にプログラミングに向いてないから今すぐ諦めて刺身タンポポ乗せる

2025-10-28

抽象数学とか超弦理論かについて

まず対象抽象化するために、物理系は局所演算子代数ネットワーク局所性を持つモノイド圏あるいは因子化代数)として扱う。

境界理論はある可換(または E_n)因子化代数 A を与え、これに対して状態空間は A の正値線型汎関数(GNS 構成で得られる正規表現の圏)として扱う。

重力バルク側は、境界因子化代数のコホモロジカル双対(例:Koszul 双対や因子化ホモロジーに基づくスペクトル拡張)としてモデル化される。

ホログラフィーは単なる同値性ではなく、境界のモノイド的データバルクの因子化代数データの間の高次圏的((∞,n)-圏)双対性であり、この双対性はホモトピー的拘束(同値空間)を保つ関手の同型として書ける。

これをより具体的に言えば、境界の C^*-あるいは von Neumann 代数の圏と、バルク対応する因子化代数局所的場代数を与える E_n-代数)の間に、Hochschild/cyclic ホモロジーと因子化ホモロジーを媒介にしたKoszul型双対存在すると仮定する。

境界から見た相互作用や散乱振幅は、境界因子化代数上の積(オペラド的構造)として表され、バルク幾何情報はそのホモロジー/コホモロジー符号化される。

エントロピーエンタングルメント幾何化は情報幾何学的メトリック還元される。すなわち、量子状態空間上の量子フィッシャー情報(量子Fisher・Bures距離)や相対エントロピーは、接続と計量を与えるテンソルと見なせる。

これにより、テンソルネットワークは単なる数値的近似ではなく、グラフからヒルベルト空間への忠実なモノイド的関手であるグラフの各節点に E_n-代数の有限次元表現を割り当て、辺は双対化(コアリフト)の演算子であり、ネットワーク全体は因子化代数状態和(state-sum)を与える。

MERA や PEPS、HaPPY コードは、この関手が持つ特定圧縮階層性(再帰的モノイド構造)を体現しており、cMERA はその連続極限である

テンソルネットワーク幾何を作るとは、エントロングルメント計量(情報計量)から接続リーマン性質再構成する手続き意味し、これが空間距離や曲率に対応するというのが it from qubits の数学的内容である

さら情報回復(Petz 復元写像など)や相対エントロピーのモノトニシティは、エントロングルメントウェッジ再構成圏論的条件(右随伴を持つ関手存在)として表現される。

すなわち、境界演算子代数からバルク因子化代数への埋め込みが完全に圏論的な復元子(adjoint)を持つときに、局所情報回復可能となる。

ER=EPR はこの文脈ホモトピー的コボルディズムとして読み替えられる。量子相互作用で結ばれた二系(高次圏の対象としての二点分割状態)は、バルクコボルディズム類(ワームホール的繋がり)に対応する同値類を持ち、局所ユニタリ変換による同値類がコボルディズムの同位類と一致するという予想的対応を述べる。

言い換えれば、局所ユニタリ同値で分類されるエンタングルメントコホモロジーは、バルクホモトピー的結合(位相的/幾何接続)を決定する。

ブラックホール熱力学性質は、トモイタ=タカサキ理論(Tomita–Takesaki modular theory)やコンネスの周期写像が関与する演算子代数のモジュラー流として自然に現れる。

特にブラックホール外部におけるモジュラーハミルトニアン境界状態の相対エントロピーに関連し、そのフローバルク時間発展に対応する(模擬的にはKMS状態と熱平衡)。

サブファクター理論ジョーンズ指数は、事象地平線をまたぐ情報部分代数埋め込みの指標として機能し、情報損失やプライバシー情報の遮蔽)は部分代数指数と絡み合う。

ブラックホールの微視的自由度カウントは、やはり境界因子化代数の適切な指数(譜的インデックス、K理論的量)に帰着する。

超弦理論的な追加自由度多様体のモジュライ空間や D-ブレーンの圏的記述)は、バルク側因子化代数の係数系(係数 E_n-代数やスペクトラル層)として取り込まれモチーフ的/導来スタック手法(derived stacks, spectral algebraic geometry)で整然と扱える。

これにより、弦の振る舞いは境界オペレータ代数の高次幾何学的変形(deformation theory)と同値的に記述されることが期待される。

この全体構造統一する言葉は高次圏的因子化双対である物理理論は、局所オペレータのモノイド圏、状態の圏、そして因子化ホモロジーを媒介にした双対関手から成り、テンソルネットワークはそれらの具体的表現=有限モデルとして働き、情報幾何学はそれらの間に滑らかな計量を与える。

したがって「it from qubits」は、局所的量子代数圏論的再配列が(情報計量を通じて)幾何学的構造を生み出すという主張に還元され、ER=EPRエンタングルメント同値類とバルクコボルディズム同位類を結ぶ高次圏的同型命題として再表現され、ブラックホール熱力学や弦の自由度はその圏論的・ホモトピー的不変量(ホッジ理論的/K理論指数、モジュラーデータ)として測られる。

これが、抽象化した観点から見た諸理論統一スキームである

anond:20251027192649

なんとかヒトだろう。

ヒロヒトとか、ヒサヒトとかみたいに名前にXXヒトと入るのが彼らの特徴。

正規表現で書くなら、[ア-ン][ア-ン]ヒト だ。

2025-10-16

正規表現フィルターで、「男」「女」この2つの単語非表示にするだけでだいぶ快適になる

2025-09-11

変なITエンジニアばかり出てくる夢を見た。

起きてから自分でもよく分からない気持ちになった。

思えば、自分も25年近くIT業界で生きてきた。

そろそろ卒業しようとしている矢先だった。

夢に出てくるエンジニアは、本当に「変」だった。

一見すると異常にも見えるコミュニケーション機械じみた自己管理無駄を極限まで削ぎ落とす妙な哲学。周囲からは煙たがられつつも、確実にシステムを回していた。あの人のような生き方に憧れたこともあったし、同時に絶対になりたくないとも感じた。

IT業界は変な人ばかりだと思った。

どこか皆、ちょっとずれているのだ。オフィスで昼飯時にLinuxカーネルバグを肴に盛り上がるやつ、Slackの通知音に過敏なやつ、パケットキャプチャ趣味のやつ、ROM焼きに命かけてるやつ。納期前の深夜のオフィス空気は独特だ。妙なテンション絶望と、根拠のない希望がぐるぐる回る。

自分にもそんな時期があった。

コーディング漬けの新卒時代、深夜に会社カップラーメンを啜りながら、先輩の叱責をポエムのように聞き流していた。バグバグを呼ぶプロダクト、人間関係のギスギスと、たまに奇跡のような成功体験が舞い込む。結局、最強のエンジニアとは変人であることを受け入れた奴だったんだと思う。

でも年齢を重ねて、変であることに疲れてきた。

あの頃なんであんコードの綺麗さにこだわっていたのか。なぜ誰も使わないCLIツールローカライズなんてやっていたのか。自分しか使っていないcronジョブ記述、美しい正規表現を夢見た夜。

IT卒業する今、思い出すのは、変さへの憧れと少しの羨ましさだ。きっと、変なことに全力を注げるやつこそがITを使いこなせたんだろう。自分は途中で他人の目を気にしてしまった。変なまま突っ走れる勇気が欲しかった。

変なITエンジニアの夢を見て、靄のかかったような気持ちになった。自分が過ごした時間が、他人から見れば奇妙な記憶だろう。でもその奇妙さこそが、IT業界風景の一部だった気がする。

たぶん、自分もどこかで誰かに「変なエンジニア」と呼ばれていたのだろう。笑い話になるかどうかは分からない。ただ、妙に優しい気持ちになった。これからは「普通」の世界で生きていく。だけど、あの変な夜更けや、無意味完璧コードと、愚直な情熱のことを、たまには思い出してみようと思う。

2025-08-19

dorawii@執筆依頼募集中

https://zenn.dev/ayumukob/articles/4626b193481e99

Javaの中堅エンジニアです。 DynamoDBが好き!

いや、正規表現のこんな基礎も今まで理解してなかった人間が中堅を自称するなんておこがましくないか?と思える。

中卒でも理解できること解説して中堅って名乗られても…はあレベルの低い中堅なんですねえとしか

https://bookmeter.com/users/1234180

↑この人ぐらい、まともな大学出てないと読みこなせないような専門書読み込んでやっと中堅か上級って言っても違和感ないってところじゃないの。

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250819174405# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKQ5WAAKCRBwMdsubs4+
SAxtAQD+nGdik3WhCXwLP88BX7X9kSuy18Gh4asR8DgFFxSsLAD/Xyt9NOtgxcvX
U1dL4t4mDH0ms01NJeY0GAyuX7OFpgQ=
=XSGh
-----END PGP SIGNATURE-----

2025-08-01

みんなさ、CSV構造(せめてCSV実態テキストだってこと)とか覚えた方が良くない?

エクセルのvlookup関数とか、

テキストエディタの矩形選択とか、

簡単正規表現とか。

まりにみんな効率悪い1行1行コピペしてデータ作るとか頭悪いの?って思う。

もっとみんなエクセルとかテキストエディタとか使えるようになった方が捗ると思わないの?

バカなの?

2025-07-23

anond:20250723165207

正直、正規表現、ある程度は書けるけど、わけがわからん

AIに処理させた方がいい典型例じゃないかなあ…。

anond:20250723154751

サッと見たけど、入れ子アスタリスク無限ループ組み合わせ爆発正規表現せいや

こんなの、どんな正規表現の本でも少しは触れられてる「あるある」だと思うんだけど

コピペだけでしか正規表現を扱ったことのないやつが書いたんやろなぁ

2025-07-21

昔のR-18小説を保存・整形するのにAIが使えなくて困るという話

先日のFC2ブログサービス停止など、諸々の旧来ホームページブログサービスの停止を見据えて

遥か昔から更新停止状態になってるお気に入りR-18WEB小説自分用としてアーカイブする作業を少しずつ始めている。

のだが、移動するに当たって改行位置などを整形したいんである

昔のWEB小説って解像度問題文章の途中で句読点とか関係なく強制改行されてたりするから

なのでChat-GPTに「1文のなかで改行されてるところは繋がてください」みたいな感じで投げてみたりしたんだけど

返ってきたのは、

「お前が投げたのはセンシティブから処理できません」

ってお言葉

いやさ、分からんでもないが、新規R-18文を生成してるわけじゃなくて、既存テキスト文においての改行整形しかこちらは望んでないんだから、それはやってくれよ〜てなった。

結局レガシーテキストエディタで正規表現で何回か通して処理してるんだけど、AIの便利さを知ったあとでは苦痛すぎる。

ローカルLLM使うってのもあるんだろうけど、わざわざこの為に導入するのもしんどいし。さっくり使えるのがWEBサービスのいいとこなのに。めんどくさい。

2025-07-01

電話番号書き込みで思い出した。

2chは昔から電話番号書き込みにうるさかった。

書き込みに対して、正規表現を使って電話番号を探して、電話番号を見つけたら、ひろゆきメールアドレスメールが届くようになっていた。

2003年前後廃止されたようだが。

2025-06-28

anond:20250628200253

コンパクト増田ってやたら推されてるけどそんなに高度なプログラムなのかな?

正規表現で条件分岐CSSいじって非表示にする程度のプログラムなら誰でも自作できるだろ?

それより高度な機能があるのか?

ついにスパム中華語が出るようになったか

スパムフィルターの正規表現どうすればいいんだろ🤔

2025-06-27

正規表現登録投稿非表示する自分専用Firefox拡張を作ったが、英語スパムに対しては、[a-z ]{11}だけ登録すればとりあえず足りる

ログイン ユーザー登録
ようこそ ゲスト さん