paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

新人プログラマが絶対に知っておきたい、日本語変数利用時の作法

f:id:paiza:20161213113328j:plain
Photo by https://www.flickr.com/photos/glenfc/8673547225/

新人プログラマはもちろんの事、今後海外で仕事をしようとしているエンジニア、国内でもオフショアを使っている方や、外国人エンジニアと一緒に仕事される方々に、日本人プログラマとして聞かれたときに答えられないと恥ずかしい!! 日本の心ともいうべき日本語変数、日本語メソッド名について、まとめてみました。

日本人エンジニアにも意外と知られていない日本語変数、日本語メソッド名。どのプログラミング言語で対応しているか知っていますか?日本人としてどんなシーンで使うとよいのでしょうか、また実際に使ってみるとどんな事が起きるのでしょうか?海外のエンジニアにこれらを聞かれて、あなたはきちんと答えられますか?

■日本語変数、日本語メソッド名対応のプログラミング言語

  1. C#
  2. PHP
  3. Python
  4. Ruby
  5. Java
  6. Perl
  7. node.js
  8. Objective-C(Xcode5)
  9. G-BASIC(ぴゅう太)

ここにあげたもの以外にも対応している言語は有ると思いますが、主要な言語について調べてみました。意外と対応している事が分かります。
代表的なものをいくつか実際に書いてみると下記のようになります。

C#

using System;
public class 大阪
{
	public static void Main()
	{
		var ワレ = new 上方言葉やねん();
		ワレ.はよ言いや("こんにちは新世界");
	}
}
public class 上方言葉やねん
{
	public void はよ言いや(string 思っとる事)
	{
		Console.WriteLine(思っとる事);
	}
}


試しに実際に実行してみましょう。…しかしC#の実行環境を作るのは面倒なのでpaizaコーディングスキルチェック練習問題のオンライン実行環境で試してみます。(※paizaはプログラミングスキルチェックで転職できる転職サイトですが。。)

f:id:paiza:20140419122817g:plain

動きます!ちゃんと結果のところに「こんにちは新世界」と出ます!!

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# のソースに変えてくれ」うーん。  プロジェクトのソースを外人が保守する事態は、想像していなかった。


Ognacの雑感

・・・、楽天のように社内公用語が英語などになってもアウトですね。

■まとめ

  1. 主要な言語では軒並み日本語変数名、日本語メソッド名が使える
  2. コメントに日本語書くなら日本語テストメソッド名を使うのも有り
  3. 外国人エンジニアがはいってくる、英語が社内公用語に成るとアウト


そもそも、何故このブログを書こうかと思ったかというと、paizaの問題提出で日本語変数名、メソッド名を使ったコードの提出があり、「日本語変数とか聞いた事有ったけど初めて見た」という状態だったので、プログラマの一般教養として調べてみました。paizaのコーディングスキルチェック問題ではC#PHPRubyPerlで日本語変数名、メソッド名が使えますので、是非試してみてください!

↓こちらで日本語変数名のコード実行が可能です。
オンライン実行環境(paiza コーディングスキルチェック練習問題ページ)

※練習問題の実行環境ですが、実行環境用意するのが面倒な場合などに手っ取り早くコードの実行をする事も出来ます
※ちなみにpaizaはコーディングスキルで書類選考が無くなるIT/Webエンジニア特化の転職サイトです



paizaオンラインハッカソン! Vol.2 「女子大生とペアプロするだけの簡単なお仕事です!」
2014/4/16〜2014/5/14で開催中です!


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編