私がJavaよりC#をおすすめする理由

2015年1月21日に投稿 → に更新

「Javaのコードって冗長でごちゃごちゃしてて嫌だなぁ…、でもPHPとかRubyみたいな動的型言語だとなんか不安…。」

私は10年間Javaを使った後、PHP、Ruby、Node.js等の動的型言語を使いました。動的型言語の簡潔さに魅了され大ファンになりました。

その結果、Javaをディスるようになってしまったのですが(笑)、動的型言語にも不満がないわけではありません。

IDEによる入力補完やシンボルの検索機能などは静的型言語の方が手厚いですし、静的型言語であればコンパイル時に発見されるようなコーディングミスが動的型言語では実行しないと見つからないというデメリットもあります。

なので、

「静的型言語で動的型言語みたく簡潔に書ける言語があればいいのになぁ…」

と思っていたら、 そんな言語があったんです。

C#です!

「えっ? C#ってJavaをマネしただけでしょ?」って?そんなことありません。

C#は静的型言語の良さを持ちながら動的型言語のような簡潔さを持つ素晴らしい言語なんです。その魅力の一端を紹介します。

Javaのアクセサ地獄を解決するC#のプロパティ

Javaにはフィールド(インスタンス変数)をクラス外から設定参照するアクセサメソッドという概念があります。 get~、set~というお決まりのコードです。

「だったらフィールドをpublicにすりゃいいじゃん」とおもうのですが、Javaの設計慣習では「publicにしてしまうと、後でそのフィールドにアクセス制限をかけることができないのでアクセサメソッド経由でフィールドにアクセスする設計がよい」とされています。

例えば、後になってpasswordに値をセットするロジックに文字列長が8未満だったらエラーにしたいとなった場合に以下のように対処できるという発想です。

まぁ、滅多にこんなことをすることはないでしょうけど、確かにアクセサメソッドを挟んでおくことで値の参照設定にロジックをはさむ柔軟性が生まれます。

ですが、そのためにいちいちアクセサメソッドを書くのは面倒です。

IDEによるアクセサコードの自動生成ができるので書く手間はある程度減らせますが、コードが冗長になる問題は残ります。 C#にはこれを解決するプロパティという機能があります。

さらに短い書き方もできます。

プロパティが良いのはpublicフィールドの参照とプロパティ参照の記法が同じなので初めpublicフィールドで定義しておいて後で必要になったらプロパティに変えることができます。

publicフィールドからプロパティに変更しても呼び出し側の記法は同じなので変更する必要はありません。

JavaのHashMapを連想配列のような記法で扱えるC#のDictionary

JavaのHashMapはデータの追加、取得をメソッドで行いますが、C#のDictionaryはLL言語が連想配列を扱うような記法で追加、取得ができます。

・JavaのHashMapコード

・C#のDictionaryコード

断然C#の方がすっきりしているし直観的にわかりやすいですね!

JavaのListを配列のような記法で扱えるC#のインデクサ

Javaには可変長配列を実装したArrayListというクラスがあります。これまたデータの追加、取得をメソッドで行います

C#にはインデクサという配列の記法を使ったアクセス方法があります。

C#だとRubyやJavaScriptに近い簡潔なコードが書けます!それでいて静的型チェックがなされる、スバラシー!!

Javaより9年早いクロージャ(Delegate)の導入

Javaは2014年にJava8でようやくクロージャが導入されました。

一方、C#にはVisual Studio 2005で搭載されたC#2.0の時点で、Javaのクロージャに相当するDelegateという機能がありました。

例としてListの中からemailがfoo@bar.comのデータを探すコードを書いてみます。 Java7までの書き方(いわゆるforおじさんの書き方)

C#だと同じ処理をDelegate(ラムダ式)を使って簡潔に書けます。

Javaは2014年にクロージャが導入されてようやく、C#と同じような書き方ができるようになりましたが、C#に比べて9年間もの間forおじさんをしなければならなかったわけです。

どの言語を使うかでプログラミングのトレンドについていきやすさが変わるってことです。

ですから、先進的な機能を次々と取り入れているC#の方が断然おすすめなんです!

おまけ: 給料で損した経験談

私と同じ失敗をされないよう経験をシェアしてます。

私が新卒で入った会社は社員数80名の零細ベンダーでした。

基本給は17万円で手取りは14万円くらいでした。仕事は客先常駐の業務システム開発(言語はJava)でした。

会社の先輩に「うちの会社って給料安すぎませんか?」って聞いてみたところ、

「どこもそんなもんだよ、ふつうふつう」

と言われて、「そうなのかなぁ…」と半信半疑ながら4年半勤めて年収は320万円でした…。

「やっぱ安すぎだろ!?」と思って試しに転職してみたら、

仕事内容はほぼ同じで年収が120万円もアップしたんです!

「こんなことがあっていいのか…」って感じですが、現実はどんな仕事をするかより、どの会社で働くかで給料が決まる面が大きいんですよね。

給料の高さが全てではありませんが、年収相場より大幅に安いという方は一度転職を検討してみると良いと思います。

相場がどれくらいか分からないという方はこちらの記事も、ぜひ読んでみて下さい!

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

ホームページを見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術