Photo by https://www.flickr.com/photos/glenfc/8673547225/
新人プログラマはもちろん、今後海外で仕事をしようとしているエンジニア、国内でもオフショアを使っている方や、外国人エンジニアと一緒に仕事される方々に、日本人プログラマとして聞かれたときに答えられないと恥ずかしい!! 日本の心ともいうべき日本語変数、日本語メソッド名について、まとめてみました。
日本人エンジニアにも意外と知られていない日本語変数、日本語メソッド名。どのプログラミング言語で対応しているか知っていますか?日本人としてどんなシーンで使うといいのでしょうか、また実際に使ってみるとどんなことが起きるのでしょうか?海外のエンジニアにこれらを聞かれて、あなたはきちんと答えられますか?
■日本語変数、日本語メソッド名対応のプログラミング言語
- C#
- PHP
- Python
- Ruby
- Java
- Perl
- node.js
- Objective-C(Xcode5)
- G-BASIC(ぴゅう太)
ここにあげたもの以外にも対応している言語は有ると思いますが、主要な言語について調べてみました。意外と対応している事が分かります。
代表的なものをいくつか実際に書いてみると下記のようになります。
◆C#
using System; public class 大阪 { public static void Main() { var ワレ = new 上方言葉やねん(); ワレ.はよ言いや("こんにちは新世界"); } } public class 上方言葉やねん { public void はよ言いや(string 思っとる事) { Console.WriteLine(思っとる事); } }
試しに実際に実行してみましょう。…しかしC#の実行環境を作るのは面倒なのでpaizaのコーディングスキルチェック練習問題のオンライン実行環境で試してみます。(※paizaはプログラミングスキルチェックで転職できる転職サイトですが。。)
動きます!ちゃんと結果のところに「こんにちは新世界」と出ます!!
◆PHP
<?php class 上方言葉やねん { public function はよ言いや($思っとる事) { echo $思っとる事; } } $ワレ = new 上方言葉やねん(); $ワレ->はよ言いや("こんにちは新世界"); ?>
◆Python
Pythonは3.x系から日本語変数名、関数名に対応しています。
paizaでは現在のところPythonのバージョンはは2.7.3(2014年4月現在)となっているので、paiza上では日本語変数、メソッド名は残念ながら使えません。。
#codin = utf-8 class 上方言葉やねん: def はよ言いや(self, 思っとる事): print(思っとる事) if __name__ == "__main__": ワレ = 上方言葉やねん() ワレ.はよ言いや("こんにちは新世界")
◆Ruby
Rubyは日本発の言語ですが、クラス名は頭大文字という規約がありそれが満たせないので、残念ながらクラス名を日本語にする事が出来ません。
#coding = utf-8 class Kansaiben def はよ言いや(思っとる事) print 思っとる事 end end ワレ = Kansaiben.new() ワレ.はよ言いや("こんにちは新世界")
◆Java
Javaは環境によってはコンパイルエラーに成る事が有るようです。
※4/23 cielさんから指摘受けて修正しました
Rubyと同じく日本語クラス名を使うとコンパイルエラーに成ってしまいますが、それ以外では日本語変数、メソッド名が使えます。
class Kansaiben { public void はよ言いや(String 思っとる事) { System.out.println(思っとる事); } } class Main { public static void main (String[] args) { Kansaiben ワレ = new Kansaiben(); ワレ.はよ言いや("こんにちは新世界"); } }
◆G-BASIC(ぴゅう太)
手元に実行環境がないので適当ですみません。。
シキ OMOTTORUKOTO="こんにちは新世界" カケ OMOTTORUKOTO
というか、日本語変数名使えてないですねコレ。。
■日本語変数名、メソッド名はどんなシーンで使うとよいのか?
しかし実際に日本語変数名、関数名を使うシーンなどあるのでしょうか?
唯一あるとしたら「日本語テストメソッド」ではないかと思われます。
英語だと語彙力、文法力の問題などで、何を意味しているのかよくわからないテストメソッド名になることがありますが、日本語にすることによって分かりやすく、意味が伝わりやすいテストメソッドにすることが可能です。コメントに日本語の説明を書くのであれば、最初からメソッド名を日本語にしてしまうというのも一つの手です。
- 実感したメリット
- ちゃんと書けば、自分の書いたテストは、読んだときに圧倒的にわかりやすい
- テストメソッド名から曖昧さがなくなる(テスト設計になる)
- 実感したデメリット
- メソッド名に本人の癖が出やすい+自由度が高いので、他人のテストが読めない
- 冗長になりがち
- 結論
- 言うほど悪くないが、日本語一辺倒にならにようにしたり、他人と一緒にやるときはルールが欲しい
日本語テストメソッドについてどう思いますか?
http://www.slideshare.net/kenjikumaie/ss-25876730
■開発現場で実際に使ってみるとどんなことが起きるの?
日本語変数名、メソッド名で書いてみることは通常無いと思いますし、自分自身も書いたことが無いので、実際に使ってみた方の声をご覧下さい。
適切な用語を用いると、コメント不要になり、ソースの可読性も高まり良いことづくめでした。自分の作ったアブリが国際版になる可能性は皆無に近いし、アプリの使用者やソース閲覧者は会社関係の近親者に限定されるので、「日本語使用」に何の問題もありませんでした。
あぁ。それなのに、漢字を認識しない外国人開発者がプロジェクトに参画してきました。開口一番「コメントはどうでもよい。ソースが読めれば、システムの概略は読める。しかし、このソースは意味不明な記号で書かれている。通常のC# のソースに変えてくれ」うーん。 プロジェクトのソースを外国人が保守する事態は、想像していなかった。
・・・、楽天のように社内公用語が英語などになってもアウトですね。
■まとめ
- 主要な言語では軒並み日本語変数名、日本語メソッド名が使える
- コメントに日本語を書くなら日本語テストメソッド名を使うのもあり
- 外国人エンジニアが入ってきたり、英語が社内公用語になったりするとアウト
そもそも、何故このブログを書こうかと思ったかというと、paizaの問題提出で日本語変数名、メソッド名を使ったコードの提出があり、「日本語変数とか聞いたことはあったけど初めて見た」という状態だったので、プログラマの一般教養として調べてみました。paizaのコーディングスキルチェック問題ではC#、PHP、Ruby、Perlで日本語変数名、メソッド名が使えますので、ぜひ試してみてください!
↓こちらで日本語変数名のコード実行が可能です。
オンライン実行環境(paiza コーディングスキルチェック練習問題ページ)
※練習問題の実行環境ですが、実行環境用意するのが面倒な場合などに手っ取り早くコードの実行をする事も出来ます
※ちなみにpaizaはコーディングスキルで書類選考が無くなるIT/Webエンジニア特化の転職サイトです
paizaオンラインハッカソン! Vol.2 「女子大生とペアプロするだけの簡単なお仕事です!」2014/4/16〜2014/5/14で開催中です!
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
「paiza転職」は、自分のプログラミング力が他社で通用するか(こっそり)腕試しができる、IT/Webエンジニアのための転職サービスです。プログラミングスキルチェック(コーディングのテスト)を受けて、スコアが一定基準を超えれば、書類選考なしで複数の会社へ応募ができます。
まずはスキルチェックだけ、という使い方もできます。すぐには転職を考えていない方でも、自分のプログラミングスキルを客観的に知ることができますので、興味がある方はぜひ一度ご覧ください。
また、paiza転職をご利用いただいている企業の人事担当や、paiza転職を使って転職を成功した方々へのインタビューもございます。こちらもぜひチェックしてみてください。
詳しくはこちら