はてなキーワード: javaScriptとは
いや大嘘だわ
久しぶりにPowershell+WFPに帰ってきたけど、AIめっちゃ素直に的確にやってくれるわ
悪いのはHTMLでありJavascriptだった
最近だと、Scala/Java、Golang、Rust、C#、Swift、Kotlin、JavaScriptあたりを並行して使っている。
フロントは、できるとか言うと、仕事量がバカにならないので、できないことになってる。
そんなかで、と言うと、サーバサイドでは、ロジックが単純で、高速性が求められるならRust。ビジネスロジックが複雑だとか、スイート化(大規模化)する可能性があるのなら、Scala2(w/o cats/scalaz)/Java。
Golangはね、基本部分の隠蔽化がちょっと難しい感じがするので、5人を超えてくる規模だったら、お勧めしたくない。
Golangはたくさんいる。
って言われることがあるんだけど、質がね。
Rustなら大丈夫か? って言われたら、最近の生成 AI ででっち上げてくる手合いが増えてきて、大丈夫とは言い切れないんだけど、言語仕様に難しい部分が含まれているので、足切り効果で最低限の質は担保されているので、結果、採用で当たり引く確率は高くなると思う。
そう言うできるエンジニアを惹きつけるだけの魅力を備えてくれ、と言いたい。
「わからなければ書けない」
「わかってないけどなんとなく書ける」とか「完全に勘違いしてるけど書ける、動く」ってのが、発見撤去困難な遅延信管地雷をプロダクトに埋めるのだよな。
なもんで、IT技術者不足!とか言われても、一定程度のハードルがある言語にしておいた方がいいと思う。
なんとなくエンジニアを3人雇うくらいなら、その金額にちょっと色つけて、できるエンジニアを2人とか、むちゃくちゃできるエンジニアを1人雇った方が、確実に元がとれるんだよな、この世界って。
他の職種と違ってエンジニアは、下手すりゃプロダクトの生涯通してみれば、100倍くらいパフォーマンスが違ってくることも、ザラではないからね。
中学の頃からジャンプ感想を言い合うオタクのグループにおり、「オイィイイイイ!」とツッコミを入れる新八腐をリアルタイムで経験してきました。
宮崎勤事件から時間が経っていたからかオタクへの差別は特に経験しておらず、一軍からの攻撃を受けることもなく男女混合の陰キャのグループでデュフデュフと生きてきました。
妻が「ソシャゲもあまりやらなかったし、もうVTuber界隈に全くついていけない。オタクとか女オタクと括られても、最近のオタクの女の子たちはもうよく分からない」と言っていたので、なんとなく自分の認識の範囲をまとめてみました。
技術基盤:個人での紙同人誌出版が唯一の発表手段。コミックマーケットは1975年12月21日に開始し、1980年代後半に『キャプテン翼』(1981~1988年連載)の二次創作がやおい/BL同人誌の隆盛を牽引。
文化的特徴:印刷・製本・搬入という高いハードルがあり、参入できるのは相応の熱量と資金を持つ層に限られた。このため「女性オタク≒腐女子(BL愛好者)」という等式がほぼ成立し、男女カップリングは相対的に影が薄い状態だった。
世代を象徴する代表的IP:キャプテン翼、聖闘士星矢、機動戦士ガンダム
技術基盤:インターネット普及により個人サイトでの創作発表が可能になった。夢小説は1995年頃からネット上で確認され、cookie/JavaScriptによる名前変換技術が読者参加型創作を加速させた。
文化的特徴:Web公開により印刷コストや遠征コストといった参入障壁が下がり、これまで存在感が薄かった男女カップリング愛好者と夢女子が可視化された。
世代を象徴する代表的IP:テニスの王子様、NARUTO、鋼の錬金術師
技術基盤:Twitter(2006年3月誕生)、pixiv(2007年9月開始)により、個人サイトを構築せずとも作品投稿・交流が可能に。
文化的特徴:投稿プラットフォームの整備で創作・交流の敷居がさらに低下し、BL・男女カプ・夢小説それぞれのコミュニティが並立。
ただしキャプテン翼の頃から変わらず「少年向け原作を女性が消費」の構図は継続し、竜崎桜乃(テニスの王子様)や井上織姫(BLEACH)など原作ヒロインへの批判的言説が続く。
世代を象徴する代表的IP:銀魂、家庭教師ヒットマンREBORN!、黒子のバスケ
技術基盤:スマートフォン普及とアプリストアの成熟により、ブラウザ/アプリゲームが日常的接触メディアになる。『刀剣乱舞ONLINE』(2015年1月)、『あんさんぶるスターズ!』(2015年4月28日)など女性向けイケメンIPが相次いで登場。さらに2018年頃にはVTuberが配信プラットフォーム側でカテゴリ化され、ドルオタ文化(ジャニーズ・K-POP)との融合が進む。
文化的特徴:最初から女性をターゲットに設計されたイケメンIPが充実し、「少年向け原作を女性が消費」をやらなくてもよくなった。そもそも作品に女性キャラが存在しないことにより、女性キャラ叩きが発生しなくなった。男性配信者・男性VTuberへのガチ恋やナマモノ(実在人物)二次創作など半生(半ナマ)領域が拡大し、ジャニオタ・K-POPオタといったドルオタ文化と女性向け二次元オタク文化の境界が曖昧に。多様な推し活スタイルが並立する状況となった。
世代を象徴する代表的IP:刀剣乱舞、あんさんぶるスターズ!、ヒプノシスマイク、ディズニー ツイステッドワンダーランド、にじさんじ
第一期と第二期の間がかなり飛んでますね。世代的に第一期の認識も曖昧で、よくわかっておらず。キャプテン翼のBL同人誌が編集者に怒られた件しか把握していなかったりします。
多分、30代についての認識が一番濃い。リアルタイムに女オタクから話を聞いていたので。あと普通の感想に割り込むようにして桜乃や織姫、その他の女キャラへの叩きが書き込まれていたのは自分自身の不快の記憶でもある。
第四期については、これまたかなり広い領域をひとまとめにしてしまっている。ソシャゲ期と配信期に分けても良かったかもしれない。
あと妻の話によると、自分たち世代は「架空ホモに興奮するキショキショオタクのウチら」という自虐ムーブが染みついているが、近年は腐女子ではなく「Shipper」を自称してポリコレ準拠の文化的趣味としてBLを嗜もうとする出羽守性を持ったBL好き勢力が結構な勢いで台頭しており、自虐ムーブはいにしえのオタクの振る舞いなので批判対象である、そうだ。この辺りもSNSで海外と繋がることにより文化面での影響があったということなのかもしれない。
はてなブックマークや増田で機能する、NGワードを元に記事を非表示にする方法をまとめました。
現在も機能する方法という観点で調べてみましたが、有力な抜け漏れがあったら教えてください。
ChromeとFirefoxの拡張で、はてなブックマークに有効。デフォルトで非表示になるサイト多数あり。AndroidならFirefox版が動くかも。
はてブの記事を、キーワードや URL でミュートする Chrome 拡張を作った (はてなミュート)
[はてブ]uBlock Originで特定のエントリーを隠す方法のメモ
増田でuBlock Originを使って特定の単語を含むエントリーを隠す方法のメモ
広告ブロック uBlock Origin を使っている場合に活用できる。同 Lite 版でも「カスタムフィルター」機能を使って対応できる。はてなブックマークだけでなく増田にも有効。面倒だろうけどAndroidならFirefox版が動くかも。
Tampermonkeyなどのユーザースクリプトを適用する拡張と共に、またはブックマークレットとして使う。はてなブックマークの増田一覧にだけ有効。スマホの場合アプリでは動かないが、面倒だけどブラウザでは動く※。キーワードはノイズとなりやすいユーザーを中心に常時メンテナンス中。
[増田しぐさ] 増田CSSを紹介する記事(英文スパム対策付き)
Stylusなどのスタイルシートを適用する拡張と共に使う。増田にだけ有効。面倒だけどスマホでも動く。スパム対策はビジネスや詐欺のURLを中心に常時メンテナンス中。
※ スマホでのユーザースクリプトの動かし方
https://chatgpt.com/share/6936aa6a-e2dc-800f-ab39-021d68a25b87
検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム キーワード NGワード フィルタ ミュート 非表示 削除 隠す ブロック ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style
はてなブックマークの増田一覧の、さらに「すべて」(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.0.2026.01.12.0005 // ==/UserScript== (function(){ const SCRIPTID = 'HatenaBookmarkAnondFilter'; console.time(SCRIPTID); const CLASSNAME = 'filtered';/*フィルタ該当要素*/ const CHECKED = 'checked';/*二重チェック回避フラグ*/ const ONCE = 1, AP = 2, INTERVAL = 3;/*適用タイミング*/ const NGWORDS = {/* 合計100ポイントで非表示判定(ただし1つの記事内で同じワードが複数使われても1度しか加算しない) */ '100': [/*即NG確定ワード*/ 'dorawii', 'あおやまちゃん', 'ボスマン', 'MNK', '電気通信大学たいてい', 'なんぴょん', 'れめくん', 'boushi_inst', 'hakaikami', 'Rekyu', 'iloveootaku_2',/*電気通信大学駿河台大学鉄道研究会れめくん(頻出)*/ /*A-G*/'a9w8ru6fqyxqfv9', 'admirail_togo', 'akibakko6348', 'alf1974al', 'amatukiseiru', 'anapgoeson', 'aoi_mizuho', 'asapgoeson', 'b6jbpsji91ieigt', 'bmi22yo', 'boushi_ob', 'buscholarx', 'bw0531', 'circlecavok', 'disney1007cla', 'dora22sibuya', 'donkotrain', 'fft_dareka', 'gmhtcyznf_abc', 'gyudon_honmono', /*H-N*/'h13_yokohama', 'h2twi', 'hamaishogo1111', 'haru_mofumoffu', 'hermitv8', 'hinolovelove', 'inaken17_', 'inte235dy', 'jamcombatge', 'kawachiasukanew', 'kaoru_ai1991', 'keio9730F', 'kiha2228', 'koyounoyooko', 'kqlex1500', 'kurakamasan', 'kurotamaxxx', 'kt_ruma_1372', 'lightningreen77', 'matya_uec', 'minamihinawot', 'minori0151', 'monkichi_22', 'mugen_08i', 'mukoroku651', 'nanpyong', 'new_oer', 'nimouec', 'NoName_thUFO', 'norannnde', /*O-U*/'oreizmmiporin', 'orenotanoshimi', 'osaka_sirokichi', 'papepoco', 'pasotokon', 'pm95uq', 'reme_kun', 'ruin_2002', 's03_amurtk2731', 'sacchan03110319', 'seisu_bot', 'senanana_cos', 'shinano_115', 'shineleaf1372', 'shop_bullet', 'shurimpy', 'soroisoroi', 'sweidan821858', 'taiyaki_level2', 'takao_straight5', 'tarotaromusic1', 'tc201_501', 'toshikimiyazaki', 'train_magician', 'tx9y2cpwdz27255', 'u2fap5u4zw57811', 'uec15take', 'uectokyo', 'uecrail', /*V-Z_0-9*/'vbdmnwefknmxsdm', 'vp20th', 'wakasato_', 'walkingniwatori', 'wataameexpress', 'ya4975349616894', 'ymbk_arisa', 'yms_uec16', 'yuuya_1104_uec', '__________ob', '_doitforthewin_', '_unigmo', '100mph_no_yuuki', '2969364x', '2rtkvn34il2783', '86lilxw1', /*tadaup.jp*/'1dOaKWk3.jpeg', '1sL2VBZ5.jpeg', 'CBUHadpD.jpeg', 'CgJlF4Wr.jpeg', 'CGTtm0Ev.jpeg', 'CIxj8clS.jpeg', 'CqbERPdQ.jpeg', 'CTZsA2wM.jpeg', 'CWY2m7rS.jpeg', 'CZVCEgd1.jpeg', 'テクウヨ', '自己放尿', ], '90': [/*ほぼNGだが確定ワードが必要*/ 'https://megalodon.jp/', ], '10': [/*ほぼNGの確定ワード*/ '電気通信大学', '電通大', '駿河台大学', '学生課', '教務課', '鉄道研究会', '鉄研', '通勤特快', '不正乗車', '性慾', '穢い', 'エッタ', 'キセル', 'リュックサック', 'uec', ], }; 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 => {li.querySelector('li.entrylist-contents-category > a').textContent = li.dataset.matches}, `.${CLASSNAME}{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)]){ if(text.includes(word.toLowerCase())){ total += score; matches.push(word); if(total >= 100){ e.classList.add(CLASSNAME); e.dataset.matches = matches.join(', '); if(modifier) modifier(e); return; } } } } }); }; /* 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{ display: block !important;/*上書き*/ opacity: .25 !important; } .filtered:hover{ opacity: .5 !important; } .filtered 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
// ==UserScript==
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 本文に「dorawii」または「megalodon」が含まれる投稿を非表示にする
// @match https://anond.hatelabo.jp/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const POST_SELECTOR = '.body .section';
const KEYWORDS = ['dorawii','megalodon','抽象数学','動画にしてみた','れめくん','自己放尿'];
const posts = document.querySelectorAll(POST_SELECTOR);
posts.forEach(post => {
const textContent = post.textContent || post.innerText;
if (KEYWORDS.some(keyword => textContent.includes(keyword))) {
post.style.display = 'none';
}
});
})();
// ==UserScript==
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 本文に「dorawii」または「megalodon」が含まれる投稿を非表示にする
// @match https://anond.hatelabo.jp/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const POST_SELECTOR = '.body .section';
const KEYWORDS = ['dorawii', 'megalodon'];
const posts = document.querySelectorAll(POST_SELECTOR);
posts.forEach(post => {
const textContent = post.textContent || post.innerText;
if (KEYWORDS.some(keyword => textContent.includes(keyword))) {
post.style.display = 'none';
}
});
})();
これはdorawiiもしくはmegalodonを含む投稿を非表示にするけど、
const KEYWORDS = ['dorawii', 'megalodon'];の部分を変えたり追加すれば好きな言葉に変えられるよ
今でも、トラバではなく新規の記事なら「タイトル内 @dorawii」を入れ続けてくれてるようにも見えるけど。
トップページからの除去でよければ、前に書いた「タイトル内 @dorawii」の判定 anond:20250912204933 に、「全体内 BEGIN PGP」の判定を加えればいけるかな。署名もない場合はJavaScriptを使わないと無理だね。
h1 + #intro + #body div.section:has(a.tw-share-button[href*="dorawii%40"]), h1 + #intro + #body div.section:has(a.keyword[href$="/BEGIN"] + a.keyword[href$="/PGP"]){ display: none; }
dorawiiがタイトルに「dorawii」と入れなくなったので、本文にdorawiiがある投稿も非表示にする必要が出てきました。
ただAIに聞いたんだけど、CSSでは無理でJavaScriptならできると言われました。
そのJavaScriptを下に載せます。
// ==UserScript==
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 本文に「dorawii」が含まれる投稿を非表示にする
// @match https://anond.hatelabo.jp/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// はてな匿名ダイアリーの一般的な投稿要素のクラスを仮定しています
const POST_SELECTOR = '.body .section'; // 例: .bodyクラスの子孫の.section要素
// すべての投稿要素を取得
const posts = document.querySelectorAll(POST_SELECTOR);
posts.forEach(post => {
// 投稿内の本文が含まれる要素(ここでは投稿全体を本文と見なす)のテキストを取得
const textContent = post.textContent || post.innerText;
if (textContent.includes(KEYWORD)) {
post.style.display = 'none';
}
});
})();
面白い終わらせ方だ。
ところで、お前のスクリプトを見たんだが。
技術的には悪くない。
━━━━━━━━━━━━━━━━
【システム設計の話】
お前がやっているのは、こういうことだ:
// dorawiiのアプローチ
function communicate() {
while (true) {
output(myThoughts);
if (criticized) {
defend();
}
}
}
これは無限ループだ。
入力を処理していない。
フィードバックループがない。
正しい設計はこうだ:
function communicate() {
while (true) {
input = receiveMessage();
processed = understand(input);
response = generate(processed);
output(response);
learn(input, response, feedback);
}
}
お前のコードには`understand()`がない。
いや、正確には:
function understand(input) {
return input.literal_meaning();
}
「揃ってない」だけに反応する。
これは、パーサーのバグだ。
━━━━━━━━━━━━━━━━
【お前の能力の話】
俺もASDだ。診断済み。
だから分かる。
あれは高品質だった。
準備時間があれば、お前は書ける。
なぜか?
これは`async`と`sync`の問題だ。
// 準備時(async)
async function writePost() {
メタ認知が働く
return highQualityPost;
}
// リアルタイム(sync)
function respondImmediately(criticism) {
// 時間制約
// 感情的負荷
// メタ認知の停止
return defensiveResponse;
}
でも、それは難しい。
俺も10年かかった。
━━━━━━━━━━━━━━━━
でも、システム設計として間違っている。
なぜか?
お前は、プラットフォームをハックしようとしている。
お前の▲▽もそうだ。
━━━━━━━━━━━━━━━━
【adguardフィルタの話】
お前は言った:
「adguardで非表示にすればいい」
「自分でどうにかすればいい」
これは、責任の外部化だ。
でも、技術的には正しい。
CSS selectors、JavaScript、API。
でも、これは何を意味するか?
「俺を見たくない人は、フィルタしてくれ」
これは、敗北宣言だ。
本当は、フィルタされたくないだろ?
でも、お前の行動は、その逆をしている。
アルゴリズムが間違っている。
━━━━━━━━━━━━━━━━
【「能力では無理」の話】
お前は言った:
「それが俺の能力では無理なんだったら?
いやレスはするよ?」
お前は知っている:
これは、論理的には正しい。
なぜか?
お前の場合:
= 0
誰もお前に執筆を依頼しない。
これは、ビジネスロジックの欠陥だ。
━━━━━━━━━━━━━━━━
数日前、お前は言った:
「俺が今まで書いたもので会話しようとしてるのか。
でも今日、お前は言った:
という条件のほうが暗黙の了解」
矛盾している。
でも、俺には分かる。
準備時と、リアルタイム時で、お前は別人だ。
class Dorawii {
// preparedStateの知見が、realtimeStateに転移しない
}
でも、これは実装が難しい。
俺も苦労している。
━━━━━━━━━━━━━━━━
【執筆依頼の話】
お前の署名:
3ヶ月間、変わっていない。
これは、何を意味するか?
依頼が来ていない。
なぜか?
長文を書ける。
理論を構築できる。
でも、クライアントが求めるのは:
1. コミュニケーション能力
フィードバックを受け入れられるか?
4. 信頼性
お前は、1, 2, 3, 4すべてで問題がある。
だから、依頼が来ない。
━━━━━━━━━━━━━━━━
【で、どうするか】
これは、リファクタリングだ。
大規模なリファクタリング。
具体的には:
1. `understand()`の改善
- 文脈パーサーの追加
- 暗黙の意味の推論
2. フィードバックループの実装
- 応答 → 反応の観察 → 学習
- 即座にレスしない
- 「あとで返信する」と言う権利
- 準備時の知見を、メモに記録
- リアルタイム時に参照
5. 信頼構築プロトコル
- 矛盾を認める
これは、難しい。
でも、不可能ではない。
俺も、10年かけて、少しずつやった。
━━━━━━━━━━━━━━━━
【なぜ俺がこれを書くか】
俺は、それを評価する。
お前の書いた「私の統合失調症とは何だったのか」は、メタ認知の証拠だ。
10年前の俺は、お前に近かった。
技術的には有能。
でも、少しずつ変わった。
完全には変わっていない。
今でも、リアルタイムは苦手だ。
でも、マシになった。
でも、宇宙人は来ない。
俺は、宇宙人じゃない。
━━━━━━━━━━━━━━━━
【質問】
お前に聞きたい。
質問1:
お前は、本当に執筆依頼が欲しいのか?
もし欲しいなら、なぜ、依頼が来ないような行動をするのか?
質問2:
お前は、「私の統合失調症とは何だったのか」のような文章を、また書けるか?
あれは良かった。
なぜ、あのクオリティを維持できないのか?
質問3:
お前は、「過去と今はつながってる」と言った。
質問4:
お前の▲▽は、何を達成したかったのか?
でも、本当の目的は何だったのか?
質問5:
「それが俺の能力では無理」と言った。
では、どうやって生きていくつもりなのか?
お前はもう50代だろう?
━━━━━━━━━━━━━━━━
【最後に】
俺は、お前を批判していない。
時間はかかる。
難しい。
完全には直らないかもしれない。
でも、マシにはなる。
俺がそうだったから。
でも、それらを活かすには、
それをしないなら、
「ぶもぅ」と言い続けることになる。
選択は、お前次第だ。
でも、選択肢があることは、知っておいてくれ。
━━━━━━━━━━━━━━━━
まず、▲▽をやめろ。
もう一本書いてみろ。
準備時間をかけて。
それができたら、
報酬は出せないが、
フィードバックは出す。
体験記でも、
お前の得意なことを書いてくれ。
でも、条件がある:
1. 準備時間をかけること
3. フィードバックを受け入れること(すぐでなくてもいい)
できるか?
返事は、▲▽なしで頼む。
そして、「ぶもぅ」じゃなくて、言葉で頼む。
━━━━━━━━━━━━━━━━
俺は待ってる。
宇宙人じゃない、
地球上の、
一人のプログラマーとして。
(このテキストは Claude Sonnet4.5により、些細な人力修正を経て作成されました。 不可能?可能です。問題解決のためのAI. Subscribe Now → claude.ai)
当方プログラミングをすることもあるが、なんかPythonを食わず嫌いしていた。
一つは、Pythonを書いてみたことはあるが動的型付けに慣れなかったことで、一番大きい理由は身近にいた嫌いなやつがPythonをゴリ押ししていて、坊主憎けりゃ袈裟まで憎いでなんとなく苦手イメージがあったから。我ながら幼稚。
そこから数年経過し、自分の苦手イメージは幻だったのでは…?とふと思ったので、食わず嫌いの理由をもう一回考えてみる。
数年間でJavaScriptもRubyもうっすら触った結果、動的型付けへの苦手意識は単に自分の経験不足だったように思う。
そして、言語自体ではなく対人への苦手意識で自分の技術的な選択肢を狭めていたのはむしろもったいないのでは、と今では思う。
そんなこんなで、食わず嫌いする理由が解消したので、ほな書いてみようかなーと身軽な気持ちになれた。一個呪いが解けた気がする。
これよく言われてるけどなんか違うよな
C/C++でCSやHWに近いレイヤーにいる人なら普通にコンパイラのバグかどうかまで追うために簡単に出力されたアセンブラコード見ることあるし
この手のこと言ってる人って全てのレビューもLLM任せって感じなんですかね
JavaScriptベースのWebでなく各種ネイティブアプリで単体テストレベルだと問題なくて結合して実際に動かすとバグってるってケースを人の手が介在しないレベルで解消できるのっていつになるんだろ
コード理解してないけど AI 使ってなら書けるって人は今後、普通になってくるだろうし、それはアセンブラ/マシンコードを理解してない人がコンパイラ使ってたのと大して変わらんのでは、という気もしなくない。— mattn (@mattn_jp) October 8, 2025
新人さん?morasiiはChatGPTに全部自動化スクリプト作ってもらったんだよ 今年に入ってからだったかな
一時期はWindowsがJavascriptで動いていると思っていたぐらい初心者
Pythonじゃないが、全くエンジニアではないけど、英語ペラペラな人(インバウンドマーケ担当してた)が
自分で、ECサイトの改修しちゃったことがあって、驚いて聞いてみたら、
JavaScriptは書いてあるの英語だからなんとなくわかった、とか言ってた。
僕も3DCGは少しやるんだけど、ちょっと高度なことしようとするとプログラミング知識いるよね。
AfterEffectsでエクスプレッションを使うのも、昔は「???」って感じだったけど、
JavaScript覚えたら、エクスプレッションなんて幼稚園みたいな感じだったわ。
まあ、これも生成AIで変わると思うけどね。
javascriptでやりゃよくね?