勉強会でC++ Builder
高木です。おはようございます。
先日の土曜日は月例の勉強会でした。
弊社では原則第3土曜日の午後に勉強会を開催しています。
参加希望者のみが対象になりますが、土曜日ですので休日出勤の扱いになりますよ。
そんな勉強会ですが、毎回いろいろなテーマを扱っています。
今回は今月入社した新人も参加するということで、あっさり目のテーマにしました。
好きな開発環境を使ってストップウォッチを作るというのが今回のテーマです。
見本として、まずは私がサンプルを作ってみました。
そんなに難しい者にしても仕方がないので、あっさりしたものになっています。
使用した開発環境は、以前書いたようにVisual Basic.netです。
新人はハンデとして勉強会の前からすでに取り組んでいます。
使用している開発環境はC#でWinFormsを使っています。
新人はクニロボにも挑戦しながらなので、ストップウォッチばかりをやっているわけではありません。
正直もっと時間がかかるかと思っていましたが、予想に反してはかどっているようです。
ストップウォッチの機能としては勉強会の前日に終わってしまっていました。
あとはボタンを丸くできないとのことなので、勉強会以降はその部分に挑戦することになります。
ほかには、JavaScriptとHTML5で実装した参加者もいました。
これは手元に画像がないので貼れませんが、機能的には一通り実装できていたようです。
見本では秒針だけだったのですが、独自の拡張しようとして分針も実装していました。
最後に私ですが、見本では慣れないVisual Basic.netを使って1時間ちょっとで作ることができました。
実際にはやっていませんが、C#ならもっと早くできていたと思います(30分程度はかかったでしょうか)。
馬詰からはCで作ってくれといわれていましたが、Cで作っても面倒なだけで面白くないので、今回は最近バージョンアップしたばかりのC++ Builderを使うことにしました。
C++ Builderは20年以上前に少し触ったぐらいで、正直いってもう何も覚えていません。
正確にいうと「何も」ではありませんね。
イベントハンドラが仮想関数ではなく、privateな非静的メンバ関数だったので「あれ?」っと感じたのは記憶にあります。
関数のコーリングコンベンションが__fastcallだったのも覚えています。
C++に独自拡張としてプロパティ機能が追加されていたことも覚えています。
覚えているのはその程度です。
勉強会が始まって最初の30分ぐらいは、プロジェクトの作り方に始まり、IDEの使い方がさっぱり分からないので戸惑いました。
図形や文字の描画の仕方、色の付け方なども全然分からないので、都度調べながら進めました。
イベントハンドラを追加しても、何の編集もせずに保存すると消えてしまう振る舞いには面食らいました。
ほかには、エディタもかなり手間取りました。
これは慣れの問題だと思いますし、どこかで設定変更ができる可能性もあるのでしょうが、カーソルの移動の仕方が普段使い慣れているエディタとはかなり違うのです。
また、インテリセンス風の入力補完が非常に遅く、調べながらでも待っている間に入力できてしまいます。
私のPCはそんなにスペックは低くないはずです(ノートPCですが、第8世代のi7でメモリ32GB載せています。ストレージもSSDです)。
ときどきフリーズしたようにキー入力を受け付けなくなるケースも多発しました。
ifとかforと入力すると、勝手に後続の丸括弧や波括弧まで入力されてしまう「大きなお世話機能」も邪魔以外の何モノでもありませんでした。
とくにforは、勝手に
1 2 3 | for (i = 0; i < 10; i++) { } |
と入力されてしまう有様でした。
C++は使い慣れているので何の抵抗もありませんでしたし、フレームワークであるVCLは、これまでまともに使った経験はないですが、まあどうにかなります。
一番困ったのはやはりIDEのポンコツさでした。
エディタの文字を拡大しようとしてCtrl+マウスホイールを試しますが、画面がスクロールするだけです。
どうやら、エディタの文字を拡大縮小するには、Ctrlを押しながらテンキーの+または-を使うようです。
テンキーがないノートPCではそんなの使う気が起きません。
そんなこんなで、およそ2時間半かけてどうにか完成させることができました。
コンパイラをC++17に対応させるとかは先でもいいので、IDEをもっとマシなものにして欲しいというのが正直な感想でした。
ずっと、DelphiやC++ Builderを使い続けているユーザーにとっては、昔から変わらないユーザーインタフェースのほうがよいのでしょうけど。