2 ポイント 投稿者 GN⁺ 2024-11-15 | 1件のコメント | WhatsAppで共有
  • Avalonia Visual Basic 6 は、Avalonia を使って C# でクラシックな Visual Basic 6 IDE と言語を再構成したトイプロジェクト
  • Web 版はブラウザで開くことができ、デスクトップ版も .NET 9.0 ベースでビルド可能
  • 主な機能は ビジュアルデザイナー、VB6 互換形式でのプロジェクト保存・読み込み、プロジェクトの実行、限定的な VB6 言語サポート
  • ブラウザ版には .NET 9.0 が必要で、デスクトップビルドは Directory.Build.props を修正すれば .NET 8.0 も利用可能
  • Visual Basic の名称、アイコン、グラフィックの権利は Microsoft Corporation にあり、このプロジェクトに商用目的はない

プロジェクト概要

  • Avalonia Visual Basic 6 は、クラシックな Visual Basic 6 IDE と言語を C# および Avalonia で再構成したプロジェクト
  • 商用目的のない fun, toy project として紹介されている
  • Visual Basic の名称、アイコン、グラフィックに関するすべての権利は Microsoft Corporation にある
  • Web 版は ブラウザで実行 できる

対応機能

  • Visual Designer を提供
  • プロジェクトを VB6 互換形式 で保存・読み込みできる
  • プロジェクト実行機能を提供
  • VB6 言語サポートは 限定的

デスクトップ版のビルド

  • 通常は .NET 9.0 が必要
  • デスクトップ版は Directory.Build.props を修正すれば .NET 8.0 を使用できる
  • ブラウザ版には .NET 9.0 が必要
  • デスクトップのビルドコマンドは次のとおり
dotnet build AvaloniaVisualBasic.Desktop/AvaloniaVisualBasic.Desktop.csproj

Antlr4 エラーと Java

  • Antlr4 errors が発生した場合、Antlr4BuildTasks ライブラリが Java を自動ダウンロードできなかった可能性がある
  • この場合は Java を手動でインストール すると問題が解決することがある

デスクトップ配布

  • IDE プロジェクトとランタイムをそれぞれ publish する必要がある
dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/
dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/standalone/
  • 配布後は次のファイルを実行できる
./bin/AvaloniaVisualBasic.Desktop

使用されたプロジェクトとリソース

