既報の通り、C++Builder(および Delphi)にはバッファーオーバーフロー脆弱性がある。C++Builder XE6 で報告されているが、実際には、すべてのバージョンで影響がある。
対応策が公開されているように見えるが、実は、俺が使っている C++Builder XE3 Starter Edition はその方法では修正されない。エンバカデロのサポートからは XE7 を買ってくれと言われたので、つまりは修正するつもりがないということだ。1 年半前まで販売していた製品の欠陥を放置するなんて、ずいぶん酷い話である。
今後どうするか。いくつかの選択肢を検討しているが、どれも一長一短で困った。
しかし、1 年半後に XE7 の欠陥が出た場合は、今回同様放置されることが予想されるため、一時しのぎにしかならないとも言える。一時しのぎに数万円は割に合わないだけでなく、欠陥が出る度に費用がかさむ構図となる。短期的には良い選択肢だが、長期的には下策。
そもそも、欠陥が嫌なら新しいの買えというのは、悪徳商法の香りがするが、消費者庁的にはアリなのだろうか。C++Builder は 15 年以上愛用してきたシリーズなので(初めて使ったのはたぶん初代か XE じゃないほうの 3)、思い入れはあるのだが……。
C++Builder と同じく、言語が C++ なので、比較的乗り換えやすいと推測される。
しかし、価格が 6 万円と高いだけではなく、ライブラリが MFC というのがまた使いづらそうである。というかきっと使いづらい。そもそも Visual Studio(当時は別の名前だったと思うが)が使いやすかったら、C++Builder 使ってなかったし……。
Linux の GUI というと重くてダサいという悪いイメージしかなかったが、最近の Qt は、Windows API を直接制御しているので軽くなってきているようだ。
フリーなのでお金がかからず、また、言語も C++ が使えて良い。
難点は、統合開発環境にイマイチ RAD 感がないこと。また、ライセンスが LGPL なので、(ダメだと確定している訳でもないようだが)ライブラリと静的リンクしない方が無難となり、配布ファイルがやたら増えて分かりづらくなる。日本語のドキュメントも少ない。
豊富なライブラリを擁する .NET 環境において主役に位置づけられているので、やれることは多いだろう。
問題は、俺が C# を全く知らないことで、1 から学習しなくてはならないので、習得までの労力が多大であること。
また、ユーザー環境に .NET が必要となるので、ユーザーさんに .NET をインストールしてもらう手間が生じる。
そんな中、気持ちとしては C# に傾きつつある。これを機に新しい言語に挑戦してみようか的な感じで。
いろいろ検証しなくてはいけないので時間かかるけど……。
対応策が公開されているように見えるが、実は、俺が使っている C++Builder XE3 Starter Edition はその方法では修正されない。エンバカデロのサポートからは XE7 を買ってくれと言われたので、つまりは修正するつもりがないということだ。1 年半前まで販売していた製品の欠陥を放置するなんて、ずいぶん酷い話である。
今後どうするか。いくつかの選択肢を検討しているが、どれも一長一短で困った。
選択肢 1:XE7 を買う
2 万円の費用がかかるが、今までと同様の開発環境を使えるのがメリット。プロジェクトの修正が最小限で済むため、労力的には一番楽。しかし、1 年半後に XE7 の欠陥が出た場合は、今回同様放置されることが予想されるため、一時しのぎにしかならないとも言える。一時しのぎに数万円は割に合わないだけでなく、欠陥が出る度に費用がかさむ構図となる。短期的には良い選択肢だが、長期的には下策。
そもそも、欠陥が嫌なら新しいの買えというのは、悪徳商法の香りがするが、消費者庁的にはアリなのだろうか。C++Builder は 15 年以上愛用してきたシリーズなので(初めて使ったのはたぶん初代か XE じゃないほうの 3)、思い入れはあるのだが……。
選択肢 2:Visual Studio Professional を買う
Visual Studio Express は C++ での RAD 開発ができないが、Professional なら RAD 開発ができるようである。C++Builder と同じく、言語が C++ なので、比較的乗り換えやすいと推測される。
しかし、価格が 6 万円と高いだけではなく、ライブラリが MFC というのがまた使いづらそうである。というかきっと使いづらい。そもそも Visual Studio(当時は別の名前だったと思うが)が使いやすかったら、C++Builder 使ってなかったし……。
選択肢 3:Qt を使う
Linux 由来の GUI ライブラリである Qt を使うというのも一つの手。Linux の GUI というと重くてダサいという悪いイメージしかなかったが、最近の Qt は、Windows API を直接制御しているので軽くなってきているようだ。
フリーなのでお金がかからず、また、言語も C++ が使えて良い。
難点は、統合開発環境にイマイチ RAD 感がないこと。また、ライセンスが LGPL なので、(ダメだと確定している訳でもないようだが)ライブラリと静的リンクしない方が無難となり、配布ファイルがやたら増えて分かりづらくなる。日本語のドキュメントも少ない。
選択肢 4:C# を使う
Visual Studio Express に含まれるため、フリーの RAD という意味では最有力候補の 1 つ(もちろん VB の方がメジャーだが、さすがに Basic はちょっと)。豊富なライブラリを擁する .NET 環境において主役に位置づけられているので、やれることは多いだろう。
問題は、俺が C# を全く知らないことで、1 から学習しなくてはならないので、習得までの労力が多大であること。
また、ユーザー環境に .NET が必要となるので、ユーザーさんに .NET をインストールしてもらう手間が生じる。
というわけで
手放しでこれだ、といえる選択肢がない。そんな中、気持ちとしては C# に傾きつつある。これを機に新しい言語に挑戦してみようか的な感じで。
いろいろ検証しなくてはいけないので時間かかるけど……。