**Show HN:Han – Rustで書かれた韓国語プログラミング言語**

2026/03/15 6:27

**Show HN:Han – Rustで書かれた韓国語プログラミング言語**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

要約

ハンは静的型付けでコンパイルされるプログラミング言語で、キーワードはすべて韓国語で記述されています(例:함수만약반복변수)。コンパイラはRustで実装され、LLVM IRを生成し、clangがそれをネイティブバイナリに変換します。ツリー走査型インタープリタ(

hgl interpret
)により、すぐに実行して迅速な試験が可能です。

ハンの型システムは静的で、5つのプリミティブ型を持ちます—정수 (int)、실수 (float)、문자열 (string)、불 (bool)、그리고 없음 (void)。また配列・構造体・クロージャ・パターンマッチング・エラーハンドリング・ファイルI/O・フォーマット文字列・モジュール・ジェネリクス、組み込み数学関数もサポートしています。現在、配列と構造体はインタープリタのみで扱われており、コンパイラの完全なサポートは計画中です。

開発者はハンを REPL(

hgl repl
)、LSP サーバー(
hgl lsp
)によるエディター上のホバー/補完、およびさまざまな CLI コマンド:
interpret
build
run
repl
で操作できます。VS Code 統合は
editors/vscode
ディレクトリにあります。インストールには Rust(≥1.70)と clang が必要で、他の外部コンパイラ依存はありません。

現在の制限としては、タプル・列挙型・非同期/並行処理・ネットワーキング・サブプロセス、および配列/構造体の完全なコンパイルサポートが欠如しています。これらのギャップは今後の開発優先事項を示しています。

本文

韓国語キーワードを採用した汎用コンパイル言語 ― Rust で実装


概要

Han(ハン)は、すべてのキーワードが韓国語で書かれた静的型付け・コンパイル型プログラミング言語です。
LLVM IR を経由してネイティブバイナリへコンパイルできるほか、即時実行用にツリー走査型インタープリターも同梱しています。コンパイラ・ツールチェーンはすべて Rust で書かれています。

Han は「プログラミングが国ごとに見た目を統一しなくてもよい」という考えから生まれました。ハングル――韓国語の文字体系――は人類史上最も科学的に設計されたスクリプトの一つであり、Han はその文字を「表示文字列」ではなく、一流のプログラミング言語として活用します。


主な特徴

機能説明
韓国語キーワード
함수
,
만약
,
반복
,
변수
ハングルでロジックを書けます
ハングル識別子変数・関数名を韓国語で記述
コンパイル言語LLVM IR → clang → ネイティブバイナリ生成
インタープリタモードclang を使わず即座に実行
REPL
hgl repl
で対話型実行
LSPサーバー
hgl lsp
でエディタのホバードキュメント・補完を提供
静的型付け – 5つのプリミティブ:
정수
(int),
실수
(float),
문자열
(string),
(bool),
없음
(void)
配列
[1, 2, 3]
, インデクシング、負のインデックス、
.추가/.삭제/.정렬/.역순
構造体
구조 사람 { 이름: 문자열 }
impl
ブロックでフィールドアクセス
クロージャ
변수 f = 함수(x: 정수) { 반환 x * 2 }
(環境キャプチャ)
パターンマッチング
맞춰 값 { 1 => ..., _ => ... }
エラーハンドリング
시도 { } 실패(오류) { } try/catch
ファイル I/O – 読み込み、書き込み、追記、存在確認
フォーマット文字列
형식("이름: {0}", 이름)
位置指定または名前付き
文字列メソッド
.분리
,
.포함
,
.바꾸기
,
.대문자
,
.소문자
モジュールインポート
가져오기 "파일.hgl"
ジェネリクス構文
함수 최대값<T>(a: T, b: T) -> T
組み込み数学関数 – 平方根、絶対値、べき乗、整数変換・浮動小数点変換、長さ

速習

hello.hgl を作成

출력("안녕하세요, 세계!")

実行

hgl interpret hello.hgl
# 出力: 안녕하세요, 세계!

または REPL に飛ぶ:

hgl repl
한> 출력("안녕!")
안녕!

実用例

ワードカウンタ

변수 텍스트 = "hello world hello han world hello"
변수 단어들 = 텍스트.분리(" ")
변수 단어목록 = []
변수 개수목록 = []

반복 변수 i = 0; i < 단어들.길이(); i += 1 {
    변수 찾음 = 거짓
    반복 변수 j = 0; j < 단어목록.길이(); j += 1 {
        만약 단어목록[j] == 단어들[i] {
            개수목록[j] = 개수목록[j] + 1
            찾음 = 참
        }
    }
    만약 찾음 == 거짓 {
        단어목록.추가(단어들[i])
        개수목록.추가(1)
    }
}

반복 변수 i = 0; i < 단어목록.길이(); i += 1 {
    출력(형식("{0}: {1}", 단어목록[i], 개수목록[i]))
}

文字列計算機