1件のコメント

 
GN⁺ 2024-11-15
Hacker News の意見
  • 3日前に投稿された関連スレッド: https://news.ycombinator.com/item?id=42105869 — コメント224件
  • なんてことだ、これはどうしてもコメントせずにいられない。子どもの頃にプログラミングを学んだ方法がまさにこれだった
    小学校の本棚で「Write Your Own Adventure Programs」(1983 - Usborne: https://colorcomputerarchive.com/repo/Documents/Books/Write%...)を見つけたのだが、コードはBASICで書かれていて、当時の家にはまともなコンピュータがなかった
    数年後にVisual Basicを見て、似たようなものだろうと思ったが、ある程度は当たっていた。最初は学ぶための本がなかったので、メニューやボタンを全部押して機能を確認し、ダイヤルアップであらゆるサードパーティ製VBフォームコントロールをダウンロードしてFormに放り込み、何をするものか見ていた
    最終的にはコピー&ペーストと修正を繰り返して、円の面積を計算するような宿題支援ツールを作ったし、時計の横の通知領域アイコンを表示したり、ウィンドウを隠してバックグラウンドでうるさい音を鳴らしたりするいたずらプログラムも作った。ただ、友人のコンピュータにインストールしようとすると、必要な.dllがフロッピー1枚に収まらず、よく失敗した
    もどかしいこともあったが、当時なら高価だったはずの機器を親がかなり自由に触らせてくれたおかげで、こういう形でプログラミングを学べたのは大きな幸運だったと思う
    チュートリアルでさえ当時はもっと面白かった。「hypnoMan37のWindowsレジストリチュートリアル!!! HEyyeyeyy Guuyzs :-)))) EFNetの俺のIRCチャンネル #blabla に来い! まずRegistryCreateNewKey32(...)を呼び出して…」みたいな感じで、当然MSDN CDもなかった
    コードキャンプ式の学習のほうがずっと効率的だろうが、比べるとあまりに味気ない。初心者を退屈で死にそうにさせることに伴うコストは、かなり大きいのではないかと思う
    • VB6で似たような経験をしたが、出発点は逆だった。BASICの本ではなくVB.NETの本を読んでいた
      初めてVisual Basicに触れたのはMS WordのVBAで、開いてみるとコーディングする場所だということは分かったものの、何を入力すればいいのかはまったく分からなかった。当時はプログラミング言語を一つも知らなかった
      後になって書店でVB.NETの本を見つけ、うれしくてすぐにVBAで真似してみたが、コードがまったく実行されず、とても落ち込んだ。最後にもう一度だけ試して、だめなら諦めようと思ったところ、幸い実行できた
      どうやら自分のコンピュータのMS Word VBAはVB 6ベースで、本はVB.NETの本だったため、コードが少し違っていたのだ
      それからVB 6関連の本を見かけるたびに買い、親戚のCDの山からVB 6 IDEのインストーラを偶然見つけてインストールした。今でもVB 6のGUIビルダーは、自分が使った中で最高だと思っている
    • ダイヤルアップで入手できるあらゆるサードパーティ製VBフォームコントロールをダウンロードしてFormに入れてみた、という部分が本当に懐かしさを刺激する
      地元の図書館にも「Visual Basic How-To: The Definitive Vb3 Problem Solver」があり、何度も延長しすぎて、もう借りられないと言われた。Out of this World 序盤の「Peanut Computer」インターフェースを元に、実際に動作するインターフェースを作った記憶が残っている
    • 自分の子どもたちにも同じ経験をしてほしいのだが、今はBASICなしでどうすればいいのかよく分からない。単にWYSIWYGでプラットフォームゲームを作らせるツールにはあまり惹かれない
      何かいいアイデアはあるだろうか?
    • 自分の出発点は市立図書館にあったChristopher Lamptonの「How to Create Adventure Games」(1986)だった。父のコンピュータにはQBASICがプリインストールされていたので、BASICコードを自分で入力した
    • 子どもの頃にまったく同じ経験をした。親の本棚でGW-BASICの本を見つけ、WindowsにQBASICが含まれていて、その本のサンプルコードの大半が動くと分かってから、すっかりのめり込んだ
      退屈なときはMS-DOS 6のマニュアルを最初から最後まで読むのが好きだった
      インターネット接続が一般的でなかった時代には、ドキュメントとサンプルコードの品質が印象的だった
  • 本当に刺激的なビジョンだが、2分ほど使ってみると、小さな機能がかなり抜けている。少なくともWebビルドではそうだ
    ボタンラベルのアンパサンドがショートカットキーを作らない。たとえば&GoでGに下線が付かない
    本物のVB6ではLabelコントロールを置いてそのままタイプすると内容が変わったが、ここでは先に入力フィールドへフォーカスを当てる必要がある。「Caption」ヘッダーをクリックしてもだめで、入力列の中をクリックしなければならない
    忠実度を高めるなら、GUIデザイナーでコントロールを選択したとき、Propertiesグリッドの1行が常に強調表示されているべきだ。LabelではデフォルトがCaptionで、デフォルトプロパティのないコントロールではNameだったと記憶している
    別のコントロールへ切り替えたとき、現在選択されているプロパティと同じ名前のプロパティがあれば、VB6はその選択を維持していた。だから複数のコントロールのTagプロパティを、最小限のクリックで連続して素早く変更できた
    デバッグ、保存、ヘルプ、アドインのようなメニューがまだ実装されていないのは明らかだ。ブラウザで実行される「実行ファイル」を吐き出すBuildボタンが動作するなら素晴らしいだろう
    こうした細かい指摘は愛情から来ている ;-)
    • Avaloniaではショートカット文字は本来アンダースコア_だが、たった今&もサポートするよう更新を上げた :)
      保存は実際に動作する。ただしデスクトップだけで、しかもVB6と形式互換だ。全体的なサポートが限られているため互換性も限定的だが、もう少し改善する予定だ
      Buildも動作するが、デスクトップだけだ ;)
    • ボタンラベルのアンパサンドがショートカットキーを作らないのはVB固有の機能ではなくWindowsコモンコントロールの機能なので、見落としたのかもしれない
    • ブラウザで実行される「実行ファイル」を作るBuildボタンが必要なら、Jon AasendenのQuartex Pascalを見てもよい: https://quartexdeveloper.com/
  • こういうものから、どうやって現代のGUIツールキットに移ってきたのか、今でも理解できない

