◆ IME はそれほど負担はない
  ◆ 逆に使いこなせばメリットも多い
◆ どこでどう日本語を使うかのほうが使いづらい理由かも

私自身もこのブログで使ったのは 1, 2 回程度なんじゃないかなと思うくらいですが 日本語識別子 (変数名とかクラス名とか) ってあんまりみないですよね
メリットも多いと思うのですけど

日本だけ?

海外のことはそんなに詳しいわけではないのですが 日本以外では自国の言語で書いてるのってけっこうあるそうですね
ロシア語や韓国語がコードに入ってるのをどこかで見たことはあります

わりと新しめな言語で Ascii 文字のみ対応にしたら マルチバイト文字圏の人たちから反対の声とマルチバイト文字対応の要望が多くて対応したとかいう話を何年か前に聞いたことがあります
もちろんその要望出した人はほとんど日本ではない国だったとか

あとプログラミングは英語で書くものだという思い込みも強いと思います
元々が英語のもので構文の if や while などが英語なのは構わないと思います
構文すら日本語の言語もありますが 知名度や使いやすさなどを考えると一般的な構文は英語の言語でいいと思います
自分で名前がつけれるところに自国語が使えるのに徹底して使わないのって 「関数という機能があるのにそんなのには頼らないと自力でコピペのみでフラットなプログラムで頑張る」 みたいなせっかくある便利機能を捨ててるようなものですよね

英語のソフトを英語のまま使うのは エラーが起きたときや使い方を調べるときに英語のほうが情報が多いので助かります
でも識別子の言語を英語のままにしても何も得はありません
キャメルケースにするかスネークケースにするかと同程度の問題でしょう

それからたまにみかける英語こそが最高の言語だと思ってる人です
ことあるごとに日本語はダメだ英語が優れていると言っては英語できないとかプログラマとして失格とか言ってる人です
じゃあもう海外に住めば?といいたくなりますね
情報を集めたり仕様書を読む時英語出来たほうが得ですが Google 翻訳とかでどうにかなるので必須とまでは言えないです
こういう人の影響を受けて英語しかダメなんだとか思ってしまわないように気をつけましょう

JSON では使う?

変数名には使わない・使いたくないと言ってるのに JSON のキーや Map/Table のキーにはなってるというのを見ることがあります
そのまま画面に表示するので

{"Wi-Fi": "利用可能", "駐車場": "100台まで", "閉店時刻": "22:30"}

のように日本語でデータが入っています
値の方は 数値や真偽値で表示部分で 「◯」 に置き換えたり 数字を埋め込んだテキストにしたりもあります

JavaScript だと [] じゃなく . でプロパティアクセスすると
console.log(data.閉店時刻)
となるわけなので 実質コード中に日本語が来てます
そう考えたら使うハードルは下がりそうな気はします

困ることは?

ツール

昔なら 言語でアルファベット以外を使えてもその他ツールが対応してないとか合ったのだと思いますが 今の時代 Unicode 対応していて当たり前ですし ツールの対応面ではあまり困ることは無いと思います

似た文字

よく言われるものの 1 つが似てる文字ですよね

ぺージ = 100
print ペ-ジ

これが 「ペ-ジ」 は見つからないというエラーになります
「ー」と「-」がよくみるとちょっと違うね と気づく人が多いと思います
実は「ぺ」と「ペ」も違います
フォントによっては全然見分けが付かない間違い探しです
ハイフン以上に見分けがつかないです

ですが 英語でも ocurred みたいに 2 連続してる文字が 1 つになってたとか from が form みたいに文字の順番が入れ替わってたとか
contact/contract, except/excerpt みたいに 1 文字増えてる足りてない単語とかけっこう違いがわからず困るものです
こういうのって結局気づかずに 実行時に見つからないと言われたり コンパイルや静的解析でエラーが出て気づきます

そう考えれば ぺージ と ペ-ジ も同じようなものです
エラーの場所さえわかれば似ていてもすぐに解決できます
それに IME の変換でそんな変なのは基本出てこないので むしろ自分でタイプする英単語のほうが困る確率は高いように思います

IME

日本語を使う一番の難関が IME だと思います
切り替えが面倒というやつですね

でもプログラム中の普段コメントを日本語で書いているなら自然と切り替えはいっぱい使ってると思います
それにチャットなど日本語での会話中にカタカナより英単語のほうがわかりやすい言葉を書くときには切り替えたり F10 で半角化したりしていると思います
このブログにもコード外の本文中に半角文字はけっこうあると思います
キーボードのタイプ数を調べてみると 半角切り替えキーや F10 キーはけっこう押されているものです
昔カウントしてみるとほとんどのアルファベットキーより上にいました
十字キーと Space・Backspace・Enter などのキーが上位にいて そこからよく使うアルファベットと Shift などのキーがあってそのあたりに半角切り替えキーもありました
なのでやる前に感じてるほど負担ではないと思います


