1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

逃げ回るChatGPTを追い詰めるには

Posted at

VZエディタマクロをWindows, Linux, macOSで
https://qiita.com/kaizen_nagoya/items/b01918c7ba2704ce4fdf
では、IntelCPUに限った移植の提案をお願いしたら、ソースコードにもとづいた説明をしてくださった

ARMCPUへの移植の話になったら、ソースコードから逃げるCHatGPTに遭遇した

ChatGPT

祝VZエディタソースコード公開
https://qiita.com/kaizen_nagoya/items/baad23cf4a041ce845a9
をARM CPUのWindows, macOS, Linux(Raspberry PIを含む)に移植しようと思います。どこから手をつけるといいでしょうか。

ChatGPT:

なるほどです 😄
VZエディタを ARM CPU(Windows, macOS, Linux / Raspberry Pi含む)に移植 する場合、手順を整理すると「段階的に進めるのが安全」です。

  1. 現状コードの整理と依存確認
    まず VZエディタのソースコード公開版を確認します。
    使用している言語/フレームワーク(C/C++, Qt, ncurses, WinAPIなど)
    OS依存部分の抽出
    Windows API呼び出し(コンソール操作、ファイル操作など)
    GUI / イベントループ
    ARMでのコンパイル可能性を確認(型のサイズやアセンブリ依存はないか)
    💡 ここで「コンパイルだけで通るか」をまずチェックするのが安全です。
  2. 共通インターフェース化
    OSやCPU依存部分を 抽象化 します。
    例:
    機能 抽象化方法
    画面描画 vz_put_char(x,y,char) または vz_draw_pixel など共通API
    キー入力 vz_get_key() 非ブロッキングで取得
    ファイル操作 標準Cの fopen 系で共通化
    スリープ / タイマー _sleep(ms) / usleep(ms) をラッパー関数化
    この段階で、Windows / Linux / macOS / Raspberry Pi で共通のヘッダ・APIを作ることが重要
  3. 最小限動作確認コードを作る
    「VZエディタの一部機能だけ」を移植してテスト
    例:コンソールに文字表示 → キー入力 → 画面更新
    これにより、ARM上でも描画・入力・タイマーが動くことを確認
    Raspberry Piは ncurses / Linux 標準API で動作確認
  4. 段階的に機能移植
    コンソール描画とキー入力
    Windows → ARM Windows
    macOS → ARM macOS
    Linux → ARM Linux / Raspberry Pi
    マクロエンジン / プログラムロジック
    OS非依存部分はそのまま流用
    ファイルI/O / 設定保存
    OS間差異をラッパー関数で吸収
    拡張機能(サウンド、GUIなど)
    ここで OSごとの違いを吸収
  5. ビルド環境の準備
    クロスコンパイル環境を整備
    Windows ARM → MSVC または MinGW-w64 ARM
    macOS ARM → Xcode / clang
    Linux / Raspberry Pi → gcc / g++
    CMake などビルドシステムで OS判定マクロを活用
    #ifdef _WIN32
    // Windows用処理
    #elif APPLE
    // macOS用処理
    #elif linux
    // Linux用処理
    #endif
  6. 動作確認用最小テスト例
    コンソール描画+キー入力+タイマー
    #include "vz_console.h"
    int main() {
    vz_init();
    for(int i=0;i<10;i++){
    vz_put_char(i,i,'#');
    }
    while(1){
    if(vz_get_key()==27) break;
    }
    vz_end();
    }
    これで ARM各OSで動作確認 してから本格移植に進む
    推奨順序まとめ
    現状ソースの依存関係確認
    OS依存部分を抽象化して共通API化
    最小限のテストコードで描画・入力確認
    段階的に機能移植(描画 → マクロエンジン → ファイル → 拡張機能)
    各OS / CPU で動作確認
    最終的に VZエディタ全機能を統合
    💡 これにより、ARM CPUでも安全に Windows, macOS, Linux, Raspberry Pi で動作する VZエディタ が構築可能です。
    もし希望であれば、次に 「共通API化してARM移植向けのディレクトリ構成サンプル」 を作り、どのファイルをどのOSでどう分けるか具体例も示せます。
    作りますか?

vcraftjp/VZEditor
https://github.com/vcraftjp/VZEditor/
にあるソースコードに沿ってお願いします。

ChatGPT:

VZエディタのソースコード公開に関する情報をご紹介します。
VZエディタのソースコード公開について
VZエディタは、兵藤嘉彦氏によって開発されたMS-DOS用のテキストエディタで、特にアセンブラ開発者に愛用されてきました。最近、オープンソースとしてそのソースコードが公開されました。公開されたリポジトリは以下の通りです。
GitHub リポジトリ: vcraftjp/VZEditor
このリポジトリには、以下のような内容が含まれています。
VZ-PC98: PC-9800シリーズやJ-3100シリーズ向けのマスターディスク
VZ-IBM: DOS/V、AX、PS/55、US版のマスターディスク
SRC: ソースファイル
Manual: マニュアルをMarkDown形式で文書化したもの
FDImage: エミュレータ用のFDイメージ(ベタ形式)
VZ157: Ver1.57のバージョン
公開されたソースコードを利用することで、VZエディタの理解を深めたり、カスタマイズや移植を試みたりすることが可能です。
移植に関する考慮点
VZエディタは、元々MS-DOS用に開発されたため、移植を試みる際には以下の点に注意が必要です。
プラットフォーム依存のコードの抽出: MS-DOS特有の機能やAPIに依存している部分を抽出し、他のプラットフォーム向けに置き換える必要があります。
コンソール入出力の対応: MS-DOSのコンソール入出力を、ターゲットプラットフォームのコンソール入出力に適切に対応させる必要があります。
ビルド環境の整備: ターゲットプラットフォーム向けのビルド環境を整備し、必要なツールチェーンやライブラリを準備する必要があります。
テストとデバッグ: 移植後の動作確認とデバッグを行い、元の動作を再現できているか確認する必要があります。
まとめ
VZエディタのソースコード公開により、MS-DOS用のテキストエディタを他のプラットフォームに移植するための第一歩が踏み出されました。移植作業には一定の技術と労力が必要ですが、オープンソースの力を借りて、より多くの環境でVZエディタを利用できるようになることが期待されます。
興味のある方は、GitHubリポジトリを参照し、ソースコードを確認してみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?