日本のテキストエディタは基本的にShift_JISなんだぜ?

人によっては自然なことすぎて案外きづかない。また、人によっては文字コードってなに???ということで全くきづかない。
日本製の一般的なテキストエディタ、例えばサクラエディタMIFESでは指定しない限りShift_JISで保存されます。だからこそ普通につかえる。


EditraってUTF-8でしか保存できません。となるとこのような弊害がでます。以下はJavaのHelloWorld。

class Test {
    public static void main(String[] args) {
    System.out.println("こんにちは!");
    }
}


コマンドプロンプトからjavacコマンドでコンパイルします。

javac Test.java
D:\lab\Java> javac Test.java
Test.java:3: 警告:この文字は、エンコーディング MS932 にマップできません。
        System.out.println("縺薙s縺ォ縺。縺ッ?シ?");
                                     ^
Test.java:3: 警告:この文字は、エンコーディング MS932 にマップできません。
        System.out.println("縺薙s縺ォ縺。縺ッ?シ?");
                                       ^
警告 2


エラーになっちゃいます。MS932という言葉自体イミフだろうし(Shift_JISのことです)、初心者は間違いなくハマる!テキストエディタと同じように、javacコマンドも初期状態ではShift_JISのコードとして認識するんでしょうね(PCのロケールで自動判別するのかな?)。でも読み込んでいるファイルはUTF-8で書かれているから文字化けしてしまう。


こんな感じでコンパイル時にエンコーディングを指定してあげればOK

D:\lab\Java> javac -encoding UTF-8 Test.java
D:\lab\Java> java Test
こんにちは!


それなりに広い知識を持ってれば自己解決できそうだけど、ユーザーがそんな人ばかりなわけはないです。だから素人でも初心者でも上級者でも、公平に簡単に扱えるものを作らないといけない。
ソフトウェアは面倒がないように、見た目だけでなく中身もデザインされてるわけですが、国際的なソフトウェアを作るのならロケールに応じて初期設定の文字コードを変更してくれるような機能が必要なんでしょーね!

Editra 0.3.15がリリース(翻訳つき)

6月15日にカッコいいテキストエディタ、Editraの新バージョンがリリースされてた。
Editraって起動時にアップデートがあれば教えてくれる機能[Check for updates on startup]があるはずなんだけど、なぜか作動しなくて気づくの遅れました(これは不具合?)。バグ修正メインのマイナーアップデートみたいです。内容を一部翻訳したけど、英語がわからない&めんどくさくなったのは原文のまま。TOEIC300点ですサーセン。

機能追加
    新しいアプリケーションアイコンに変更
    C言語C++D言語でも複数行コメントを折り畳みできるように
    Editraのプラグイン、CodeBrowserのバージョンが新しく(pythonを改良、SQLを追加)
    Editraのプラグイン、FileBrowserのバージョンが新しく
    Editraのプラグイン、Launchのバージョンが新しく(ショートカット、カスタムカラー、自動クリアオプションを追加)
    インターフェイスのフォントを設定可能に
    ノルウェー語への対応が寄与(JoNNeMaNN氏)
    フランス語に対応
    ブラジルのポルトガル語への対応が寄与(Ricardo Crudo氏)
    ウクライナ語への対応が寄与(Igor Chomko氏)
    スタイルシート'Mocha'の追加
    コンテキストメニュー(右クリックのメニュー)の挙動が改良
    toggleで(?)ステータスバーを視覚化できるよう
    
    
バグ修正
    DOSバッチスクリプト用のキーワードの間違いを修正
    折り畳んだコードが検索されたとき、見えるように
    Save Allアクション("すべて保存")でタブが適切に更新されるように
    Replace All failing when begining of buffer matches search pattern. ([すべて置換]のなにか)
    Replace All with Up flag set causing error to be raised([すべて置換]のなにか) 
    Unable to load style sheets with mixed case lettering on gtkGTKってGIMPGNOMEのツールキット?)
    Don't try to provide autocomp/calltips when in a comment or string
    Shift+Click on a contracted node in fold margin now properly expands all sublevels 
    Ctrl(Alt on Mac)+Click now properly does a recursive toggle of nodes 
    キーバインディングのプロファイルをデフォルトへ戻すことができないバグを修正

Editraを1ヶ月くらい使ってて、よくないなーというところ。

起動の遅さ

Editraは初期起動が遅いです。それだけなら全然いいんだけど、別のファイルをダブルクリックや右クリックのメニューから開くと、別のプロセスでEditraが立ち上がっちゃう。なぜ別のタブで開かないっ…!Editraの設定で[Open files in new window by default]ってのがあるんだけど、これにチェックをいれてもはずしてもやっぱり新しいウィンドウが立ち上がってしまいorz。一応、すでに立ち上がってるウィンドウにドラッグ&ドロップをすれば別タブで開いてくれるんだけど、ダブルクリックでファイルを開けたほうがストレス少ないので要望したいところ。

文字コード

ファイルの保存時に文字コードの指定ができません。強制的にUTF-8で保存されてしまいます。これは初心者がプログラミングのコードを書いたときにハマるだけでなく、実用性にも影響します。別のエントリで説明っ!


あと、新しくなったアイコンがカッコ悪いw

O'REILLYのビューティフルコード買った

