ホーム

OFF-SOFT.net

OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

Notepad++ ja-pack 1 (日本語パック) を公開してみた。

公開日| 2014年09月25日 | 2 のコメントがあります。
Notepad++ ja-pack 1 (日本語パック)

ここまで、Notepad++の変更なしに日本語環境に合わせた機能の提供を行ってきました。 今回は、いよいよNotepad++に手を加えて ja-pack(日本語パック) をリリースしてみました。
今回は、今まで提供してきたような 一部のDLLだけでなく一式をZIPでまとめたものを提供しています。
そのため、ダウンロードしたZIPを解凍し、即、利用できます。

では、早速、詳細について、簡単に解説してみます。

ここで解説している ダウンロードファイルは、Notepad++(ja-pack) ページ の Notepad++ ja-pack (AIO) All In One Package にて最新情報とともにダウンロードできるようになっています。
Notepad++ のライセンスは、GPLです。
Scintilla のライセンスは、Historical Permission Notice and Disclaimer となっています。

変更した内容

EUC-JPのサポート

Notepad++ EUC-JP

Shift JIS およびUNICODE(UTF8,UTF16など)に対応していましたが、EUC-JPについては、対応していませんでした。
そこで、今回、EUC-JPについて対応してみました。もともとEUC-JPへの対応は、考えていたようで、ソースコードが一部ありましたので、そのまま流用させていただきました。
また、コード変換については、以下のWindowsAPIを使って変換するよう改版しました。

  • ConvertINetUnicodeToMultiByte
  • ConvertINetMultiByteToUnicode
参考までに、Notepad++の内部では、純粋なASCII以外は、ほぼUTF8で制御されます。
そのため、Shift JISやEUC JPなどは、UTF8に変換され、画面表記されます。 保存時は、さらにUTF8からShift JISやEUC JPなどへ変換され保存されます。
この変換も UTF16に変換されたのちにUTF8へ変換されるので、ちょっと、もっさり感が出るのかなぁと思います。 Windowsに特化しているアプリケーションなので、UTF16で Scintilla を動かした方が良かったんじゃないかなぁと思いますけど、何か事情があったのかもしれませんね。

以下は、各文字コードを自動認識した例です。

  • EUC-JP
    Notepad++ EUC-JP
  • Shift_JIS
    Notepad++ Shift_JIS
  • ASCII
    Notepad++ ASCII
  • UTF8 BOMなし
    Notepad++ UTF8 BOMなし
  • UTF8 BOMあり
    Notepad++ UTF8 BOMあり

文字コード自動検出失敗時のデフォルト文字コード指定(デフォルトではShift_JIS)

既存ファイルを読み込む場合に、7bit or 8bit文字コードの場合、自動で文字コードを検出する機能があります。 ただ、これは、ある程度、日本語文字列(ひらがな)が含まれている必要があり、ヒットしない場合もあります。 その場合、デフォルトの動作では、ASCII(ANSI規格)と判断され日本語とはみなされないことになります。 このような時に、とりあえず、デフォルトとして Shift JIS or EUC JP or UTF8 で開くことができるようにするための機能です。

つまり、マルチバイトを含む文書の場合、ASCIIでなく日本語が扱える文字コードのいずれかを指定できるようにします。
マルチバイトを含まない文書の場合、ASCIIと判断されます。既存機能で、ASCIIと判断された文書を自動でUTF8として取り扱う機能もあります。
以下は、その機能の設定画面です。 [ 設定 ] - [ 環境設定 ] で以下の画面左から [ 新規作成 ] を選択します。 画面右の [ 開いているANSIファイルに適用 ] にチェックすると、ASCIIと判断された文書は、UTF8 BOMなし で開きます。

Notepad++ 新規作成

このデフォルトの文字コードの指定は、インストール先ディレクトリのconfig.xmlを直接編集することで指定することができます。 この時、必ず、Notepad++を終了した状態で編集します。

  ...
  <GUIConfig name="DetectEncoding" ja-pack-auto-detection-default-ansi="Shift_JIS">yes</GUIConfig>
  ...