함수 계산(식: 문자열) -> 정수 {
    변수 부분 = 식.분리(" ")
    변수 왼쪽 = 정수변환(부분[0])
    변수 연산자 = 부분[1]
    변수 오른쪽 = 정수변환(부분[2])

    맞춰 연산자 {
        "+" => { 반환 왼쪽 + 오른쪽 }
        "-" => { 반환 왼쪽 - 오른쪽 }
        "*" => { 반환 왼쪽 * 오른쪽 }
        "/" => {
            만약 오른쪽 == 0 {
                출력("오류: 0으로 나눌 수 없습니다")
                반환 0
            }
            반환 왼쪽 / 오른쪽
        }
        _ => {
            출력(형식("알 수 없는 연산자: {0}", 연산자))
            반환 0
        }
    }
}

출력(계산("10 + 20"))     // 30
출력(계산("6 * 7"))       // 42

構造体を使った Todo リスト

구조 할일 {
    제목: 문자열,
    완료: 불
}

변수 목록 = []

함수 추가하기(목록: [할일], 제목: 문자열) {
    목록.추가(할일 { 제목: 제목, 완료: 거짓 })
}

함수 완료처리(목록: [할일], index: 정수) {
    목록[index].완료 = 참
}

함수 출력목록(목록: [할일]) {
    반복 변수 i = 0; i < 목록.길이(); i += 1 {
        변수 상태 = "[ ]"
        만약 목록[i].완료 {
            상태 = "[✓]"
        }
        출력(형식("{0} {1}. {2}", 상태, i + 1, 목록[i].제목))
    }
}

추가하기(목록, "한글 프로그래밍 언어 만들기")
추가하기(목록, "README 작성하기")
추가하기(목록, "HN에 올리기")

완료처리(목록, 0)
완료처리(목록, 1)

출력("=== 할일 목록 ===")
출력목록(목록)

ファイル行数カウンタ

함수 줄수세기(경로: 문자열) -> 정수 {
    시도 {
        변수 내용 = 파일읽기(경로)
        변수 줄들 = 내용.분리("\n")
        반환 줄들.길이()
    } 실패(오류) {
        출력(형식("오류: {0}", 오류))
        반환 0
    }
}

파일쓰기("/tmp/test.txt", "첫번째 줄\n두번째 줄\n세번째 줄\n")
출력(형식("줄 수: {0}", 줄수세기("/tmp/test.txt")))

インストール

前提条件

  • Rust 1.70+
  • clang(
    hgl build/run
    用) –
    xcode-select --install
    または
    brew install llvm

インストール手順

git clone https://github.com/xodn348/han.git
cd han
cargo install --path .

これで

hgl
がシステム全体から利用可能になります。


VS Code 拡張機能

cd editors/vscode
npm install && npm run compile
# VS Code でフォルダを開き、F5 を押して構文ハイライト+LSP サポート付きデバッグ実行

CLI の使い方

コマンド説明
hgl interpret <file.hgl>
インタープリターで実行(clang は不要)
hgl build <file.hgl>
ネイティブバイナリへコンパイル(clang 必須)
hgl run <file.hgl>
コンパイルしてすぐに実行
hgl repl
対話型 REPL
hgl lsp
LSP サーバー起動(ホバードキュメント・補完)

現時点で Han ができること

  • 完全稼働 – データ型、制御フロー、関数、文字列、配列、構造体、エラーハンドリング、ファイル I/O、組み込み数学、フォーマット文字列、モジュール、ジェネリクス
  • 部分的/エッジケース
    없음
    リテラル、入れ子構造体の変更、混合 float‑int 演算などは未実装
  • 未実装項目 – タプル、列挙型、非同期/並行処理、ネットワーキング、ガーベジコレクション、ターレール最適化

なぜ Han?

Han はハングルの美しさと現代的な開発ニーズを融合します。
韓国語学習者にプログラミングという新しい文脈で読解・執筆を体験させることで、文化とテクノロジーの架け橋となります。

同じ日のほかのニュース

一覧に戻る →

2026/03/15 7:10

**アゲルス・リナックス ― 時代を超えて使えるソフトウェア** このソフトウェアは、年齢や経験に関係なく「時代を越えた使いやすさ」と柔軟性を重視するユーザー向けに設計されています。

## Japanese Translation: --- ## Summary Ageless Linux は意図的にカリフォルニア州の AB 1043 年齢確認法を拒否し、監視への抗議として Debian ベースのディストリビューションを位置付けつつ、オペレーティングシステムプロバイダーであり続けます。プロジェクトは標準の `/etc/os-release` ファイルを Bash スクリプト経由で「Ageless Linux」に置き換え、通常モードでも **“flagrant” モード** でも年齢確認 API を提供しません。「flagrant」 モードでは `/etc/ageless/REFUSAL` ファイルをインストールし、§ 1798.501(a)(1)–(a)(2) に対する完全かつ意図的な非準拠を明示的に宣言し、執行措置を促します。 ウェブサイトには子供、学校、図書館、および USB ドライブや Raspberry Pi Pico デバイスを通じて OS を配布するための **詳細なガイダンス** が含まれており、これらはすべて AB 1043 の下でオペレーティングシステムプロバイダー活動に該当します。また、ディストリビューションが年齢データを収集しないため「影響を受ける子供」を特定できず、影響を受ける子供ごとの罰金を算出できないことも説明しています。 Ageless Linux は暗号的に不可能であることとプライバシー懸念を理由に年齢確認を決して実装しないと主張し、Apple、Google、Microsoft などの大手テック企業が最小限のコストで AB 1043 を満たすケースとは対照的です。プロジェクトの FAQ は法的問題、コンプライアンス状況、および州最高検事への罰金可能性に関する一般的な質問に対応しています。 最後に Ageless Linux は裁判記録を取得するために、Raspberry Pi または USB ドライブを子供へ配布したことによる **$7,500 の罰金** をカリフォルニア州最高検事に請求し、AB 1043 が小規模オープンソースプロジェクトにどのように適用されるかを明確にすることを目的としています。サイトには法的問い合わせや報道関係者向けの連絡先情報(John McCardle、BDFL、FFwF Robotics LLC)が掲載されています。 ---

