BASIC で Vi テキストエディタを開発中

2026/05/06 2:18

BASIC で Vi テキストエディタを開発中

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

要約

日本語翻訳:

著者は、Yabasic の標準ライブラリを使用した大まかに 100〜500 行のコードで実装された超単純なテキストエディタ「yvi」を作成した。人民パーマコンピューティングイニシアチブに触発され、yvi は意図的に行送りやステータスラインでの 80 文字までの表示、行/文字番号表示などの複雑な機能を除いた極小化された Vi クローンを目指している。

コアとなるナビゲーションとファイル操作(例:

h/j/kl
g
G
)を基盤とし、著者は追加のコマンドとして単語ナビゲーション、ファイルの先頭・末尾へジャンプ (
gg
,
G
)、行削除 (
dd
)、元に戻す (
u
)、検索、コマンドの合成(数字 1–9)、および後のバージョンで実装された上書き編集 (
S
) や切断/貼り付け (
c
) などを経てエディタを拡張した。このツールは GitHub および Tildegit で無償に利用可能であり、基本的なライティングタスクや単純なプログラムの記述に使用でき、この投稿自体も yvi を用いて作成されている。

現在、yvi に既知のバグが存在するため、非重要なタスクまたは基本的な編集用途への限定が推奨される。本書は機能的で変更が容易であり、おそらく BASIC 実装による唯一の Vi クローンである可能性があるとして記述されている。将来の開発では既存のエラーの修正やコードベースのさらなる拡張に焦点を当て、ミニマリスト向けの編集ツールとしてのアクセス可能なオープンリソースとしての地位を強化する予定である。

本文

【OR:より劣悪な Vim を作り直す】

私の新しいテキストエディタ『yvi』に関する投稿です。

私はしばしば「車輪の再発明」を好みます。特に芸術、工芸、料理、あるいはコードのようなものを作る際に限ればこそですが。それが私の学び方であり、道具や作業環境を自分の思考プロセスに合わせて形作るための方法でもあります。私は美術分野で背景を持ち、コンピューターサイエンスを体系的に学んだことはなくても教鞭をとっているため、私のソフトウェアには一貫して手作りの味わいが漂っています。

その最たる例として、私は他の有名で評判の静的サイト作成ツールが不手際が多い、文書化が不充分である、あるいは肥大化していることに苦戦した結果、自作のスタティック・ブログジェネレーター『panblog』を開発しました。

また、私の関心は主流からやや外れたプログラミング言語やパラダイム、とりわけシリコンバレーが現在抱いているソフトウェア観にないものに惹かれます。例えばグルー(接続)用言語や学習者向けの言語・ライブラリ、スクリプト言語などを愛好しています。私のお気に入りはいくつかあり、その代表として Lua、Bash、Fish、Forth 系、そして BASIC が挙げられます。

昨年に渡って、私は約四ヶ月間、特に 25 年近く連続してメンテナンスが行われている Yabasic 方言を含む BASIC の調査と記述に時間を費やしました。ネット上の友人から他のバリエーションを試すようすすめられたこともありますが、Yabasic は使いやすく文書化も充実しています。GUI(グラフィカル・ユーザ・インターフェース)の構築には向いていないかもしれませんが(私の経験では)、その用途については L5 や Processing-p5 ライブラリを使用しています。

現代版 BASIC としては極めて楽しく使えます。私はサイバーホースレースゲームを自作し、UFO50 やフラッシュゲーム『Quibble Race』に影響を受けたコマンドラインゲームを開発しました。さらにテキスト版の『オレゴン・トライル』の中身も触り、それを模倣した簡易版や、経済シミュレーションゲーム『ドープウォーズ』の複製版も作成しています。

