◀Unicode版開発トップへ
  • 155 パッチ状況&作業状況
    • 162 Re:パッチ状況&作業状況
      • 165 Re2:パッチ状況&作業状況
    • 169 現状報告と巨大変更反映の方針
      • 170 RE: 現状報告と巨大変更反映の方針
        • 178 Re2: 現状報告と巨大変更反映の方針
          • 189 Re3: 現状報告と巨大変更反映の方針
            • 195 Re4: 現状報告と巨大変更反映の方針
              • 199 Re5: 現状報告と巨大変更反映の方針
              • 210 Re5: 現状報告と巨大変更反映の方針
                • 213 Re6: 現状報告と巨大変更反映の方針
            • 197 Re4: 現状報告と巨大変更反映の方針
          • 208 画面仕様書
            • 212 RE: 画面仕様書
              • 214 Re2: 画面仕様書
    • 259 Re:パッチ状況&作業状況
    • 260 Re:パッチ状況&作業状況
  • [155] パッチ状況&作業状況 kobake 2008年02月23日 23:40

    現在レビュー待ちのパッチです。
    PatchUnicode#1880338 リファクタリング:ウィンドウ基底クラス作成
    PatchUnicode#1880317 未保存文書のdiff不具合
    レビューお待ちしております。


    現在、自分のワーキングコピーでは
    ファイル保存時に失われる文字がある場合にメッセージを出し、
    ユーザに確認を促す、という機能を実装中です。


    それに伴い、かなり大規模なリファクタリングを行っております。
    変更行1000行くらい、
    関数の移動(ファイル間、クラス間)も含めると
    3000行くらいの変更になると思います。(数えてないのですけど)

    これをどうリポジトリに反映させるかは、まぁ後から考えます、
    ということでとりあえずコーディングに力を注ぎますけど、
    今のうちにアドバイスがありましたらご教授いただけると、
    それを見据えて作業できるかも?です。
    • [162] Re:パッチ状況&作業状況 神楽 2008年03月02日 00:02

      ▼ kobakeさん
      > 現在、自分のワーキングコピーでは
      > ファイル保存時に失われる文字がある場合にメッセージを出し、
      > ユーザに確認を促す、という機能を実装中です。
      ついでできるような実装でなかったらごめんなさい。

      秀丸等にある「ファイルオープン時に失われる文字がある場合にメッセージを出す」
      (秀丸の場合は正確には「警告した上でコード変換に失敗した位置に移動できる」ですが)
      というのも実装して頂けないでしょうか?
      • [165] Re2:パッチ状況&作業状況 kobake 2008年03月02日 12:18

        ▼ 神楽さん
        > ▼ kobakeさん
        > > 現在、自分のワーキングコピーでは
        > > ファイル保存時に失われる文字がある場合にメッセージを出し、
        > > ユーザに確認を促す、という機能を実装中です。
        > ついでできるような実装でなかったらごめんなさい。
        >
        > 秀丸等にある「ファイルオープン時に失われる文字がある場合にメッセージを出す」
        > (秀丸の場合は正確には「警告した上でコード変換に失敗した位置に移動できる」ですが)
        > というのも実装して頂けないでしょうか?

        ご意見ありがとうございます。
        検討の範囲として頭には入れておきますが、
        今の時点では「ついでにできそうではない」ので先送りになりそうです。

        UNICODE版が本家正式版になった後に、(自分か自分以外の誰かによる) 随時実装になるかと思います。
        気長にお待ちくださいませ。
    • [169] 現状報告と巨大変更反映の方針 kobake 2008年03月03日 02:25

      現状報告です。
      パッチ行数4万行超えました。
      ANSI時代に溜まりに溜まっていた低保守性箇所の掃除をしています。
      これをしなければ、今後の透明性のあるメンテナンスは不可能です。ご理解ください。

      どんなことをしているのか気になる人は下記ソースを参照ください。
      動かないですけど。
      http://mofmof.nsf.tc/soft/archives/sakura_core_080303_2.zip
      再来週くらいにブランチを作れれば、と思っています。

      ソースコードレビューは不可能です。
      バイナリのテストのみを予定しています。
      不本意にテストが重複する無駄を避けるため、
      テスト項目をリスト化します。
      その後、分担してテストを行います。

      さらに、ピアレビュー省略のコミット方針を予定しています。
      ブランチをもうひとつ作り、そこに五月雨式にコミットしてもらいます。

      本家トランクと同じ方針でやっていたのでは埒が明かないことが
      わかってきましたので、すみませんが、UNICODEブランチでは
      UNICODEブランチの独自方針で進ませてください。
      • [170] RE: 現状報告と巨大変更反映の方針 げんた 2008年03月05日 00:00

        >ANSI時代に溜まりに溜まっていた低保守性箇所の掃除をしています。
        >これをしなければ、今後の透明性のあるメンテナンスは不可能です。ご理解ください。
        ありがとうございます.

        >本家トランクと同じ方針でやっていたのでは埒が明かない
        (trunkは既にその状態に近いですが)自動testができる環境を整えないと大がかりな変更ができずにどんどん行き詰まってしまいます.テスト環境構築が得意な方が現れてくれるとラッキーなんですけど.
        • [178] Re2: 現状報告と巨大変更反映の方針 kobake 2008年03月06日 20:15

          ▼ げんたさん
          > >ANSI時代に溜まりに溜まっていた低保守性箇所の掃除をしています。
          > >これをしなければ、今後の透明性のあるメンテナンスは不可能です。ご理解ください。
          > ありがとうございます.

          ご理解ありがとうございます。

          > >本家トランクと同じ方針でやっていたのでは埒が明かない
          > (trunkは既にその状態に近いですが)自動testができる環境を整えないと大がかりな変更ができずにどんどん行き詰まってしまいます.テスト環境構築が得意な方が現れてくれるとラッキーなんですけど.

          自動テスト環境は欲しいっすねー。
          その布石として、まずは人力によるテスト項目の洗い出しをしておくと良いと思います。

          必要なのは、
          「どんな状態で」
          「何をすると」
          「どんな状態になるか」
          の3点です。
          まずはこの3点を「定義」する必要があります。
          これで主観に依存しない人力テストが行えるようになります。

          そしてさらにこれらを「呼び出せるようにしておく」ことで、
          自動テストの作成が可能になります。

          テスト環境構築が得意な方が現れても、上記項目が
          成し遂げられなければ、テストの作成しようがありません。
          そして、よくよく考えてみると
          上記項目を遂行できるのはサクラエディタに詳しい人間であり、
          上記項目を遂行できた時点で、自動テストはほぼできたも同然ですから、
          結局のところ今のメンバーでやっていく(もちろん新規参入大歓迎)というのが
          現実的かな、と思います。
          テスト対象範囲をしぼって、コツコツと構築していけば良いと思います。

          偉そうなこと書いてますが、自分自身はテスト環境を構築したことはありません。

          幸いにもテスト環境構築が得意な方が参入された場合に
          協力いただきたい所を挙げるとすれば、
          たとえば定期的にリポジトリから自動でソースをチェックアウトして
          自動でビルドして自動で実行してエラーが発生した場合に
          通知を行ってくれる(豪華!)といったような
          フレームワーク的な要素の構築です。あともうひとつ、テスト作成に対するアドバイスです。
          どちらにしても作業の大半はサクラエディタ自体の機能にあります。


          長々と書いてしまいましたが、まずはUNICODE版をトランクまで辿り着かせることが先ですね。

          何故未来のことをわざわざ今の時点で長々と書いてしまったか、というと、
          上記作業は現在のコーディング作業とは独立して並行に進行できる要素だからです。
          今の時点でテスト項目洗い出しをUNICODE版とは別ラインで並行して進めていただいても構いません。
          #自分はUNICODE版コーディングに精一杯なので、そちらには当分ノータッチだと思いますが。

          もちろん、進めていただかなくても構いません(笑)。ただの希望と妄想ですから。
          • [189] Re3: 現状報告と巨大変更反映の方針 ac 2008年03月07日 21:39

            > 自動テスト環境は欲しいっすねー。

            Windows 自動化ソフト UWSC
            http://tools.rightclicksright.net/data/frame_9403.aspx

            エディタ自身で自己テストするなら、エディタのマクロ機能(WSH)をうまく改良できれば...
            • [195] Re4: 現状報告と巨大変更反映の方針 kobake 2008年03月08日 08:51

              ソフトのご紹介ありがとうございます。

              ちなみに一概にテストといっても様々な粒度があります。
              ・モジュールに対する入力と出力(クラスレベル、クラス群レベル)
              ・ソフト機能に対する入力と出力(アプリ内部レベル)
              ・ソフト機能に対する入力と出力(アプリ外部レベル)
              等等。

              モジュールレベルだとこんな感じのコードを
              直接組み込む感じです。
              void Test()
              {
              //クラスCTestStringのテストを行う
              //どんな状態で
              CTestString s;
              //何をすると
              s.Assign("A");
              s.Append("B");
              //どんな状態になるか
              TEST_ASSERT(s.Equals("AB"));
              }

              外部レベルとだと、ご提示いただいたようなソフトや
              WSHなどなど、が使えるかと思います。
              何を使うのが適切か、は具体的にテストケースを検証してみないと分かりませんけど。
              テストケースによっては外部テスト用の公開API or マクロを新しく用意する必要もあるかもしれません。
              • [199] Re5: 現状報告と巨大変更反映の方針 ac 2008年03月08日 16:21

                部品レベルだと、それぞれのテストプログラム群を作っておけばいいですね。
                正規表現などのテストで見たことがあります。
                部品の品質を確保するという意味で有効だと思います。
              • [210] Re5: 現状報告と巨大変更反映の方針 ac 2008年03月09日 13:09

                CppUnitが良いかもしれません。
                試験対象のクラスを継承して試験用のクラスを作り、そこに試験コードを埋め込みます。
                各クラスを1個ずつテストするためのexeを作れればよいのですが、インクルードファイルの関係で難しいと思われます。
                そこで、自動試験用の新しいビルドを作成し、試験用クラスを組み込んだexeを作ってしまって、メニューから実行してしまえばいけそうです。
                • [213] Re6: 現状報告と巨大変更反映の方針 げんた 2008年03月09日 19:39

                  >CppUnitが良いかもしれません。
                  自分もCppUnitに注目していました.

                  >各クラスを1個ずつテストするためのexeを作れれば
                  について.
                  1) 本体をEXEではなくライブラリとしてビルドする
                  2) TestSuite+共通のrunner+ライブラリ(自動で必要なところが取り出されるはず)
                  3) 実行
                  として,個別に試験できないかなと思っていました.

                  Windows APIを独自の関数で乗っとることで,たとえばMessageBoxで止まらないようにできれば,GUI部もある程度までは自動化可能かもと考えています.他にも,同じ関数・クラスでも,呼び出し先の戻り値を意図的に変える(MockObject?)ことで異常ケースを試験するような場合ではすべて1つの実行ファイルにはできないのではないでしょうか.
            • [197] Re4: 現状報告と巨大変更反映の方針 ac 2008年03月08日 12:32

              似たようなソフト
              http://www.ranorex.com/
              Download>http://www.brothersoft.com/ranorex-49756.html
          • [208] 画面仕様書 ac 2008年03月09日 06:26

            画面についてだけ言えば、画面仕様書を作成すればよいと思います。
            (すでに存在する画面から書き起こすので、比較的楽なはずです)
            画面仕様書には、以下のような項目を記載します。

            ・番号
            ・項目名
            ・種別:ラベル、テキストボックスなど
            ・字種:数字、全角文字など
            ・属性:Enable,ReadOnly,Disable
            ・初期値:ラベルの場合はキャプション
            ・タブオーダ:
            ・ショートカット:ショートカットキーがある場合
            ・ID:IDC_BUTTON_XXX
            ・ヘルプID:HIDC_XXX
            ・下限値外
            ・下限値
            ・範囲内
            ・上限値
            ・上限値外
            ・構文チェック:条件判定がある場合記述
            ・備考

            使うのはOpenOfficeかな(Excelは個人で持ってない人もいるし)。
            htmlに変換してWebに掲載すればOpenOfficeがなくても見ることはできます。
            • [212] RE: 画面仕様書 げんた 2008年03月09日 19:39

              >画面についてだけ言えば、画面仕様書を作成すればよいと思います。
              私には既に存在する画面の仕様書を別途作成するのが効果的だとは思えないのですが...

              私の考え
              1) 既にあるものの仕様書を個別に作っても実装の助けにならない
              (画面を考える人と実装する人が手分けするなら有効だと思いますが)
              2) 設定画面は全体の中では複雑度&バグった場合の影響が小さいので重要度が低い
              3) 設定範囲等制限が必要な場所は,試験項目の方で救う方が有効ではないか.

              エディタ部分では枠に当てはめて文字を表示しているのではないので,画面仕様書といってもどう書けばよいのかイメージがわきません.
              • [214] Re2: 画面仕様書 ac 2008年03月09日 20:35

                自動試験の元ネタが欲しい場合にどっから手を付ければよいかと
                思ったのですが、一応反論しておきます。

                ▼ げんたさん
                > >画面についてだけ言えば、画面仕様書を作成すればよいと思います。
                > 私には既に存在する画面の仕様書を別途作成するのが効果的だとは思えないのですが...

                それが正しいということを保証するために比較するネタがない。

                > 私の考え
                > 1) 既にあるものの仕様書を個別に作っても実装の助けにならない
                > (画面を考える人と実装する人が手分けするなら有効だと思いますが)

                ソースを読むための1機能の仕様書を作ることもすでにあるソースから作るので同じこと。


                > 2) 設定画面は全体の中では複雑度&バグった場合の影響が小さいので重要度が低い

                画面は人が直接接する最前線。


                > 3) 設定範囲等制限が必要な場所は,試験項目の方で救う方が有効ではないか.

                その試験項目の元ネタがない。


                「ソースがマニュアルであり、仕様です。」
                と言ってるようなもの。
                フリーソフトだからそれでいいんですけど。
    • [259] Re:パッチ状況&作業状況 kobake 2008年03月18日 00:50

      パッチ公開が滞っていてすみません。
      木曜の祝日あたりにガリガリ仕上げて公開する予定です。
    • [260] Re:パッチ状況&作業状況 kobake 2008年03月23日 23:46

      なんとか形はまとまってきたのですが、
      予定よりかなり遅れて、まだブランチにはたどり着ける感じじゃないです。。すみません。
      とりあえず現在のソースです。
      http://mofmof.nsf.tc/soft/archives/sakura_core_080323_5.zip

      セーブ、ロードの流れは
      ・CDocFileOperation の DoSaveFlow, DoLoadFlow
      ・CSaveAgent
      ・CLoadAgent
      あたりにほぼまとまっています。