
はてなキーワード:JSとは
昔はA3ノビ対応とかいうデカいプリンタがあり、2DCADの印刷とか漫画原稿に重宝していたのだけど、
今の時代、プリンタ所有してる方がコストみたいに思うところもあって…
ときどき、ネットでなくて紙でやらなければならないことがあるのがめんどくさい…
下校時間だったので、近所の低偏差値高校からJKがいっぱい出てきて歩いてたんだけど、
おい!おまえ!パンツが見えるような姿勢をするな!というか、スカートをもっと長くしろ!これから寒いぞ!
おぢさんはJSに興味はあるけど、JKに興味はあんまりありません!
以下ChatGPT
自分のホームページ(自前ドメイン+自前HTML)を一度でも作って運用すると、SNS中心の“受け手”視点から、仕様・検索・配信・所有・継続の“作り手”視点に脳が切り替わる。結果、情報リテラシーは跳ね上がり、ネットのニュースや流行の見え方が根本から変わる——しかも想像以上に。
Before(作る前):Web=SNSのタイムライン。良し悪しは「バズってるか」「見やすいか」
After(作った後):Web=プロトコル+ブラウザ+HTML/CSS/JS+CDN+検索エンジン。
ページは**文書(Document)**であり、配置(IA)、意味づけ(セマンティクス)、配信(HTTP/HTTPS/HTTP/2/3)、キャッシュ戦略が気になりだす。
→ 同じ記事でも「タイトルの付け方」「hタグ構造」「画像最適化」「OGP」「サイトマップ」がまず目に入るようになる。
プラットフォーム依存の脆さを体感:規約変更やシャドウバンで露出が消える。
自サイトの資産化:ドメインに紐づくURLはリンクされ、検索に積み上がり、10年後も生きる。
POSSE(Publish (on your) Own Site, Syndicate Elsewhere):まず自分のサイトに出してから外部へ配信する習慣が身につく。
3. “好き/嫌い”から“なぜ速い・なぜ遅い”へ
CoreWeb Vitals(LCP/FID/CLS)や画像の遅延読み込み、フォント最適化の重要性が腹落ちする。
広告・計測タグの重さに過敏になる。読者体験を壊さないためのパフォーマンス予算という概念が生まれる。
キーワード選定は“流入ゲーム”ではなく読者の課題→コンテンツ設計に帰着。
内部リンク・パンくず・スキーマ(構造化データ)・サイトマップの意味が実務として理解できる。
“書けば伸びる”ではなく“検索意図を満たす設計が伸びる”に目が覚める。
alt、見出し階層、コントラスト比、キーボード操作、焦点管理など、見えない品質が最重要になる。
デザインは飾りではなく“読み・理解・操作”のためのユーティリティだと分かる。
たまたま当たる1記事より、更新の継続・アーカイブ性・RSSのほうが効くと実感。
コメント欄・メールフォーム・X連携よりも、ニュースレターやRSS購読者の質に価値を見出す。
ドメイン、DNS、証明書、バックアップ、法務(特商法・プライバシーポリシー)に“運用者の責任”が生まれる。
その重みが情報の信頼性を引き上げる(=他人のサイトの苦労も見えるようになる)。
トレンドは“輸入”ではなく選別になる。自分の歴史に合うものだけを採用して積層していける。
A. 最小HTML(雛形)
<meta charset="utf-8" />
<metaname="viewport" content="width=device-width,initial-scale=1" />
<title>あなたの名前 |ホーム</title>
<metaname="description" content="自分のホームページ。制作物・日記・メモを置いていきます。">
<link rel="alternate" type="application/rss+xml"title="RSS"href="/feed.xml">
<meta property="og:title" content="あなたの名前 |ホーム">
<meta property="og:description" content="自分のホームページ。制作物・日記・メモ。">
<meta property="og:type" content="website">
<nav>Home /About /Posts</nav>
<footer>© 2025あなたの名前</footer>
GitHubPages(Jekyll標準。Rubyベース、Node不要)
CloudflarePages(静的ファイルを置くだけで高速CDN)
レンタルサーバー(静的HTML+SFTP/rsyncで十分)
C.ドメインの基本
DNSはA/AAAA/CAA/TXT最低限、HTTPS必須(Let’s Encryptで無料化)。
D. “最低限の品質チェック”5点
ログを読む:SearchConsoleと簡易アクセスログで“本文よりメタ情報”を磨く。
アーカイブ主義:記事は追記で更新。URLは変えない。Versioningを意識。
dorawiiがタイトルに「dorawii」と入れなくなったので、本文にdorawiiがある投稿も非表示にする必要が出てきました。
ただAIに聞いたんだけど、CSSでは無理でJavaScriptならできると言われました。
そのJavaScriptを下に載せます。
// ==UserScript==
// @namespacehttp://tampermonkey.net/
// @version 0.1
// @description 本文に「dorawii」が含まれる投稿を非表示にする
// @matchhttps://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';
}
});
})();
自分はiPhoneなので、Makeoverというアプリを入れて、JSの部分に上のを貼り付けてます。
静的サイト生成
ほかにある?
MkDocs、UmiJS、Eleventy、SvelteKit、mdBook、Pelican、React Static、Zola、Fresh、Gridea、Gridsome、Metalsmith、Sapper.js, Honkit
https://b.hatena.ne.jp/entry/s/frantic.im/remix-3/
機能が存在すると "使い倒さないといけない" or "使い倒さないなら一流でない" と考える "謎の集団" が存在して、そういう声に流されてるからv18以降の機能追加に拒否反応を示してるんじゃないの
あるいは "ベストプラクティスは義務である" みたいな謎の強迫観念を持っているとか…
Next.jsを勧めるわけではない(自分は仕事ではNext.js、プライベートはRemixv2ユーザーである)が、Next.jsを使用した上でもv18以降の機能の使用はほぼ全てオプションだよ
ただ、Reactの開発がNext.jsに毒されていて本筋から外れている感じは否定しない
ここから来る害があるとしたら、非Next.jsユーザーからするとv18以降のReactは特に発展していないということだろう
静的サイトジェネレーター
Astro、Hugo、Docusaurus、Next.js、Gatsby、Jekyll、Nuxt.js、Hexo、Slate、GitBook、Docsify、VuePress
「フラッペとか言ってるようなやつだからな」みたいな、前の増田でスタバでフラッペ飲んだと書いてたことを明らかに踏まえたような馬鹿にしたトラバがついてそれに反論し続けて今に至る俺を馬鹿にする流れができてるから、お前らがいじるのは俺がフラッペと言ったことと関係あるのかって言ってるんだよ
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20251013191651# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaOzRlQAKCRBwMdsubs4+SI1VAPsF7Fqc4VhlxZ7Ug+0qyA131Y1hCSkwhG585kOpj8cFUgD/ZLYDHPq0XfVejs/VHA1jNfh62E8T50Loqd8TLYgTbgE==Q/B7-----ENDPGP SIGNATURE-----
この一言に尽きる。
ChatGPTの新機能「Apps in ChatGPT」が登場した瞬間、フロントエンドという職種の地盤は音を立てて崩れた。
これまでは、Webアプリやサービスは「フロントエンドでUIを作り、バックエンドでデータを返す」
という分業構造の上に成り立っていた。
だがApps in ChatGPTは、その構造をぶち壊す。
ChatGPTのチャット画面内でSpotifyを操作し、Zillowで物件を探しEtsyで買い物をする。
あなたが書いてきたReactコンポーネントもボタンもフォームもすべてAIに吸収される。
もはやユーザーはブラウザを必要としない。URLをコピペすることも無くなるだろう。
「このホテル予約して」と言うだけでAIがAPIを呼び、レスポンスをカルーセル形式で提示する。
ReactもNext.jsも「人間が画面を操作する前提」で存在していた。
でもその前提はもう終わった。
AIがデータを直接受け取り、AI自身が人間に見せるUIを自動生成する。
あなたが設計した美しいフォームもAIにとってはただの "action": "submit" という構造情報にすぎない。
Apps in ChatGPT以降の世界では、
これらが新しいUIだ。
だからこれから必要なのは「見た目を作る人」ではなく、AIが読み取れる形式で世界を記述できる人 だ。
バックエンドに戻れ。
Apps in ChatGPTが意味するのは、
今後必要なのは、AIが扱いやすいデータスキーマを定義する力や認証・権限・トランザクションを安全に扱う力やMCPやWebAPIをAIが使いやすい形に整える力だ。
これは警告だ。猶予は短い。
Apps in ChatGPTの登場は、「AIがUIを直接扱い始めた」という歴史的転換点だ。
あなたがフロントにしがみつく間に、AIはすでにあなたの代わりにUIを描いている。
5年後にはブラウザから色んなサイトにアクセスするという行為は一部のマニアだけ行うものになっているだろう。
もう時間はないぞ。急げ
Permalink |記事への反応(17) | 09:37
3ヶ月前、うちの開発チームに新しいエンジニアがやってきた。佐々木(仮名)、29歳。
経歴書を見た時点で、正直ビビった。
React、Vue、Next.js、TypeScript、Go、Rust、Docker、Kubernetes…もう何がなんだかわからない。
「また意識高い系が来たよ」
俺も同感だった。
レガシーなコードを見て「これはちょっと…」みたいな顔をする。
と提案してくる。
うぜぇ。
そんな中で何とか動くものを作ってるんだよ。
綺麗なコードなんて書いてる余裕ないんだよ。
3日で仕上げてくる。
悔しかった。
「やっぱりな。恵まれた環境にいたから、あんなことできるんだよ」
俺たちは佐々木を妬んでいた。
そう思っていた。
ところが先週、佐々木と飲みに行く機会があった。
新卒で入った会社は、まさに俺たちと同じようなSIer。Java とCOBOLでレガシーシステムの保守をやっていた。
でも、佐々木はそこで諦めなかった。
土日は技術書を読み漁り、
オンライン講座を受講し、
個人開発を続けた。
「平日は合計3時間、土日は10時間以上勉強してました。それを4年間続けました」
俺は計算した。
=6,880時間。
「最初の転職活動は100社受けて全部落ちました。でも諦めずに勉強を続けて、2回目の転職活動でようやく今のレベルの会社に入れました」
俺は恥ずかしくなった。
佐々木を「恵まれた環境にいたから」と妬んでいたが、実際は俺たちと同じ、いやそれ以下のスタートラインから、血のにじむような努力で這い上がってきた人だった。
俺は何をしていた?
「環境が悪い」
「時間がない」
そう言い訳して、
家に帰ったらゲームして、
努力の量だ。
「今からでも遅くないですよ」
と佐々木は言った。
恥ずかしかったけど、頷いた。
毎朝1時間でもいい。変わりたい。
29歳。まだ間に合うよな?
ここ数か月で、はてなブログやnoteが生成AIによるクロール (巡回) を拒否する設定項目を追加したけど、この設定、いろいろなブログサービスにひろまってほしいところ。はてなブログでもnoteでもないけど、生成AIは拒否したいという人はたくさんいるとおもうのだが。
※WordPress (有料プランか自前サーバーで運営している場合) やBloggerならクローラー設定を1から自分で入力することが可能。この記事の最後も参照。全部自分でやりたいという人はだいたいこのどっちかを使用しているだろうから、AI学習を許可するかどうかは検討してほしい。
Xなどのミニブログではよくプロフィールページに「AI学習禁止」と書いている人もおおいけど、人間とおなじ感情をもたない生成AIにとってはこの文言をクロールしてしまうため逆効果になってしまう。どうしてもクロールしてほしくないなら非公開アカウントの設定検討を (そのかわり検索でも表示されなくなるが) 。
イラストを投稿するウェブサイトについては、有名どころは設定項目がないもののデフォルトで生成AIによるクロールが拒否されているところがおおいので、マイナーなところでなければだいたい大丈夫だろう。ただしはてなフォトライフはクロール拒否になっていないので、公開フォルダーにアップロードする場合は注意が必要 (はてなブログからのアップロードだとデフォルトが非公開フォルダーになるのでブログの設定どおりになる) 。
生成AIとは関係ないが、興味深い設定になっているウェブサイトがいくつかあった。
https://www.colorslive.com/robots.txt
Nintendo Switchからのみイラストを投稿できるウェブサイトなのだが、デフォルトを全拒否に設定してあり、GoogleやBing (msnbot =現在のbingbot) といった主要検索エンジンに対してのみ個別に許可設定してある。なるほどとおもった。なおAppleはふくまれていないようなので、Spotlight検索ではヒットしない可能性がたかい (トップページはヒットする) 。
Disallow: *
デフォルトの検索エンジンをBingに設定している身としてはとんでもない表記をみつけてしまった...。絶望。
Copilotに使用されたくないのだろうが、このせいでBingで検索してもまとめサイトはヒットするのに元の投稿がヒットしないという状態に...。気のせいだとおもっていたけれど、設定に従った正常な動作だったのか...。
Xになってから、はてなブックマークでタイトルが表示されずURL表示のままだったり、JavaScriptをオフにしているとそもそもアクセスできなかったりなど (以前はJSオフでガラケー版が表示されていたのだが) 、いろいろ締め出しているのがな...。ログインしないと公式アカウント以外ユーザーのプロフィールは一部表示できないし (投稿すら表示できないのは一時的な緊急処置だったため現在はなくなった) 。
逆に検索エンジンからの流入をすこし (まとめられない限りは1割ほど) でもへらしたいならXはおすすめの選択肢に (なお非公開アカウントにしないかぎり0にはならないので家族や友達にだけ公開したい場合は注意) ...。
最後に、あらゆるクローラーを紹介しているウェブサイトを2つ。
https://chrisleverseo.com/user-agents/
SEOコンサルタントの個人運営っぽい。114のクローラーがまとめられている (2025年9月現在) 。英語だけだが、各クローラーについての説明がこまかく掲載されているので、好きな人は読んでいるだけでもおもしろいかも。SEO対策の補助としてつかえる各種機能も無料で公開されているので、AIクロールを拒否するrobots.txtをサクッと作成したいならここでAIカテゴリーの項目に全部チェックをいれて拒否欄 (赤色) に「/」1文字を入力、生成されたデータをダウンロードしてサーバーにアップロードすればよい (Bloggerならコピーして設定画面にペースト) 。
https://datadome.co/datadome-intel/
上はSEO対策からうまれたページなのだが、こっちはウェブサイトのセキュリティ対策 (ロボットによる過剰アクセスからの保護) を目的にうまれたページ。そのため、上の114クローラーの5倍以上ある586クローラー (2025年9月現在) の情報に加え、アクセス制限を突破しようとしてくる各種ツールなどについての情報もある。おそらく公開データベースのなかでは世界最大規模。
Permalink |記事への反応(14) | 14:24
1位:宝鐘マリン(https://www.youtube.com/@HoushouMarine)
2位:甘狼このみ(https://www.youtube.com/@AmakamiKonomi)
3位:星街すいせい(https://www.youtube.com/@HoshimachiSuisei)
4位:でびでび・でびる(https://www.youtube.com/@DebidebiDebiru)
【JS研究所】2025年最新版!ちゃおっ娘が好きなVTuberランキング☆ -ちゃおプラス
jsの知識だけではアプリ作れないし、プログラミングも不自由する
jsで実装するってことを目標としたときに一番の基礎はjsだろう?それですっとばしてるって言われる筋合いないだろう。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250910132839# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD+fwAKCRBwMdsubs4+SKV8AQDeUAY1BU3liWTk/XsCFrzgOY4TcZ1IeP90uFbHU3F0cAEA34kbkzJXZ/Ch9TgCh48NOQHBDCE5E4mSqf0L6mLg1Qg==ejI8-----ENDPGP SIGNATURE-----
んでお前自身は3dsとかswitchぽんと与えられて自力でcfwとかつくれたって思えるわけ?
単にプログラミングの知識だけじゃなくて既に存在するハードに結びついたコードに対する解析力とかえた情報を逆手にとって権限を奪うようなことするとかってまた必ずしも現場でitに携わってたら身につくというわけでもない特殊な知見な気がするんだけど。
ゲームハードとかの内部仕様なんて本出回ってるはずないからそれこそ一からどうにかする解析の地力が要求されるだろうし。
あとどこかで通じる部分がある話だと思うけどはてな
ブックマークのページとかで読み込まれるjsの中にはrksを生成するコードがあってそれを直接叩ければ安定して絶対通用する新鮮なrksを常に埋め込んでデータを送れるより安定したセルクマスクリプトができるはずなんだけど読み込まれるjs見てもラッパー関数ってやつになっててそれぞれの関数の役割が名前から見えづらい状態でそういう関数が存在するってことはほぼ明白なのに実体が見つけられなくて叩けないってことになってるんだけどそういうのを探し当てるのは高度かね?
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250910020042# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaMD2vwAKCRBwMdsubs4+SGkHAQCPTLGr0GoNnNLk5/c+qvzUF85pXTpFMbua9BYMJw3nswEA3g369/WgxjCBIzXcoQVHBfRW/OOhZAzKdG2HqVZd2gY==iPFu-----ENDPGP SIGNATURE-----
お前ら、いいか?
プログラマーになりたいとか言い出す若い子が増えてるらしいが、全力で止めるべきだ。
何が楽しくて、一日中パソコンの前に座ってコードを書くんだ。画面に向かってカチャカチャやるだけで給料もらえると思ってるのか?
バグという名の無限地獄にハマるんだ。テスト中に見つかった小さなミスを直しても、また次が見つかる。雪だるま式に増えていくバグの山を前に、休日出勤、深夜残業は当たり前だ。
今学んでる技術が、来年には古臭くなる。React?いや、Next.jsだ。Python?いや、Goだ。AI?いや、量子プログラミングだ。追いつけるか?
チーム開発だとか言うが、要するにコミュ障会議の連続だ。要件定義、設計レビュー、コードレビュー。画面越しに言われる「ここのインデント直して」は地獄のモノローグだ。
一日12時間も椅子に座ってると、腰が砕ける。目は充血、肩は凝り、腱鞘炎で手首が動かない。運動不足で内臓も弱くなり、メタボへの一本道だ。
⑤将来の不安
年収は確かに上がったかもしれない。でも45歳を過ぎたら使い捨てだ。体力も気力も続かない。若いうちはいいが、中年になって誰もコードを任せてくれなくなる。
⑥社畜化
残業代なんて雀の涙。納期に追われて、家族との時間も削られる。コードを書くための人生じゃない。お前らがロボットだとでも思ってるのか。
じゃあ、何を目指せばいいのか?
・医者:人の命を救える
コードなんて、所詮デジタルの世界の話だ。0と1の迷路で人生を消耗するな。
もし熱い情熱があるなら、もっとリアルな世界で形に残るものを作れ。
それでもお前らがプログラマーになりたいと言うなら、一度次の質問に答えてみろ。
・本当に解きたい問題があるか?
・30年後もこの仕事を続けたいと思うか?
答えがイエスならお前はマゾか、ホントのプログラマーかのどっちかだ。
プログラマーになるなんて、全力で止める。
あとはasyncとかawaitの(抜本的な)理解を諦めかけてるがそもそも自分レベルじゃ飛ばすべきなのか?
・・・(略)
await (acync f(){・・・
await (asycf()){・・・})();
})();
(f(){
await (async f()){・・・})();
})();
※省略部分に書かれているのは全部同期関数
↑こういうコードがどういう流れキューに出し入れされるのかエンジン仕様に即したごまかしのない説明ができないから、逆に言えば自分の意図に基づいて適切にawaitとか書けないためにバグのもとって状態になってる。
独習jsレベルに書いてあることじゃどう考えてもこういうコードの挙動を読み解くのは無理(数学的な見方で言うなら提示されている公理が足りない)って感じだしいつデッドロックを起こすかもわからない理解のまま学習を進めても結局その無理解で詰まってあいまいに済ませてって感じで根本的なレベルが一生あがってかなさそうに思えるんだがどうなんだ?
とりあえず今理解できてることはは「asyncが実行されたらawaitが書いてあるところまでは実行してそのあとは一旦呼び出し元に戻ってそれが実行されるまではキューに入れられる」ってことだけ。
でもこの理解にしても「awaitの後ろに置かれてる関数の内部処理自体が途中までは同期関数だったらそこまでは実行されてからキューに入れられるのか?」とかに対する手がかりがなくてもう混乱しっぱなし。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250908195255# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaL61iAAKCRBwMdsubs4+SKMOAQDXWR1tFpjkx7MBSQFS58GgB8MqU8LuQxugSCrg8OG8kQEArKKxXhQsgdDzc1z4stZcDl8ajX30rTcE7oXJTBNqIwI==IH5m-----ENDPGP SIGNATURE-----
ソースコードをいくら見てもそのソースコード作成者が想定してるエンジン側の実装なんて推測できんだろ。
ちなみにその「細かいこと」が気になった発端は初歩であるはずのコードの挙動の理解につまづいたからだけどな。
setTimeout(() => {console.log("A"); }, 1001); setTimeout(() => {console.log("B"); },1000);console.log("C"); 上のsetTimeout()の各第二引数の大小関係をどのように調整しても常に第二引数により小さい数が指定されたもののコールバック関数が先に実行されます。 これはどういうことですか?先にsetTimeoutと書かれたもののコールバック関数からキューに登録され、キューへの取り出し方はjsの場合fifoが採用されているので、上記のコードのような場合は、()=>console.log("A")の方が先にキューに登録されたものとして第二引数に無関係に()=>console.log("B")より先に実行されるのではないのですか?-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250908192456# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaL6u+QAKCRBwMdsubs4+SAtwAP49XRX8yOJwd/XLSKjjP1TASfuVR29t/NIhuLSNb0vr2AD8CtGJTYMzavjSi9TuxJTV/DSYuwhuBLnKkd0lsJOldQI==wm4J-----ENDPGP SIGNATURE-----
settimeoutの第二引数の値はキューから取り出して実行するまでの待機時間ではなく、キューに登録するまでの待機時間だったのか。
今まで前者の方で勘違いしてた。教科書はもっとこのあたり念入りに誤解されないように書くべきじゃないの?
独習jsでは「settimeoutを通じてコールバック関数がキューに登録される」というふうにしか書いてなくて、これだとsettimeoutが実行された瞬間に登録が行われると解釈されて仕方がないのでは。
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20250903180046# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaLgDwAAKCRBwMdsubs4+SBLAAP9Q43nJkJN5+gh1/ivCKSbCXezSj5wSftzmnJsSuRT/iAD/faSuVx09Gn/w/8GyJywKGTUkA8txtJI4+GFHAWLplQw==qIYl-----ENDPGP SIGNATURE-----