上記の GUIConfigタグの name="DetectEncoding" の 属性 ja-pack-auto-detection-default-ansi の値を編集することで実現します。
上記は、デフォルトの設定です。"Shift_JIS" は、文字通り Shift JISです。EUCの場合は、"EUC-JP" と指定して、Notepad++を起動すると、デフォルトでECU JPに切り替わります。

制御文字(タブ、空白、全角空白、改行)の個別表示サポート

Notepad++ 制御文字

この機能のベースは、Notepad++ (日本語版) 0.2 を公開してみた。(正確には、Scintillaをカスタマイズしてみた) でリリースしている Scintilla のDLLで実現している機能です。 ただ、これまでは、タブ、空白、全角空白を一括で表示・非表示の切り替えを行うことができましたが、個別に表示・非表示の切り替えを行うことができませんでした。

これを、各タブ、空白、全角空白、改行のそれぞれで表示・非表示できるようにGUIの制御を変更しました。
これに伴い、Scintillaでもそれぞれに表示・非表示ができるように変更しました。

以下は、それぞれの設定によっての見え方です。

  • 全てチェックした場合
    Notepad++ 制御文字全て表示
  • タブを表示のみをチェックした場合
    Notepad++ 制御文字タブのみ表示
  • 半角空白を表示のみをチェックした場合
    Notepad++ 制御文字半角空白のみ表示
  • 全角空白を表示のみをチェックした場合
    Notepad++ 制御文字全角空白のみ表示
  • 改行を表示のみをチェックした場合
    Notepad++ 制御文字改行のみ表示

折り返しワードラップの単語指定、文字列指定のサポート

Notepad++ ワードラップ

行の折り返し(ウィンドウ幅で折り返す機能)ワードラップは、今までもありましたが、これは、単語ワードラップ、あるいはワードラップなしのいずれかの切り替えとなっていました。
これを、単語ワードラップ、文字列ワードラップ、ワードラップなしの3択に変更しました。

ワードラップ機能では、日本語の単語を正しく認識できない上に、日本語独自の禁則処理などは皆無です。 そのため、既存のワードラップ機能ありとした場合は、以下のような変な折り返しを行ってしまいます。

これでは、禁則処理なしでも文字列できれいに並んでくれた方が、まだ、いくらかましなので、文字列ワードラップの選択ができるようにしました。
文字列ワードラップは、そもそもScintillaに既にあった機能です。それを使えるようにGUI側の変更を行いました。

以下は、それぞれの設定によっての見え方です。

  • ワードラップなしの場合
    Notepad++ ワードラップなし
  • 単語ワードラップありの場合
    Notepad++ 単語ワードラップあり
  • 文字列ワードラップありの場合
    Notepad++ 文字列ワードラップあり

上記以外にも、
Notepad++ (日本語版) 0.2 を公開してみた。(正確には、Scintillaをカスタマイズしてみた) で提供していた 日本語の選択機能や、
Notepad++ プラグイン Change Markers を公開してみた。 で提供していた 変更行の表示のためのプラグインなども同梱されています。

インストールおよび起動方法

  1. 先に記載しているダウンロード先 から ZIPファイルをダウンロードし、適当なディレクトリに解凍する。

    ここで提供しているファイルには、Notepad++本体を含め一式がZIP形式で提供されています。 そのため、適当なディレクトリに解凍し、インストール完了となります。必ず、書き込み時に管理者権限が必要でないディレクトリへ解凍してください。

  2. 解凍を終えたら、Notepad++ を起動する。

    以下のように無事起動すればOKです。

    Notepad++ ja-pack (日本語パック)

