◀ANSI版開発トップへ
  • 4993 はじめまして&UNICODE化のこと
    • 4994 Re:はじめまして&UNICODE化のこと
      • 4998 Re2:はじめまして&UNICODE化のこと
    • 4995 RE: はじめまして&UNICODE化のこと
      • 5000 Re2: はじめまして&UNICODE化のこと
        • 5003 Re3: はじめまして&UNICODE化のこと
          • 5005 Re4: はじめまして&UNICODE化のこと
            • 5007 Re5: はじめまして&UNICODE化のこと
              • 5010 Re6: はじめまして&UNICODE化のこと
    • 4996 Re:はじめまして&UNICODE化のこと
      • 4997 Re2:はじめまして&UNICODE化のこと
      • 4999 Re2:はじめまして&UNICODE化のこと
        • 5002 Re3:はじめまして&UNICODE化のこと
          • 5008 Re4:はじめまして&UNICODE化のこと
        • 5004 Re3:はじめまして&UNICODE化のこと
          • 5006 Re4:はじめまして&UNICODE化のこと
            • 5009 Re5:はじめまして&UNICODE化のこと
              • 5011 Re6:はじめまして&UNICODE化のこと
          • 5012 Re4:はじめまして&UNICODE化のこと
            • 5013 Re5:はじめまして&UNICODE化のこと
        • 5016 Re3:はじめまして&UNICODE化のこと
    • 5014 Re:はじめまして&UNICODE化のこと
  • [4993] はじめまして&UNICODE化のこと kobake 2007年09月12日 03:13

    はじめまして。kobakeと申します。
    軽快で多機能なテキストエディタをオープンソースで提供していただき、感謝しております。
    今までユーザとして便利に使わせていただいておりました。

    先月、日本語以外のUNICODE文書を編集する機会があり、
    ちょうど良い機会と思い、個人的に勝手ではありますが、
    サクラエディタのUNICODE化をしてみました。
    自分が必要なところだけUNICODE化できれば、と考えながらソースをいじっていたのですが
    いじった箇所の波及、波及で、結果的にはソースの大半に手を付けることになりました。

    道理としては、あらかじめアナウンスした上で作業していれば、
    無用なコンフリクトも発生しなかったと思うのですが、
    アナウンスしておいて、後で「できませんでした」というのも、
    それはそれで迷惑をかけてしまうような気がして、
    アナウンスできずにいました。申し訳ありません。

    とりあえず、なんとなく動くようになったものが出来ましたので、
    サイト上に公開してみました。
    SVNリポジトリにソース修正を加えたものを、そのままZIPで固めただけです。
    オープンソース開発に公式に参加したことがなく、オープンソースの作法(?)のようなものを
    あまり理解していないため、何らかの不手際があえば、お教えいただけると助かります。
    http://mofmof.nsf.tc/soft/

    もし可能であれば本家サクラエディタのほうに取り込んでいただきたく考えています。
    ただ、変更がかなり大幅なため、単純にマージ、というわけにもいかなそうです。
    指針を示していただければ幸いです。

    いきなりの長文と、大掛かりなご検討をお願いすることになり申し訳ありません。
    よろしくお願い致します。
    • [4994] Re:はじめまして&UNICODE化のこと K.Takata 2007年09月12日 07:14

      ▼ kobakeさん
      > サクラエディタのUNICODE化をしてみました。

      個人的には、正規表現 DLL として、bregonig.dll の Unicode 対応版が使えるかどうか試していただけるとありがたいなと思ったりします。
      • [4998] Re2:はじめまして&UNICODE化のこと kobake 2007年09月12日 23:01

        ▼ K.Takataさん
        > 個人的には、正規表現 DLL として、bregonig.dll の Unicode 対応版が使えるかどうか試していただけるとありがたいなと思ったりします。

        既にUNICODE対応のDLLがあったのですね。調査不足でした。
        bregonig.dll、早速組み込んでみます。
    • [4995] RE: はじめまして&UNICODE化のこと げんた 2007年09月12日 08:24

      >とりあえず、なんとなく動くようになったものが出来ましたので、
      >サイト上に公開してみました。
      >
      >もし可能であれば本家サクラエディタのほうに取り込んでいただきたく考えています。
      >ただ、変更がかなり大幅なため、単純にマージ、というわけにもいかなそうです。
      >指針を示していただければ幸いです。
      まだきちんと見られていませんが,UNICODE APIは必要最小限で,内部の管理だけwchar_tにしたということでしょうか.
      印刷プレビューで落ちたりと不完全ではありますが,参考にさせていただきたいと思います.
      CEditViewに突っ込まれているfont, caret, point等がきちんとクラス化されているのがうれしいですね.

      あとはrastivさんのコメント待ちで...
      • [5000] Re2: はじめまして&UNICODE化のこと kobake 2007年09月12日 23:21

        ▼ げんたさん
        > まだきちんと見られていませんが,UNICODE APIは必要最小限で,内部の管理だけwchar_tにしたということでしょうか.

        言葉不足でした。申し訳ありません。
        あくまでもUNICODE文書の閲覧、編集、保存ができれば、という目的で、
        それに関連するであろう箇所のデータ実装のみをUNICODE化(文字列をwchar_tで管理)しました。
        けっこう関係ないところも「ついでに」UNICODE化されているところもありますが。

        プロジェクトごとUNICODE化せずに、データ管理のみをUNICODEにしているのは、
        こうしておけばWin98でも動くんじゃなかろうか、という期待も込もっていたります。
        (が、今Win98で実行を試したところ、謎のエラーで終了しました。。。)


        > 印刷プレビューで落ちたりと不完全ではありますが,参考にさせていただきたいと思います.

        ご報告ありがとうございます。
        多機能である故、まだまだチェックが行き届いていないところが多々あります。
        見つかったバグは随時つぶしていきます。


        > CEditViewに突っ込まれているfont, caret, point等がきちんとクラス化されているのがうれしいですね.

        ありがとうございます。
        まだまだ整理が済んでいないところが多く、お目汚しになる所も多いですが。。
        追々ちゃんとコメント及びドキュメントも整備します。
        • [5003] Re3: はじめまして&UNICODE化のこと ryoji 2007年09月13日 00:21

          >(が、今Win98で実行を試したところ、謎のエラーで終了しました。。。)
          MBCSコンパイルが通っても、明示的にW系APIを使っていたら9x系では動かないです。
          あ、MessageBoxWくらいは例外的にあるんだっけ。(^^;;;
          • [5005] Re4: はじめまして&UNICODE化のこと kobake 2007年09月13日 01:04

            ▼ ryojiさん
            > >(が、今Win98で実行を試したところ、謎のエラーで終了しました。。。)
            > MBCSコンパイルが通っても、明示的にW系APIを使っていたら9x系では動かないです。
            > あ、MessageBoxWくらいは例外的にあるんだっけ。(^^;;;

            以前、Win9x系でもW系APIが使えるという話を聞き、
            「けっこうなんとかなる」と勝手に考えていました(汗)。

            調べてみたらこんな文書が見つかりました。
            http://support.microsoft.com/?scid=kb%3Ben-us%3B210341&x=14&y=15

            結局サポートされているAPIの数は少ないので、
            W系API使いまくっていればすぐにこけるわけですね。。。
            • [5007] Re5: はじめまして&UNICODE化のこと げんた 2007年09月13日 01:12

              >結局サポートされているAPIの数は少ないので、
              >W系API使いまくっていればすぐにこけるわけですね。。。
              TextOutWがあるからUNICODEの表示も一応できるのかな...と思ってしまいますが,ryojiさんの指摘ではここに書かれているAPIでも信用してはいけないという話だったような...
              • [5010] Re6: はじめまして&UNICODE化のこと kobake 2007年09月13日 01:40

                ▼ げんたさん
                > TextOutWがあるからUNICODEの表示も一応できるのかな...と思ってしまいますが,ryojiさんの指摘ではここに書かれているAPIでも信用してはいけないという話だったような...

                なるほど。結局Win9xではANSI版にとどめておくのが良いということですね。
    • [4996] Re:はじめまして&UNICODE化のこと ラスティブ 2007年09月12日 17:54

       はじめまして。ラスティブです。

       オープンソース開発に公式に参加したことがなく、
      オープンソースの作法のようなものをあまり
      理解していとのことですが、サクラエディタ
      プロジェクトの場合は下記のページに詳しく書かれていて、
      どうもこれ以上のルールはないみたいです(たぶん):

      「開発参加方法」
      ・・・概要みたいなもののようです
      http://members.at.infoseek.co.jp/sakura_editor/developer.html

      「Subversion Repositoryの使用にあたって」
      ・・・SVN の運用ルールが書かれてあるようです
      http://members.at.infoseek.co.jp/sakura_editor/repositorymgmt.html

      もしご都合が許されるようでしたら、
      Sourceforge.net に開発者登録を行って、SVN アクセス権限を
      プロジェクトマネージャから頂いて下さい。そうすることで、
      公式ブランチによる検証を行うことができるようになります。
      ちなみに、ブランチを作る目的は・・・当方理解不足で
      詳しく説明できないのですけれど、あるパッチを前提とした
      パッチを作ることにあるとのことです(これもたぶん…)。
      詳しくは上記のページに書かれています。また、
      掲示板の過去ログなどは下記のページからダウンロード
      できます。

      「掲示板過去ログ保管庫 - SakuraEditorWiki」
      http://sakura.qp.land.to/?OtherDoc%2FIncmLogstock

       自分は、Unicode 化のリーダーとか書かれていたり
      しますが、実のところ“おまけ”ですので、
      ライセンスにできる限り則って、どんどんやっちゃって
      結構ですよん。

      # つーか人のこと気にしてたら、
      # そんなでかいパッチはコミットまでたどり着きません。
      # がんばってください!
      • [4997] Re2:はじめまして&UNICODE化のこと ラスティブ 2007年09月12日 19:19

        > ▼ ラスティブさん
        > > どんどんやっちゃって結構ですよん。

        これはまったく不適切な発言でした。。。
        不意を付かれてころんじゃいましたすみません。

        Unicode 化にあたっては、実は当たり前のことですが、
        ユーザーの要望と開発者の要望とに答えられるべく
        仕上げることを念頭に置いてください。
        (どうでもいいようでよくない問題として、
        クラス名のネーミングルールとかもあるようです。)

        特に文字コードのことについては、
        以下の記事に書いてる内容を基準にして頂くと幸いです。
        ただし、申し訳ありませんがまだドラフトの状態なので、
        変更される場合があります。

        http://sakura-editor.wiki.sourceforge.net/SJIS%E7%89%B9%E6%9C%89%E9%83%A8

        以上です。
      • [4999] Re2:はじめまして&UNICODE化のこと ラスティブ 2007年09月12日 23:03

         重要なことを言い忘れていました。
        Unicode 化は、tchar.h に対応する方針で
        足並みがそろっています…(よね?)
        詳しくは過去ログにあります。個人的に
        最も有力な理由と目している記事を挙げておきます。
        >>dev:4751
        それと面倒なんですけれど、
        Win95 サポートのため、VC6 でのコンパイルを
        保障するようにせよとのことです。
         いつの間にか揚げ足取りになっていますが、
        クリアできればそのままコミットできる可能性が
        出てきますので b(>.・
        • [5002] Re3:はじめまして&UNICODE化のこと げんた 2007年09月12日 23:58

          >Unicode 化は、tchar.h に対応する方針で
          >足並みがそろっています…(よね?)
          今頃やっと,見始めてます...

          私の理解の範囲で今北産業しますと,
          1) ANSIとUNICODEでブランチを分けたらANSIをテストする人いないよね
          2) UNICODEに統一してもMSLUがバグバグでまともに動かない.
          3) じゃあ,TCHAR使うしかないなあ

          Windows APIのWideバージョンと内部文字コード(wchar_t)は独立じゃない?という話も出ましたが,ANSI版APIでUnicode文字列は描画できないからUnicode版APIを使わざるを得ない→上の2)へ飛ぶ

          それと,UNICODE APIを使わないとUNICODE文字列をファイル名に使われたときに開けない問題が解決されません.

          ラスティブさんは既存コードにはあまり立ち入っていませんが,まずは文字コード間のマッピングと自動認識の問題を解消することに力を注いでくださっているのかと思ってます.

          >それと面倒なんですけれど、
          >Win95 サポートのため、VC6 でのコンパイルを
          >保障するようにせよとのことです。
          くくっ,厳しい...
          長年やってると,既存ユーザを守るためにどんどん足かせのおもりが重くなっていくような...

          千秋先輩「ちゃんと仕様書を見ろ!周りのコードを読め!」
          のだめ「自由にプログラム書いて,何が悪いんですか!」

          #やっぱり自動試験できないと厳しいなぁ...CMemoryとかCMemoryとかCMemoryとか
          • [5008] Re4:はじめまして&UNICODE化のこと kobake 2007年09月13日 01:22

            ▼ げんたさん

            たしかに、本音としては自由にプログラム書きたいです(笑)。
            コンパイラに任せられる処理は全てコンパイラに任せ、
            浮いたプログラマの時間をかき集めて
            Win9x用の強力なC++コンパイラと安定したWin9x用UNICODE版APIができれば、という理想を思い描きます。
            卵と鶏が逆ですが。

            TCHAR対応となると、マクロだけではなんともならず、テンプレートが大活躍しそうです。
            ただ、VC6コンパイラはテンプレートを含めたコンパイル機能が弱い。辛いです。
        • [5004] Re3:はじめまして&UNICODE化のこと kobake 2007年09月13日 00:53

          ▼ ラスティブさん

          いろいろ参考URL等提示していただいて、ありがとうございます。
          一応全読しましたが、Subversionのことも実はあまり理解していないので、
          実際にパッチを入手して実行してみたりなどして、慣れようと思います。。

          TCHARの件、了解しました。
          ブランチを作る以前に、まだまだソースを整理するのに時間がかかりそうです。
          (主にTCHAR関連で)

          VC6対応、大変ですけど、なんとかやってみます。。
          • [5006] Re4:はじめまして&UNICODE化のこと げんた 2007年09月13日 01:10

            座標系を独立したクラスにまとめようと思っているのであれば1つリクエストがあります.

            座標系として,データのバイト位置を示す物理行・桁=CDocLineMgrと折り返されたものも1行とみなすもの=CLayoutMgr の二つが混在しているのですが,これらを混同するバグが多数見つかっています.

            この2つを混同しないよう異なるクラスにすれば型チェックで引っかかるのでバグは減るのかなーと思っています.でも行だけ指定する場合とかは結局単なる整数になっちゃうかな...
            • [5009] Re5:はじめまして&UNICODE化のこと kobake 2007年09月13日 01:35

              ▼ げんたさん
              > 座標系を独立したクラスにまとめようと思っているのであれば1つリクエストがあります.
              >
              > 座標系として,データのバイト位置を示す物理行・桁=CDocLineMgrと折り返されたものも1行とみなすもの=CLayoutMgr の二つが混在しているのですが,これらを混同するバグが多数見つかっています.
              >
              > この2つを混同しないよう異なるクラスにすれば型チェックで引っかかるのでバグは減るのかなーと思っています.でも行だけ指定する場合とかは結局単なる整数になっちゃうかな...

              現在、CLayoutPoint, CLogicPoint という2つの型を用意しており、
              両者は暗黙の変換はされません。。
              。。というつもりだったのですが、explicitを入れ忘れてたので暗黙の変換がされてました。

              次回バージョンでは
              CStrictPointのコンストラクタの
              template <class SRC>
              CStrictPoint(const SRC& rhs){ x=rhs.x; y=rhs.y; }
              を
              template <class SRC>
              explicit CStrictPoint(const SRC& rhs){ x=rhs.x; y=rhs.y; }
              にするので、暗黙の変換がされなくなります。
              これで、ポイント単位での型チェックは行われるようになります。


              int単位の型チェックは、ちょっと「やりすぎかな」という理由でしませんでしたが、
              JavaのInteger的なクラスを2種類用意し、両者の暗黙の変換を認めないようにすれば
              型チェックは可能です。

              ヘッダ内にクラスの全実装を収めておけば
              おそらくコンパイラが最適化してくれるので、それほど気にする必要もないと思うのですが、
              Releaseビルドでは単なるintとして定義されるようにしておくと、
              実行時のオーバーヘッドはゼロになります。
              • [5011] Re6:はじめまして&UNICODE化のこと げんた 2007年09月13日 07:29

                >現在、CLayoutPoint, CLogicPoint という2つの型を用意しており、
                あ,既に考えられていたのですね.よく見ていませんでした.
          • [5012] Re4:はじめまして&UNICODE化のこと ラスティブ 2007年09月14日 00:11

            ▼ kobakeさん
            > VC6対応、大変ですけど、なんとかやってみます。。

            どうも自分が勝手な判断をしてしまったようです orz.
            Unicode 化の際の VC6 コンパイラサポートについては、
            ちょっと決めかねて・・・えーと、いる状態です。

            すみません。
            • [5013] Re5:はじめまして&UNICODE化のこと kobake 2007年09月14日 00:24

              ▼ ラスティブさん
              > > VC6対応、大変ですけど、なんとかやってみます。。
              >
              > どうも自分が勝手な判断をしてしまったようです orz.
              > Unicode 化の際の VC6 コンパイラサポートについては、
              > ちょっと決めかねて・・・えーと、いる状態です。

              UNICODE化の際に、同一コードでANSIビルドもサポートするのであれば、
              VC6を視野に入れておくことに価値はある気がします。

              決めかねて…と言いますと、
              UNICODE化以降(ANSIビルドもできる)のソースコードバージョンではVC6を視野に入れない可能性もある、
              ということでしょうか。
              自分の中では、
               VC6→Win9xのため
               ANSIビルド→Win9xのため
              と解釈しているのですが、そうすると、
               UNICODE化以降はVC6を切り捨てる=Win9xを切り捨てる=ANSIビルドを切り捨てる
              という意味に取れてしまったのですが、どこか間違っていますでしょうか。
              (決して、自分の都合の良いように解釈しようとした訳ではありません(汗))
        • [5016] Re3:はじめまして&UNICODE化のこと げんた 2007年09月14日 01:11

          >Win95 サポートのため、VC6 でのコンパイルを保障する
          これは,Windows 95で動作するという意味?
          それともWindows 95でコンパイルできるという意味?

          前者なら現在も(VC6じゃないけど)できます.
          後者は...必要あるの?
    • [5014] Re:はじめまして&UNICODE化のこと kobake 2007年09月14日 00:25

      UNICODEビルド版を公開しました。現時点ではANSIビルド通らなくなってしまいましたが。
      http://mofmof.nsf.tc/soft/sakura.htm

      ところで、ブランチというのは、どの辺りの段階で作成するものなのでしょうか。
      とりあえずANSIビルド、UNICODEビルドが両方通るところまでは持っていきたいですが、
      まだバグが潜在してる予感のするものでも、ブランチを作ってしまって
      皆様のバグレポートをいただきながらブランチを修正していく、といった流れでしょうか。