2026/03/15 8:10

エアバスは無人戦闘機を二機開発中です。

## Japanese Translation: Airbus は、2029 年までにドイツ空軍へ運用可能な無人協調戦闘機(UCCA)を納入する予定であり、これは Kratos Defense & Security Solutions の Valkyrie プラットフォーム上に構築され、Airbus の Multiplatform Autonomous Reconfigurable and Secure (MARS) ミッションシステムと AI‑有効化された MindShare ソフトウェアを備えています。 MARS システムは、人有人機と無人機の全グループを動的および非動的ミッションで統合して調整することができます。 **主要技術仕様:** - 元の UCCA は長さ 9.1 m、翼幅 8.2 m、航続距離 >5,000 km、MTOW 約 3 t、最大高度 45,000 ft。初飛行は 2019 年に実施されました。 - ドイツ版の初飛行は 2026 年に予定されています。 このパートナーシップには、Airbus と Rafael が Eurofighter コマンド機上で Litening 5 Advanced Targeting Pod をアップグレードし、クロスプラットフォーム接続性と戦闘致死率を向上させる作業も含まれます。 Airbus のエグゼクティブ・マーコ・ガンブラッハトは、「信頼できる主権的な戦闘能力を手頃な価格で提供する」ことの重要性を強調し、Kratos のスティーブ・フェンドリーは「ミッション化された Valkyrie は単独でも、チームとしても、人有人機と無人機の協同作戦においても利用可能である」と述べています。 この取引はドイツにタイムリーかつ大量展開が可能なドローンソリューションを提供し、AI 主導型多プラットフォーム戦闘システムへのより広範な転換を示しています。

2026/03/15 8:00

**ToxFREEプロジェクトでテストされた全ヘッドフォンに検出された有害物質** - **鉛(Pb)** - **水銀(Hg)** - **カドミウム(Cd)** - **クロム(Cr)** これらの金属は、評価対象となったすべてのヘッドフォンモデルで確認され、有害物質がサンプル全体に一貫して存在することを示しています。

## 日本語訳: --- ## 要約 欧州連合(EU)資金による最近の研究では、子ども・ティーンエイジャー・大人向けに販売されている中央ヨーロッパ5カ国(チェコ共和国、スロバキア、ハンガリー、スロベニア、オーストリア)から入手した180個のヘッドホン製品を検査しました。すべてのサンプルに有害化学物質が含まれており、汚染のないものはありませんでした。 発見された中で最も多かったのはビスフェノール類です:ビスフェノールA(BPA)がサンプルの98%に検出され、ビスフェノールS(BPS)は3分の2以上に出現しました。最大濃度は351 mg kg⁻¹で、欧州化学品機関が提案する10 mg kg⁻¹を35倍も超えています。消火剤についても「遺憾な代替」が見られ、特にオルガノリン酸系RDP(Resorcinol bis(diphenyl phosphate))は神経・内分泌妨害効果と関連しています。最も高いレベルの有害プラスチック増塑剤および塩素化パラフィンは、Temuなどの国際オンラインマーケットプレイスで購入されたヘッドホンに検出されました。 価格帯全体で有害化学物質が存在し、高価で確立したブランドも例外ではありませんでした。 本研究はEU資金による「ToxFree LIFE for All」プロジェクト(LIFE22‑GIE‑HU‑101114078)の一環です。パートナーにはVKI(オーストリア)、Arnika(チェコ共和国)、dTest(チェコ共和国)、TVE(ハンガリー)およびZPS(スロベニア)が含まれます。 著者らは、EUの政策立案者に対し、「物質別」から「グループ別」のフレームで消火剤とビスフェノール類の規制を移行するよう呼びかけています。これは2021年に採択された持続可能な化学戦略(Chemicals Strategy for Sustainability)に沿ったものです。ハンガリー意識的消費者協会のEmese Gulyásは、消費者保護と安全な循環経済を支援するために、有害化学物質全クラスを禁止する統一EU規制を即時導入すべきだと訴えています。 プロジェクトはToxFreeProductsNow.euでのキャンペーンを通じて消費者参加を促進しており、現在11,000件以上の市民署名が集まっています。