Windows10にSmallBasicがストアアプリとしてやってきた
先日、窓の杜だったか(いや、Microsoftのブログだったかも)でSmallBasicがWindows10のストアアプリとしてリリースされるというのを見た。実際にストアで見てみるとSmallBasicがそこにあった。
かなり以前に、もう5年以上前だったと思うが何かに利用できないかと思って調査のためインストールして使ってみていたことがあった。そこで、子供向けにプログラミングを学ぶためのツールとして最適だったりして、と思い早速Windows10のストアアプリ版をインストールしてみた。
ストアアプリなので、ストアからインストールすればいきなり利用できる。昔は単独のインストーラをダウンロードしてきてからインストールしていたので、Windows10ならめちゃくちゃ簡単になっている。なお、以前のSmallBasicをインストール済みの場合はアンインストールするように書いてあった。なにかしら競合するのだろう。
起動してみると、そこには昔と変わらない姿のSmallBasicのIDEがあった。なんだ、見た目が昔のままかよ…
久しぶりに起動してみたので、satoyama-editorをSmallBasicでつくってみた。 こういうなんの機能もないアプリだと環境が変わってもガンガンつくることができるので、ちょっとやってみるのにとてもいい。
GraphicsWindow.CanResize = 0 GraphicsWindow.FontName = "Meyrio UI" GraphicsWindow.FontSize = 16 title = "satoyama editor" Init() button = Controls.AddButton("clear", GraphicsWindow.Width - 140, GraphicsWindow.Height - 60) textbox = Controls.AddMultiLineTextBox(20, 48) Controls.SetSize(button, 120, 40) Controls.SetSize(textbox, 540, 320) Controls.ButtonClicked = OnClick Controls.TextTyped = CountChar Timer.Interval = 600 * 1000 Timer.Tick = OnChime Sub OnChime Sound.Play("C:\Users\path\to\chime.mp3") EndSub Sub OnClick if Controls.LastClickedButton = button then Controls.SetTextBoxText(textbox, "") Init() EndIf EndSub Sub Init GraphicsWindow.Title = title + " - chars: 0" EndSub Sub CountChar If Controls.LastTypedTextBox = textbox Then editor = Controls.GetTextBoxText(textbox) count = Text.GetLength(editor) GraphicsWindow.Title = title + " - chars: " + count EndIf EndSub
いま数えてみたら、40行ないくらいで記述することができた。めちゃくちゃ短い。
特徴
このSmallBasicの良いところは3つある。ひとつめは、Basicっぽい構文だけどかなり簡略化してあって覚える必要がほとんどないところ。ほとんどはIDEが自動補完してくれるのでビジュアルプログラミングのごとく内容にだけ集中することができる。
ふたつめの良いところは、このままコンパイルして実行形式にすることができるというところ。一度実行しておけば実行形式ファイルが完成するのでSmallBasicライブラリ「SmallBasicLibrary.dll」と一緒に配布したら利用できる。それにウェブへパブリッシュすることもできる。
三つ目の良いところは、なんだかなーと思ったらVisualStudioへ昇格することができるということ。もっと込み入ったことがしたくなったらということだが、かなりのことはSmallBasicでできる。
つらいところ
久しぶりにつくってみて、こんなのだったっけ??と戸惑ったところも結構あった。.Netのつもりで使おうとすると圧倒的に利用できるメソッドが限定されているということ。もっと細かいのできないんだろうかーと思うが、入門者向けでなくなるから排除してあるのだろう。それから、ラベルコントロールがないということ。テキストボックスコントロールはあるが、読み取り専用にできない。グラフィックウィンドウというフォームオブジェクトがあるが、ここへ直接文字を書くと変更するときにフォームの内容を消去する必要があるのでつらい。結果的にウィンドウのタイトル部分を利用するということにしてしまった。
しかし先ほどのコードだとかなりの確率でクラッシュします。どうもタイマーまわりのようなんだが、Timerには制御できるものがあまりないのでどうしたものやら。タイマーで音を鳴らすようにしているのがまずいのかもしれないけど。
そういえば、数秒ごとの保存は実現できていない。書き出しする機能があったっけ??
SmallBasicでタートルをつかったお絵かきも楽しんだので、実務用というよりはプログラミング学習用ということでつかいましょう。タイマーが同時に2つや3つ使えないのも意外とつらかったし。