既知の問題、あるいは、未対応の内容

  • UNICODE変換に失敗する文字列は、保存できない。

    先にも記述したように、Notepad++内部では、日本語の取り扱いは UTF8で行います。(既存処理)
    Shift JIS or EUC JPなどのマルチバイトタイプの文字コードは、一旦、UTF16(いわゆるWindowsのUNICODE)へ変換され、さらに、UTF8へ変換されます。
    編集は、UTF8で行われます。
    保存時は、先の逆をたどります。UTF8を、一旦、UTF16(いわゆるWindowsのUNICODE)へ変換し、Shift JIS or EUC JPへ変換、保存します。
    そのため、UTF16(いわゆるWindowsのUNICODE)とShift JIS or EUC JPの間で Windows APIで変換できない文字列は、正しく動作しません。
    (マイクロソフトでは、http://support2.microsoft.com/kb/170559/ja にて詳細が記載されてあります。)

  • ワードラップで禁則処理は行われない。

    先にも記述したように、ワードラップで禁則処理は行われません。
    また、単語ワードラップを指定しても日本語の単語を判断して折り返しは行いません。
    単語と認識するのは、英語の時と同じで、半角空白、ピリオド、カンマなどの記号によって判断されるのみです。

  • ワードラップの切り替え処理はマクロ制御できない。

    ワードラップの切り替え処理が、以前はマクロ制御できていたようです。 今回は、そこまで対応していません。

  • 制御文字の切り替え処理はマクロ制御できない。

    制御文字の切り替え処理は、マクロ制御できません。既存からできていないようです。

  • ツールバーから "制御文字をすべて表示"、"右端で折り返す" が無くなった。
    Notepad++ 旧ツールバー

    機能が変更されたので、上記の機能は無くなったため、ツールバーのアイコンも削除されました。

  • 文字コードが ASCII では、単語選択がうまく働かない。

    日本語でWindowsであれば、ASCII = Shift-JISと思いがちですが、Notepad++では厳密に異なります。
    そのため、文字コードがASCII で認識されたドキュメントでは選択が正しく動作しません。
    また、全角空白も同様表示されません。
    ASCII で自動認識された場合は、[ エンコード ] - [ 文字セット ] - [ 日本語 ] - [ Shift-JIS ] を選択することで、選択および全角空白が正しく動作します。
    また、上記の機能のデフォルト文字コード指定と、既存機能のASCIIと判断された文書を自動でUTF8として取り扱う機能を活用することで、ASCIIと自動認識することはなくなるかと思います。 そのため、これらの機能の組み合わせは、この問題の回避策として用いることもできるかと思います。

    • ANSI = American National Standards Institute

      アメリカ合衆国の工業規格を定める機関

    • ASCII = American Standard of Code for Information Interchange

      情報交換のための文字コード規格

  • 日本語を選択しても同一単語が表示されない。

    Notepad++は、
    たとえば、以下のように sc を選択しただけで、同一単語(ここでは"sc")を同じ文書ファイル内で、直ちに検索し、表示切替をします。

    Notepad++ 選択

    これが、日本語を選択した場合、うまく機能する場合としない場合があります。 通常の検索は、もれなくヒットしますが、上記の簡易検索ではヒットしない場合があるので注意が必要です。

単純な動作の確認は行ったものの、まだまだ、テスト不足の感は否めません。 機能が豊富なだけに、他機能との絡みでの問題は出ると思います。 もし、何かおかしな点に気づかれたら、コメントいただけるとうれしく思います。

コメント

2 のコメントがあります。 “Notepad++ ja-pack 1 (日本語パック) を公開してみた。”


  1. matushiro97
    2015年08月03日 @ 22:25:12

    \plugins\API\に保存しなければならいファイルがあるのですが、どうすればいいですか?非日本語の本家の場合、インストーラーでインストールprogramフォルダ内のインストールした先のフォルダにつくられるようです。

  2. 管理人
    2015年08月04日 @ 01:07:44

    matushiro97 さん

    コメントありがとうございます、管理人です。
    早速ですが、簡単なやり方を解説しておきます。

    基本的に解凍したディレクトリに\plugins\APIs\を丸ごとコピーすれば良いだけです。
    コピーした後、notepad++.exeをダブルクリックで起動してみてください。

    また、逆に本家の方へ、カスタマイズ版をコピーする方法もあります。

    1. Notepad++ ja-pack All in One – Binary を適当なディレクトリに解凍する。

    2.本家の同一バージョンのディレクトリへ以下のファイルをコピーする。
    notepad++.exe
    SciLexer.dll
    コピーする際は、必ず、本家をバックアップしておきましょう。もし、動作が不満、不安定などでもとに戻せるようにしておきましょう。

コメントをどうぞ







  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