---
title: JavaScript × コードゴルフ
tags: 
author: [DNEK](https://image.docswell.com/user/dnek)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/DEY4W2LPJM.jpg?width=480
description: オープンセミナー2026@岡山 懇親会LTでお話した内容です。 https://oso.connpass.com/event/401702/  以下はスライド内で紹介している記事です。 ※スライドの内容のネタバレになるので後で読む方が良いかもしれません。 https://blog.dnek.net/entry/2026/09/04/173646
published: September 13, 26
canonical: https://image.docswell.com/s/dnek/Z7N3E2-2026-09-13-131102
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/DEY4W2LPJM.jpg)

JavaScript × コードゴルフ
2026/9/12 オープンセミナー2026@岡山 懇親会LT
DNEK（でぃーねっく）


# Page. 2

![Page Image](https://bcdn.docswell.com/page/VJNY984M78.jpg)

自己紹介
「DNEK（でぃーねっく）」と言います。
個人でモバイルアプリや
Webサイトを開発・運営
「京大マイコンクラブ (KMC)」所属
X:
@dnek_
コーディング系の趣味多め
HP:
dnek.net
（競プロ, esolang, コードゴルフ）
Rating 1613
Rating(Heuristic) 1863


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YE9P2KQWJ3.jpg)

「コードゴルフ」って何？
お題に従って「なるべく”短い”コード」を書く遊び
「ショートコーディング」とも言う


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GE8D5RGRED.jpg)

コードゴルフの例（113B → 49B）
const isHere = Math.random() &lt; 0.5; // 0〜1の乱数
if (isHere) { //「0.0 &lt;= 乱数 &lt; 0.5」の場合
console.log(&#039;Okayama&#039;); // &#039;Okayama&#039; を出力
} else {
//「0.5 &lt;= 乱数 &lt; 1.0」の場合
console.log(&#039;Wakayama&#039;); // &#039;Wakayama&#039; を出力
} // コメント以外で計113B
↓ 省略（ 0.5 → .5 ）、置換（ if else → ? : ）等
console.log(`${Math.random()&lt;.5?&#039;O&#039;:&#039;Wa&#039;}kayama`)


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LELMYKG27R.jpg)

コードの”短さ”に意味はあるのか？
人間
→ 単なる短さより可読性・保守性優先
機械
→（特に単純なテクは）ほぼ実行前に捨象される
コンパイル後のバイナリ、抽象構文木
→ ”楽しい”が、実用上の利点はほぼ無い


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4JMYN2Q9JW.jpg)

それでも”短さ”が役立つ場面
特にJavaScriptで有用な場合がある
エッジランタイム等、非富豪的な環境で実行される
Cloudflare Worker size上限: gzip前で 64 MiB
Web閲覧時、転送量の約1/4を占めるらしい
ビルド時の最適化が重要


# Page. 7

![Page Image](https://bcdn.docswell.com/page/PJR9DM8979.jpg)

最適化の一例（DNEK運営 v-data.info より）
コードゴルフに共通する手法が見られる


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PEXQ1V83JX.jpg)

賞金付きコードゴルフもある
2024年8-9月 第1回MN-Core Challenge
Preferred Networks 主催
「実行時間が行数にほぼ比例する」、という特徴の
PFN独自開発AIプロセッサー「MN-Core 2」のアセ
ンブリコードを、なるべく”少ない”行数で書く
→ 私は10位入賞で2万円獲得（1位は40万円）


# Page. 9

![Page Image](https://bcdn.docswell.com/page/3EK92QKNED.jpg)

本題


# Page. 10

![Page Image](https://bcdn.docswell.com/page/L73W4PZZ75.jpg)

最近”巻き込まれ”に行った話
「ブラウザで〇〇を実行する」JSコードの投稿を目撃
作者: yuiさん（海外の方、今まで関わり無し）
元の362バイトに、私が「まだ短くなる」と指摘
→ 2人で何日にも及ぶ縮め合いの応酬が始まる
→ 247バイトになった


# Page. 11

![Page Image](https://bcdn.docswell.com/page/87DKQLR4JG.jpg)

クイズ「247バイトの〇〇」
b=e=&gt;document.body.innerHTML=m(73,e||[~
9,...&quot;1172711&quot;,~9].map(j=&gt;m[i-=j]?++e:
i).map(j=&gt;b(b[i=j]^1|e),b[i]=!m[O--,i]*
~e));b(m=t=&gt;t--?`&lt;a onmouseup=b(b[i=
${t}]^=event.which)&gt;${t%9?&quot;*#F&quot;[x=b
[t]??=(O-=m[t]=Math.random()&lt;.1,1)]??~
x:&quot;&lt;p&gt;&quot;}`+m(t):O,O=64)


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJPKL2WVE8.jpg)

抜き出しヒント
→ &lt;body&gt; を更新する
&lt;a onmouseup= → マウスを離したときに何かする
&quot;*#F&quot;[...] → 文字 &quot;*&quot; &quot;#&quot; &quot;F&quot; を使う
m[t]=Math.random()&lt;.1 → 乱数を使う
document.body.innerHTML=


# Page. 13

![Page Image](https://bcdn.docswell.com/page/2EVVQD8REQ.jpg)

答え合わせ（実行方法）
1. about:blank で
空のタブを開く
2. コンソールにコピペ


# Page. 14

![Page Image](https://bcdn.docswell.com/page/57GLWY56EL.jpg)

答え（？）
A. マインスイーパー……？
各文字を左右クリックで
開ける or 旗切替
……ちょっと見辛い
開始直後 プレイ中


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4EQY3MZ2JP.jpg)

答え（CSSで微調整）
A. マインスイーパー
ちょっと見やすくなった
上: 8x8 の盤面
初期 &quot;#&quot; 、旗 &quot;F&quot;
左下: 残りのマス数
※ CSS無しでもちゃんと遊べる


# Page. 16

![Page Image](https://bcdn.docswell.com/page/KJ4W1V3P71.jpg)

おまけ


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LE1YG31X7G.jpg)

プロンプト版
さっきのは（比較的）「遊べる版」
機能を絞った133バイト「プロンプト版」も書いた
m=i=&gt;{a=8;for(j of&quot;01182811&quot;)a-=!m[i-=
j];b[i+=11]=m[i]||a;m(-~prompt(t?b[--t]=
t%10?(M-=m[t]=new Date%7&lt;1,9):`
`:M+b))};m(b=M=[],t=90)


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GEWGKP8KJ2.jpg)

プロンプト版画面
1. Enterキー90回連打で初期化
2. 次に開ける座標を入力
右上 ( 1, 9 ) なら 19
旗を立てられない
0 の周りは再帰的に開かない


# Page. 19

![Page Image](https://bcdn.docswell.com/page/47ZLZK8NJ3.jpg)

解説記事
↓解説記事QR
詳しいコード解説はブログ記事で
yuiさんの記事も紹介
または
「DNEK ブログ」
で検索


# Page. 20

![Page Image](https://bcdn.docswell.com/page/YJ6WZQP9JV.jpg)

DNEKの主な製作物 (dnek.net より)
↓解説記事QR


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GJ5MWRKDJ4.jpg)

↓解説記事QR
おわり
または
「DNEK ブログ」
で検索