それに IME が必要というのは 変換が面倒というデメリットだけでなく IME を有効利用できるメリットもあります
まずは半角を打つときも常時 IME を ON にしましょう
半角文字を打つときは 半角/全角キーで半角入力するのではなく CapsLock で IME が有効で半角入力モードにします
IME の辞書によく使うスニペットを登録しておけば エディタを問わずどこでも使えるスニペット展開ツールになります
f だけで 「function () {}」 が候補に出たりすると便利ですよね
また IME は最近打ったものを候補として優先的に出してくれたりもするので 使ったばかりの変数名を何度も使うときに便利です
IDE などのサポートでは 静的解析の上でその場所で使えるものから選んでくれるメリットはあるものの 最近使ったのを優先するとかはあまり見ないものです
(VisualStudio はそれっぽいことしてくれたような気もします)
キー配置的にも 半角/全角キーよりすぐ近くにある CapsLock キーでいいので手を動かす負担も減ります
昔一時期やっていたのですが PC 変えたタイミングで使わなくなりましたけどね


または CapsLock を使わずに半角化するときに F10 キーを押します
ただし F10 は遠いのでキーボードユーティリティを使って スペースの隣の変換キーでも F10 を設定すれば入力しやすいと思います
単純に F10 を押しただけだと確定されないのでエンターキーを押さず半角スペースを入力しようとすると変換候補の切り替えになってしまいます
なので変換キーを F10 + Enter と設定しておくと変換キー後にすぐ半角スペースを押せます
個人的に変換キーは確定済みを再変換するときにしか使わないのでこのキーを選びましたが よく使ってるなら他の手をほとんど動かさなくていい場所にあるキーに設定してください
こっちだと事前設定が多いので 普段遣いの PC ならともかく慣れない環境だとつかいづらい欠点があります
ですが使いやすいように設定をカスタマイズするのって マウスやキーボードを高そうな高機能なものやタイプしやすいものにしているのと同じようなものですから そこまで嫌う必要もないと思います

コメント判断

個人的に大きいのは コメント部分を瞬時に判断できることです
英語か日本語かって見た瞬間に把握できて 日本語の部分だけを読もうとするのは簡単です

日本語=コメント で 英語=プログラム となっていたらコメントの読みやすさが断然違います
英語圏で書かれたコメントも英語のプログラムって コメントまで英語で見づらいです
それに比べるとコメントは日本語のプログラムのほうが見やすいです

多くの場合はシンタックスハイライトで色が変わるのでマシにはなるのですが 色だけと色+文字なら断然後者のほうがわかりやすいです
これは英語圏じゃないからこそのメリットですし これを捨てるのはちょっとハードルがあります
たまにシンタックスハイライトなしでコードを読み書きすることもあるので そういう場合にはすごく有用なんですよね

色さえあれば十分って人ならこれは気にしなくていいでしょう

どこを日本語にするの?

複数人で書いているならどこをどういう風に日本語にするのかも大きな問題です
さっきの 「ページ」 ですがタイプする文字は 「pe-ji」 なので 「page」 にしてしまえばタイプ数も減ります
逆に 「説明」 は 「setumei」 なので 「description」 と書くより短いです
どういうときに日本語を使うかを明確にしないと キャメルケースとスネークケースみたいな問題になります
変数か関数かみたいな使う場所じゃなく言葉に応じて変えたくなるので難しいです

日本語使うなら統一して全部日本語なら単純ですが attr とか value とか num とかアルファベットのほうが短く打ちやすいし意味もわかりやすい場合もあるのに日本語しか使えないのは不便です
is***, add***, remove***, can*** みたいなプレフィックスもわかりやすいので使いたいです

個人的には
if(国道1号線.is渋滞あり){  }
console.log(count出席日数(佐藤))
印刷(users.map(calc年末調整))
とか日本語と英語混ざった変数名やプロパティ名でもいいのですけどね

国道1号線 みたいな固有名とか
渋滞あり みたいな英語にできそうでも画面にそのまま出すような単語とか
print って印刷なのか画面へ出力なのかパット見わかりづらいから印刷なら日本語にするとか
年末調整みたいな日本固有の制度 (海外にもあるのかもしれないけど) の呼び方とか

こういう部分だけ日本語にしたいのですが感覚的な部分が多いですから全員統一できるかというと難しそうです
英語でもマイナー単語や類似語がある単語選びで同じ事が起きてると言えば起きてると思いますけどね

小さいローカルスコープなら統一性なんて気にせずその場で何を表してるかさえわかれば何でもいいですし 書いた人の気分で良いと思いますけど 他と大きく関わるなら統一性はほしいところです


あと日本語英語は混ざっててもいいのですが
let 卒業式に参加可能 = true
let 渋谷駅の到着時刻 = Date.now()
let 税金 = 所得税を計算(合計金額)
みたいな助詞が入ってくるのはなんか気持ち悪い感を感じます
かと言って英語の前置詞いれるのもなんか変な気がします
特に関数名なら上のみたいに calc所得税 としたくなります

IME みたいな入力自体の問題よりどこを日本語にするか どう日本語を使うかと言った問題のほうが使いづらい原因なのかもしれません