見た目も動作も本当に直感的

  • 慣れ親しんだ無難なウィジェットから離れ、ブランドを打ち出す、精巧で深くスタイリングされたデザインへ移行した。
    派手で特徴的なブランドに注力すると、新規ユーザーを引きつけるだけでなく、ほかへ移るときにより違和感や窮屈さを感じさせ、離脱も減らせることが明らかになった。ユーザー効率や機能差別化に注力していた以前の流れよりも、収益化しやすかった。
    技術もその流行を追い、スタイルのカスタマイズ、アニメーション、フォントレンダリング改善などに複雑性の予算を使い、作り手とユーザーが一緒に慣れていける標準デザイン言語を促進しようとする試みは放棄された。

  • Visual Studio の以降の全バージョンにも同じビルダーがある。小さな個人用アプリを作るとき、このビルダーを毎日使っている。昨日出た新しい Visual Studio 2022 でもほぼ100%同じ。
    実際、今のほうがよい。整列したりプロパティを変えたりするのが簡単になったからだ。ただしインターフェイスは同じで、文字どおり25年間変わっていない。
    たった今 VS2022 を起動して、60秒以内にこのアプリを作った: https://imgur.com/a/qHOCasJ

  • VB に惹かれた理由は2つあった。ひとつは GUI を直接描けること。当時の基準で「ソフトウェアらしく見える」ソフトウェアを最小限の努力で作れたので、本当に格好よく、力を与えられるような体験だった。
    もうひとつは、GUI を作るには VB の代わりにクラスライブラリと格闘しなければならなかったこと。当時、OOP は私のような趣味プログラマーには完全に難解で、Windows や Mac で最小限の「hello world」アプリを作るだけでも、何ページにもわたる手順が必要だった。
    その後の数十年で高品質な GUI への要求は高まり、同時に小さな GUI をコードで作るために必要なプログラミング技術も、より一般的になったように思う。言語が段階的に簡単にしてくれたおかげかもしれない。
    今では、自分に必要なレベルの GUI ならそのままコードで書き、私の場合は Tkinter に適当なデフォルト配置をさせるほうが満足できる。私の犠牲者たち、いやユーザーたちは、それ以上を求めなかった。

  • これは macOS や iOS アプリで使う Xcode の Interface Builder 方式にかなり似ている。
    ほかの人も言っているように、画面サイズ、レイアウト、アニメーション、タッチ操作などをサポートしなければならなくなるまではうまく機能する。

  • デスクトップネイティブアプリとブラウザベースのアプリをどちらも作ってみると、学習曲線を越えた後は、コードやマークアップでウィジェットのレイアウトをテキストとして書くことに効率があると思う。
    Qt や wxWidgets にも自動レイアウト機能があると理解しているが、C++ の上でやるので体験はあまり滑らかではないかもしれない。これまでのところ Visual Studio のフォームデザイナーは手動のピクセル配置を要求するので、GUI が複雑になるほど退屈になる。
    コントロールをドラッグ&ドロップする方式は学びやすく初心者にはよいが、コントロールが12個ほどになるだけで、手動でドラッグし、合わせ、サイズ調整するのに使う時間が目立ってくる。マークアップベース、または手続き的に生成される GUI では、こうした配置計算を代わりにやってくれる。

  • 1995〜2001年ごろの Windows UI は本当にWindows の頂点のようだった。
    とてもくっきりしていて、すっきりしていた。当時の Visual C++ と Visual Basic は完璧ではなかったが、とにかく仕事を終わらせてくれた。
    XP がすぐ先にあり、その後は下り坂だったと思う。

    • クリーンインストールした Windows 2000 に勝るものはない。
    • XP、Vista、7 でもクラシックモードを使えばその雰囲気を出せる。
  • 少し話題から外れるが、これは初めて聞く Avalonia で作られている。使ったことがある人はいる? 単一の .NET コードベースで美しいクロスプラットフォームアプリケーションを作れるという約束は印象的だが、実際にもそれだけのことをやれているのか気になる。
    https://avaloniaui.net/

  • これを見て本当にうれしい。
    私は Visual Basic の「ビジュアル」側を作った初期開発者の一人だった。
    当時の名前は Ruby で、プログラミング言語の Ruby とは無関係だった。Windows 3.0 用のカスタマイズ可能なシェルになる予定だった。個々の Windows ユーザーがビジュアルエディタと「gizmos」を使って自分だけの個人用デスクトップ環境を作るという構想で、この gizmos は後に、はるかにつまらない名前である「controls」と呼ばれるようになった。
    Microsoft はおそらく賢明にも、これはエンドユーザー向けツールよりも開発者向けツールに適していると判断し、Ruby と Basic を組み合わせて Visual Basic を作った。
    もし VBX カスタムコントロールを作ったことがあるなら、あのひどい API は私のせいにしてよい。
    そして「fire an event」という表現がどこから来たのか気になるなら、Retool の VB 記事で答えが見つかる: https://retool.com/visual-basic
    コンテンツ注意: 薬物関連の表現がある。いわば「何でも聞いてください」。
    少し厚かましい自己宣伝をすると、今仕事を探している。IBM で私たちのチームは最近のレイオフでかなり大きな打撃を受け、唯一の専任顧客だった McDonald's を失った。
    いろいろな言語やフレームワークをかなり知っているが、すべてを知っているわけではない。そんな人がいるだろうか?
    顧客のニーズを理解するために一緒に働くのが好きだ。すべてのプログラマーと同じくコーディングも楽しむが、コーディングは顧客を幸せにするための手段にすぎない。
    興味があればここで見つけられる: http://linkedin.geary.com/, http://resume.geary.com/

    • こういう投稿があるから、このサイトにまた来てしまう :-)
      上で熱のこもった長いコメントを書いた者だ。Zoom で1時間ほど座って当時の話を聞き、その動画をここに投稿したら、みんな喜ぶと思う。
      インタビュー経験もまったくなく、メディアチャンネルもないが、面白い質問をしようと最善を尽くす。興味があればメールを送ってほしい。私のプロフィールで見つけられる。
    • 私が初めてプロのソフトウェア開発に入ることを可能にしてくれてありがとう。小さなユーティリティを作って仕事を片付けるのを本当に簡単にしてくれた。
    • SQLWindows も作っていたとは驚きだ。畏敬の念を覚える。
  • MS Dialog Editor とも関係があるのかな?

  • コードを掘ってみると、作者が見栄えのいいデモを作るために必要最小限だけ実装していることが分かる
    たとえばサポートされている関数は MsgBoxInputBox の2つだけ: https://github.com/BAndysc/AvaloniaVisualBasic6/blob/383a005...
    それでもコミット履歴を見ると、4日でこれほど複雑なものを作ったという点は印象的。完全な IDE に発展させるうえでも良い出発点になっている
    構文ハイライトやオートコンプリートのような高度な機能が欠けているのは残念。実行してはいないが、macOS を使っているので、デバッガもないだろうと思う
    自分の子どもの頃の話をすると、開発の旅は最初 Turbo Pascal から始まり、その後 Delphi 7 に移った。Delphi は VB6 とかなり似ていて、フォームにコンポーネントをドラッグ&ドロップしてアプリを設計していた
    最初に作ったアプリは Notepad++ のクローンで、コードはまだ残っているが、あまりにひどくて見るたびに恥ずかしくなる

    • 構文ハイライトは実際にはある。GIF を録画したあとに追加され、Web 版で確認できる。オートコンプリートは、うーん、そのうちやるかもしれない :)
      VB6 言語サポートも限定的。おもちゃ、あるいは概念実証に近いものだったが、好意的な反応を見ると、もっと機能を実装したくなる。特に保存形式が VB6 と互換だからだ。まだおもちゃではあるだろうけど、実際に動くおもちゃにはできるのでは?
  • ブラウザで Web 版を開ける: https://bandysc.github.io/AvaloniaVisualBasic6/

    • Firefox と Chrome では非常に速いのに、なぜか Microsoft Edge(Chromium)ではほとんど固まったように遅くなる
      追記: 原因が分かった。Edge の Enhance your security on the web オプションが大きく遅くしている。このオプションをオフにすると性能問題は解消する
  • 最近のアプリケーションでは フレームコンポーネント が本当に恋しい。みんな太字の見出しと末尾の少しの余白があれば、項目をまとめるには十分だと思っているようだ

    • HTML にはその見た目の fieldset がある。だが、あまりにも多くの CSS フレームワークがそれを台無しにしている。自分はあの見た目が実際に好きだ
      確かめたいなら、空の HTML ファイルに次のものを入れて、どうレンダリングされるか見ればよい: Frame1, HTML, CSS, JavaScript
    • その通り。GroupBox は不可欠な UI 装飾なのに、最近のツールキットにはないので自作している。コントロール群全体がオン/オフ可能な機能に関係している場合は、枠線上のラベル部分にチェックボックスも置く。昔の多くの UI では標準のように使われていて、とても分かりやすかった
      関連して、消えてしまったが重要なものがもう一つある。きちんとした TabView だ。誰が最初に、ただのボタンが横一列に並んだものを TabView だと言い張ったのかは知らないが、おそらく Apple だろうし、あれはひどい。GroupBox がない場合と同じで、下のコントロール群が選択中タブのビュー上にあるという境界を示さないからだ。当たり前の話だと思うのだが