まずはJUnitのところ読んでます。テストコードくらいガッツリ書けるようにならないと・・・。でも例題の二部探索のアルゴリズムかけなくて涙目w
けど日本のソフトウェア業界は未経験者募集が多いし、ちゃんとしたアルゴリズムの知識を知らなくても仕事自体はできるから、こういう人多いんだろな。わざわざ声を大にしてアルゴリズムできません宣言をブログでする人いないだろしね。サイレントマジョリティってやつ?

ビューティフルコード (THEORY/IN/PRACTICE)

ビューティフルコード (THEORY/IN/PRACTICE)

プログラミングが好き

私的胡散臭い言葉ランキング、第1位

「私はプログラミングが好きです」

なんでこの言葉をこんなにも胡散臭く、そして気持ち悪く感じるのか。世の中には言語自体や処理系を完成させちゃう凄腕プログラマがいて、そういう人は紛れもなくプログラミングが大好きだろうから胡散臭くないけど、一般人が「プログラミング好きです」って言うと胡散臭く感じる。
単に自分の周りにネガティブ志向なプログラマが多いからそう感じるのかなぁ。だって「嫌いです」って言うと「仕事が嫌いです」ってのとほとんど等価だから、社会的に普通言えないし。

私的胡散臭い言葉ランキング、第2位

「コードをゴリゴリ書く」

あぁ胡散臭ぇ。気持ち悪ぃ。コード書くのにゴリゴリ音が鳴るかよ!っていうわけじゃぁもちろんなくて、なんでそんな表現をする必要があるんだよっていう。「すっごいたくさんコード書きました」でいいじゃないですか。「ゴリゴリとコード書いてるんだけど」というメタファー(?)には「俺って出来るプログラマなんだぜ」みたいなくだらないアピール感を受ける。
けど、ゴリゴリという表現には「楽しくて楽しくてすごい勢いで書く」という感じもある。そこに嫉妬してるだけなのかもしれない。

Windows用バイナリだと文字化けするのね

Windowsしかないので、Gaucheは以下のものをインストールしてます。

コンパイルWindows用バイナリ (実験中)
Gauche-mingw-0.8.13.zip

でもこれだと日本語が文字化けしちゃうんですね。
どっかのブログみて知ったからよかったけど、文字コードの指定がおかしいのか!?とかハマらずにすみました。


(追記)
勘違いの模様。
コマンドプロンプトに直接書いた文字はShift_JISとして認識される。それをGaucheUTF-8で認識するためこの時点で文字化け。さらにコマンドプロンプトで出力される際にはShift_JISになる???
コマンドプロンプトへの直接入力はとにかくやめたほうがいいぽいです。世間の人はEmacsでやってるみたい。コードをファイルにUTF-9で保存し出力するなら文字コード変換の関数使えばうまく出力されるいたい。どっちにしろ面倒!

Gaucheのインタプリタで、モジュールを利用する方法

Gauche

ググらないと普通にわからんかった。
ここではSRFI-1モジュールをインポートして、iota関数を使ってます。

C:\>gosh
gosh>(use srfi-1)
#<undef>
gosh>(iota 100 1)
(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100)

Shitf_JISとCP932とMS932とWindows-31Jを昔話風に語ってみた

要約すると

  • Javaでのみ使われる都合上の名前
    • 別名:MS932

本編

むかしむかし、あるところに「Shift_JIS」という名の文字エンコーディングがおったそうな。里の村長「マイクロソフトたん」はいち早くShift_JISの才に目をつけた。マイクロソフトたんShift_JISを育てることにし、愛称として『コードページ932(CP932)』と呼んでおったそうな。それからまもなくして、Shift_JISMS-DOSというOSにのせて売られはじめるようになったんじゃ。


同じ里の「IBMたん」はそのMS-DOSをつかってマルチステーション5550というパソコンをこしらえた。IBMたんはもっと便利になるようにとコードページ932を拡張し、『IBMのコードページ932』として里の文字を表現したんじゃ。一方、「NECたん」はMS-DOSをつかってPC-9800をこしらえ、もっと便利になるようにと『PC-9800仕様OEMコードページ932』として里の文字を表現したんじゃ。


しかしじゃ、時は流れマイクロソフトたんはOSだけでなく、パソコンもこしらえることで、もっと商いを広げようと考えたのじゃ。けれどもコードページ932は2つのコードページ932に別れてもうた。成長した2人はたいそうな働き物だし、見た目もほとんどいっしょじゃが、どこかが違う。そしてその違いに里の民は思い悩んでいたのじゃ。マイクロソフトたんは2人のコードページ932をいっしょにしなおすことに決めおった。IBMたんNECたんコードページ932を再び引き戻し、その2人から生まれた子は、新たにこしらえたWindows3.1にのせられ売られていった。マイクロソフトたんは今も昔もかわらず、『コードページ932』と呼んでおる。


いろんな里を見て回っている官の「IANAたん」は、別のコードページ932の名とかぶっているのを理由に、違う名をマイクロソフトたんに求めた。そこでマイクロソフトたんは『Windows-31J』と名づけ、官に登録することにしたんじゃ。これにより、公にはWindows-31Jと呼ばれることとあいなった。じゃが大儲けしたマイクロソフトたんの影響はおおきく、そのままコードページ932(CP932)とも呼ばれておる。また、ある里ではJavaという言葉が使われておるが、IBMたんコードページ932Windows-31Jとを区別するために、マイクロソフトたんから名をとり『MS932』とも呼んでいるそうな。


紆余曲折のあったShift_JIS一族は、各方面によってCP932・MS932・Windows-31Jと3つの名で呼ばれているが、いまでも健気に働いておる。


自由に転載・改変しちゃってください。