ふんわりした生活

本を読んだり仕事でやってみたことなどの日常から、ふんわりと気づきなどを書いていきます

Windows10にSmallBasicがストアアプリとしてやってきた

先日、窓の杜だったか(いや、Microsoftのブログだったかも)でSmallBasicがWindows10のストアアプリとしてリリースされるというのを見た。実際にストアで見てみるとSmallBasicがそこにあった。

forest.watch.impress.co.jp

channel9.msdn.com

かなり以前に、もう5年以上前だったと思うが何かに利用できないかと思って調査のためインストールして使ってみていたことがあった。そこで、子供向けにプログラミングを学ぶためのツールとして最適だったりして、と思い早速Windows10のストアアプリ版をインストールしてみた。

www.microsoft.com

ストアアプリなので、ストアからインストールすればいきなり利用できる。昔は単独のインストーラをダウンロードしてきてからインストールしていたので、Windows10ならめちゃくちゃ簡単になっている。なお、以前のSmallBasicをインストール済みの場合はアンインストールするように書いてあった。なにかしら競合するのだろう。

起動してみると、そこには昔と変わらない姿のSmallBasicのIDEがあった。なんだ、見た目が昔のままかよ…

久しぶりに起動してみたので、satoyama-editorをSmallBasicでつくってみた。 f:id:m0t0k1m0t0k1:20170413004927j:plain こういうなんの機能もないアプリだと環境が変わってもガンガンつくることができるので、ちょっとやってみるのにとてもいい。

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つ使えないのも意外とつらかったし。