「C#」 カテゴリーの記事です。

ウェブサイトをリニューアルしました(ノーサポート宣言)


 

HiBARA Softwareロゴ

なぜ突然リニューアルを? ヒマになったから(笑)。

ここ二年余り、サイトの更新はおろか、ソフトウェアの更新さえしておりませんでした・・・既知のバグも放置されている状態で、本当に申し訳ありません。

とはいえ、このサイトは、僕の個人的なサイトで、すべて手弁当でやってます。サーバ費用、運営コスト、ソフトウェアを更新していく労力。それはすべて使っていただている方の感謝があってこその原動力だったわけです。

ところが、最近は「バグ直すの当たり前だろ」や「今の時代、SSL(https)が当たり前なのでは?」といったメール、「日本年金機構がexeを安易に扱っていた。アタッシェケースもexeで出力できるけど対応しないのか!?」といったTwitterなど、もはや関係あるのやら、ないのやら、苦情ばかり。もう勘弁願います!

というわけで、本日より、

「ノーサポート」を宣言します!

メールは原則、返事しません(ヒマなときは返すこともあります)。基本、対応はせず、ユーザーさんには自己解決を望みます。そのためにオープンソースになっているのですから。

ただ、各地方自治体や、企業さんで、組織的に導入されている方々には不安を与えるかもしれません。それらは、サポートを有償で提供するという仕組みを考えています。こちらは別途ご相談いただければと思います。

さて、今後の予定ですが、ざっと行う順番を上げておきます。

  1. 現行の「アタッシェケース」のバグ修正。
  2. 新たに「アタッシェケース」をVisual Studio C#への移植
  3. 「MarkDown#Editor」のバグ修正とバージョンアップ
  4. 「暗号化ツール(ソリューション)」の提供

(2)については、すでに着手していて、暗号・復号までできています。早めにGitHubへ上げていこうかと考えています。

すでに僕は、C++Builderを見限っており、よりフォークやプルリクエストがしやすいように、誰でもが使えるツール上のプロジェクトに移したいという意図があります。

(1,3)はすみません、けっこうバグを残している状態なので、早めに対処して公開します。

(4)は、前の「有償サポート」と絡みますが、商用目的で暗号化モジュールを組み込みたいという方向けに、オープンソースで提供しようという試みを考えています。ファイルフォーマットはアタッシェケース形式ではなく、独自にカスタマイズできるようにしたいと思っています。

基本的にMITライセンスでの配布予定ですが、導入にあたってサポートが必要ならば、有償にて承るということになるでしょうか。

他にも作りたいソフトは山ほどあるのですが、とりあえずは二年ぶりということで、まずは順番に、優先度を決めて、やっていきたいと思います。

では今後ともよろしくお願いいたします。

MicrosoftのBizSparkの承認・登録されました。


 

BizSparkロゴ

今日、Microsoftさんから「BizSpark」の承認・登録された旨のメールを頂戴しました。

BizSparkとはなんぞ?という方は、コチラ↓
https://www.microsoft.com/ja-jp/ventures/BizSpark.aspx

ようは、Microsoftさんが提示する、「一定の条件」をクリアしたベンチャー企業には、Microsoft製品のいろいろを、無償で使用することができるという制度です(ただし、有効期限は3年です)。

実はこれ、以前にQiitaさんにお呼ばれてして、お話を伺ったとき、この「BizSparkが絶賛役立っている」と聞いてはいたのですが、企業に勤める一介のサラリーマンの僕には無縁だろうと思っていました。

でも、よくよく考えてみれば「僕も従業員一人のベンチャー企業じゃね?」と思い立ち、友人のフリープログラマーに相談すると「簡単にBizSparkを使えるらしいよー」ということを聞いて、さっそく応募してみることに。

ところが、ぜんぜんお手軽じゃねー(笑)。

申し込みページは英文です。もしや英語でのやりとりがあるのか・・・会社でアプリのリジェクトくらって、Apple様との交渉役として、なんの役にも立たなかった、僕のジャパニーズイングリッシュが火を噴くぜ、と思ったら、丁寧な日本語メールでのご返信があり。

とはいえ、審査あります、とのこと。ええー