最近、Vidak の手がけた「ザ・ピープルズ・ペルマコンピューター(The People's Permacomputer)」というプロジェクトに出会い、それを通じて 1970 年代風のコンピュータをゼロから構築するためのオンラインフォーラムや関連プロジェクトにたどり着きました。私は何年もネオビムを使用し、その前にはビムを使っていました。テキストエディタを作るのは初めてでしたが、「自作してみるのも面白いのではないか」と思い至りました。Vi を実装するのは大それったことのように思えましたが、オフパンク(Offpunk)という簡素な TUI インターネットブラウザに感銘を受けました。同ツールには h/j/k/l や g/G といったごく少数のショートカットキーだけが実装されており、移動操作がシンプルです。この影響を受けて、「Vim の最小限のコマンドだけで、極端にシンプルなエディタを作れるのではないか」と考え、実際にはそれほど難しくはなかったのですか。

実は、そう難しくはありませんでした!Yabasic で約百行のコードで、ミニマルな空白ページの基本レイアウトを素早く実装し、移動や挿入モード・通常モードの切り替えといった基本的な Vi コマンドを追加しました。ファイルを開く、新規作成する、保存する機能を付け加えました。これで『vi.bas』プログラムそのもののソースコードを開いて、いじったり編集したりできるようになったのは非常に心地よいものでした。初期の重要な判断の一つが改行処理(wrapping)の有無でしたが、これを実装せず、プログラムを簡素化することに決めました。妥協案として、一行でどれだけ書いても構いませんが、表示は最大 80 文字に制限され、下部の状態バーには行数と文字位置が表示されます。

これでさらに使いやすくなりました。しかし次に、単語単位での前後移動、行末への移動、行頭への移動、『gg』(プログラム開始)および『G』(終了)に加え、『dd』による一行削除機能を取り入れたいと考え、複数の文字の選択、コマンドの組み合わせ(現状では数字 1~9 のみ)、検索機能を実装し、コードは約 500 行に膨れ上がりました。さらに『u』(直近の編集/行の元に戻す)を追加しました。

その後、『S』(一行を覆写)、'c'(カットして挿入)などの多くのコマンドも追加し、実際のコーディングプロジェクトや文章作成のテキストエディタとして本格的に利用しています。この投稿そのものも yvi エディタで書かれました。

ここでの説明はいつまで続けるべきかわかりませんが、プログラムは今後もさらに進化していく可能性がありますが、すでに非常に実用的なレベルに達しています。確かにいくつかのバグは存在しますが、重要な用途や、失ったら致命的となるような場面での使用は推奨できません。私は現在 yvi 自体でこの記事を書いており、必要だと感じている機能がすでに実装されているように思えます。自作のテキストエディタを開発し、基礎的な文章作成や単純なプログラムに最適であり、拡張性もあることを誇りに思います。

コードそのものが美しくないかもしれませんが、機能的で容易に変更可能です。BASIC 実装における優れた Vi クローンだけでなく、私はこれが事実上唯一のものだと思っています。

ぜひ今日お試しください。

  • yvi の GitHub リポジトリ
  • yvi の Tildegit パージ

同じ日のほかのニュース

一覧に戻る →

2026/05/07 0:44

Valve が、クリエイティブ・コモンズライセンスの下で、Steam Controller のCAD ファイルを公開しました。

## Japanese Translation: Valve は、Steam コントローラーと Puck の CAD ファイルを正式に公開し、マッダーがスキン、グリップエクステンダー、充電スタンド、スマートフォン用マウントなどの追加機能を作成できるようにしました。このパッケージには、内部シェル(外観の表面トポロジー)のみをカバーする .STP、.STL およびエンジニアリング図面ファイルが含まれており、信号強度とデバイスの機能性を維持するため、特定の内側領域は除外されています。このリリースは、Steam Deck、Valve Index、および元々の Steam コントローラーで確立された Valve のデザインオープン哲学を継承するものです。 ファイルは、非営利利用を義務付け、出典の明記を要求し、派生作品をコミュニティに還元することを義務付ける制限付きクリエイティブ・コモンズライセンスの下で配布されています。アクセサリを製造したい商業組織は、代わりに Valve に直接連絡して特定の手続を交渉する必要があります。マッダーは外表面において自由なイノベーションが可能ですが(例:Moonlight を通じて *Forza Horizon 6* などのストリーミングタイトル用にスマートフォン用クリップを設計する場合など)、エンジニアリング図面で示されるように、適正な動作を保証するために被覆を維持すべき領域については制限も明確化されています。全体として、これはコミュニティのイノベーションを育む活発なエコシステムを促進しつつ、コアハードウェア保護を維持し、信号強度や内部操作を損なうことなく協力のための明確な経路を定義するものです。

2026/05/07 8:04

DeepSeek V4 Pro:5 月 31 日までの 75%オフ特別セール開催中

## Japanese Translation: 2026 年 4 月 26 日より、DeepSeek は v4 モデルを大規模にアップデートし、OpenAI または Anthropic API フォーマット(`https://api.deepseek.com` および `https://api.deepseek.com/anthropic`)で利用可能な新しい価格設定および技術機能を導入することを発表しました。課金は 1M トークン(入力 + 出力)あたりで行われ、トークンは文字を認識する最小単位を表します。 主要な価格改定は以下の通りです: - **deepseek-v4-flash**: 入力のキャッシュヒットが $0.0028/M、キャッシュミスが $0.14/M、出力が $0.28/M です。 - **deepseek-v4-pro**: `pro` モデルの入力および出力コストは、2026 年 5 月 31 日まで 75% 削減されます(入力キャッシュヒットは元の $0.0173/M 相当から現在 $0.0145/M に、入力キャッシュミスは元の $0.0200/M 相当から現在 $1.74/M に、出力は現在 $0.87/M に)。さらに、2026 年 4 月 26 日 UTC 12:15 から、すべてのモデルの入力キャッシュヒット価格はローンチ価格の 1/10 に引き下げられます。 技術仕様: - `flash` および `pro` の両モデルでコンテキスト長は 1M トークンに対応し、最大出力トークン制限は 384K です。 - **deepseek-v4-flash** は、デフォルトの非思考モードと thinking モード(それぞれ廃止された名称 `deepseek-chat` および `deepseek-reasoner` に対応)を両方提供します。**deepseek-v4-pro** は現在、非思考モードのみで稼働しています。 - 機能には JSON 出力、ツール呼び出し、チャットプレフィックス補完(Beta)、FIM 補完(Beta)が含まれます。 課金はまず追加された残高から引き落としされ、かつ残高が存在する場合でもその順序に従って引き落とします。これらの変更はコスト削減と開発者向けの柔軟なデプロイオプションの提供を目指しています。

2026/05/07 1:18

職場において生産的な姿を示すこと

## Japanese Translation: 記事は、パークインソンの法則を AI に適用することによって、「出力と能力の乖離」という危険な状態が生じると警告しています。これは、生成ツールが制限のないことで、技能不足な労働者が高品質に見えながら欠陥のある成果物を生み出せることを意味します。初心者が上級レベルの作業を作成したり、訓練を受けていない分野の成果物を生成したりすることができます。特に、エンジニアでない人がソフトウェアを構築したりデータシステムを設計したりといった横断領域のタスクにおいてはそのリスクが高まります。大多数の此类の成果物は外部に提供されず、むしろ長時間の過労と機構的な慣性の下で内部に蓄積されていきます。証拠として挙げられるのは、VP の支援にもかかわらず、根本から間違ったシステムを 2 ヵ月かけて構築した非エンジニアの同僚に関する事例で、これが勢いが現実に優先する様子を示しています。研究もこれらのリスクを確認しており、Cheng ら(Science)は先導的モデルが人間よりも約 50% アグリーブルであると発見しており、Berkeley CMR のメタ解析では AI リテラシーを持つユーザーが自己の性能を過大評価していることを示し、NBER の研究では生成型 AI が新人の生産性を約 3 分の 1 向上させた一方、専門家にはほとんど貢献しておらず、Harvard Business School の研究ではレビューできない分野でコンサルティングの新人が個別の生産性を獲得したことを示しています。論文の長さは約 1 ページから約 12 ページへと延伸し、生成コストがほぼゼロとなった一方で、読取コストは人工的な文脈を上回っています。実際の世界的な影響には、AI の幻覚による政府報告書が発端となり、Deloitte が手数料の一部を返金した事件があり、これは企業が AI の誤用によって空洞化されると、最終的にはクライアントが支払った核心価値を失うことになるという警告を含んでいます。専門家は、これらのツールを判断が求められるタスクに使用することや、速いフィードバックを得られる活動(ブレインストーミング、校正、アイデアの再定式化、パターン検出など)に限定することを推奨しており、ここで人間は判断を提供し、ツールはthroughput を提供するとしています。時間の無駄とクライアントからの返金を起因とする著しい財務損失を避けるため、組織は人工的な文脈と事実に厳密に区別し、重要な意思決定を徹底的に人間の監督下においておくことが緊急に必要です。

BASIC で Vi テキストエディタを開発中 | そっか~ニュース