僕の場合は、「具体的にMicrosoft製品が、御社のどのようにお役立てするのか」ということを説明してほしいという旨のメールをいただきました。

もう後には引けないので、震える指先で「アタッシェケースという暗号化ソフトがあって、それをC#に移植したり、オープンソース化に貢献したり・・・ごにょごにょ」っと書いて返信したたら、またもすぐに日本語メールが来て、「次のアンケートにお答え下されば承認されます」とのこと。

ホント? トラップじゃないよね? 二問目の7を選んだら、はい、ドボンとか、イヤですよ? と思いつつ、正直に書いて送ったら、次の日に呆気なく承認、登録が下りました。

まだ全部見切れていませんが、ほぼすべてのマイクロソフト製品が使えます。Mac Office 2011も使える・・・

これすごくないですか。ベンチャーはもちろんですが、自営業の方も、もし条件が当てはまるようならば、ぜひ活用されてはいかがでしょうか。

 

C# エディタのシンタックスハイライター処理を速くする方法


今回は、Visual C# に含まれる RichEditBoxを使って、正規表現で指定したキーワードを引っかけて、
色を付けるという処理をいかに速く行うか?という話。

MarkDown#Editorで、実際にやってみたことを記事にしておきたいと思います。

前提として、僕は、卑下するわけではないですが、あまりたいしたプログラマーとは言えません。
ですので。最初からヒヨっているわけですよ。たとえば、

  • RTFフォーマットを直接ゴリゴリやらない。
  • そもそも文字列を独自描画したりしてエディタを一から作っちゃわない。
  • 無理はしない。

だから、ありあわせのRichEditBoxを使ってどうにかしたい。超楽したいのです。

(さらに…)

TextChangedイベントを使うと、IMEが勝手に確定しまうことがある


MarkDown#Editorを更新していて困った問題に遭遇。

Visual C# の RichTextEdit コンポーネントでは、英語なら、打ち込んだ文字がそのまま「確定」となりますが、日本語など2バイト文字はIME(FEP)を通して確定させます。

しかしながら、TextBox をはじめとした、RichTextEdit などは、キーを打ち込むたびに、TextChanged イベントが発生してしまう模様。

たしかに、独自にエディターを開発したり、日本語を含む多言語変換を開発したいという方には、この挙動でなくして、入力文字を取れません(KeyDownイベントや、KeyUpイベントなどで引っかけるという手もありますが)。

日本語サイトではなかなか解決できなかったのですが、以下の考察がたいへん参考になりました。

IMEで変換状態中でもTextBox.TextChangedが発生する – 泥庭
http://yone64.wordpress.com/2010/10/25/ime%E3%81%A7%E5%A4%89%E6%8F%9B%E7%8A%B6%E6%85%8B%E4%B8%AD%E3%81%A7%E3%82%82textbox-textchanged%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B/

テキストインプットするだけでも、TextChangedが複雑に発生しているんですね。図もちょーわかりやすい。

それ見て、なるほどー、うなりったり。

ただ、ここでは、System.Windows.Input.TextCompositionManagerクラスを使って解決を試みていますが、どうもTextCompositionManager.AddPreviewTextInputHandlerが、RichTextBoxをDependencyObjectとして認識してくれなくてうまくいかない(このページでの例はTextBoxクラスを使っている)。

うーん、こりゃ参ったぞ、と。

さらにググったりしてると、RichTextBoxの文字数を常に見ながら、キーが打ち込まれた回数を数え、一致したらTextChagendイベントを受け付ける、なんていう力技も散見したりして。

これもどうなんだろう・・・。文字数多くなってきたらちょいと面倒だぞ、と。

で、結局は、以下のサイトにどんぴしゃな質問と、回答のソースがあり、それを参考にして、RichTextEdit を独自に拡張する方法にしました。

Get text from richtextbox control without disturbing IME when input east Asian language
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/cefa5376-7912-47f6-b86a-197a211c2b70/

これを踏まえて、richEditBoxEx.csを改良。

詳しくは、GitHubにあるソースを参照ください。↓

https://github.com/hibara/MarkDownSharpEditor/blob/ver.1.2.1.0/MarkDownSharpEditor/RichTextEditEx.cs#L31-L159

まあ、改良、というかまんま頂いたんですけどね(笑)。

s