Rubyで最高品質のコードを書くには

 

Rubyが好き!

Rubyに関心がありますか?なぜ関心があるのでしょうか。仕事が多くて就職に困らないからでしょうか?それとも書いていてワクワクするからですか?

ここでは、プログラミングを愛する方々に向けて、Rubyで最高のプログラミング人生を歩むためのヒントをお届けしたいと思います。

そもそも、Rubyを使ってどのような世界が実現できるのでしょうか。そして、良いコードとはなにか?といったソフトウェア工学に関する全般的なお話もしていこうと思います。

ちなみに、Rubyで出来ることは他のプログラミング言語でもできます。たとえばPythonは実装から実行までが非常に素早いので、ブロックチェーンや機械学習のコードに向いているというのはあります。それと同様に、Rubyは書きやすく、可読性が高く、そしてRuby on Railsフレームワークがあるので大規模開発に向いています。

今回は、Rubyをテーマにしていますが、一般的なプログラミングに通じるところがあると思います。

良いコードとは一体なに?

そもそも良いコードとは何でしょうか。

エンジニアは昨今、非常に人気の職種です。スクールで教えてもらってそのままフリーランスになったり、なかには学生時代に学んでそのまま新卒フリーランスエンジニアになったりと、キャリア的に冒険する方もいらっしゃいます。

ただし、エンジニア・プログラマは、書いたコードや仕上がりがすべてです。いくら口がうまくとも、コードの品質が低ければ、評価されづらいのです。特にフリーランスエンジニアは継続受注につながらないため、死活問題となります。

では、品質の高いコードとはどのようなものでしょうか。

  1. 設計した人間の考えが、網羅的かつ明瞭に、理解できるプログラムであること
  2. 余計なコードが積み増しされていないこと

が考えられます。

それぞれ、みていきましょう。

1.設計した人間の考えが、網羅的かつ明瞭に、理解できるプログラムであること

大きなプロジェクトになると、設計者と実装者が別々になります。よって、設計したシステム・エンジニアの意図に沿わないコードを書くのは、プログラマにとってやってはいけないことです。

もちろん、仕様上の欠陥といった、バグが存在することがありますので、それをそのまま実装してバグを世間に広めるのもNGです。仕様上の欠陥を適切に指摘し、上流工程の人たちに直してもらうのもまた、エンジニアの仕事なのです。

Rubyは非常に可読性が高い言語です。つまり、何を書いてあるのか、どういう実装なのかが極めてわかりやすいプログラム言語となります。

よって、実装してテストの段階に入った時点で、仕様上のバグが発覚して再度やりなおし、ということになっては、かなりの手戻りが発生して工数がかかってしまいます。設計のバグをちゃんとプログラマ・エンジニアが指摘して、上流で再検討しなくてはなりません。

さらには、設計がクリアに実装へ反映されていることも大切です。明瞭であることは、大きな強みとなります。考えがストレートにコードへ反映されるため、日頃からクリアに考えていることが何よりも大きな強みとなるでしょう。

Rubyは、明瞭な思考を後押ししてくれる言語でもあります。Rubyは日本語を前提としたコードのため、日本語との親和性が高く、思考をそのまま実装でき、なおかつシンプルで美しいコードが書けるのです。よって、Rubyでバグを出さないことは難しいものの、極めて書きやすいコードが実装できることは間違いありません。

また、小さな組織では、設計者=実装者のケースもあります。つまり、自分で設計して自分でコードを書くケースです。フリーランスエンジニアが、委託先のCEOなどの意見を受けて、システム設計を行い、そしてそのまま自分でも実装するというケースです。

その場合、重要なことがいくつかあります。フリーランスエンジニアですので、いつかはプロジェクトから抜けることが予想されます。よって、自分が設計して書いたRubyのコードを、ドキュメントに残すことが大切なのです。そうしないと、自分が抜けた後、システムに何が書かれているのか外部の人間が理解することができません。いちいち、実装のできない人がRubyを読める人に解析を頼まなくてはならず、大変なコストを残してやめることになってしまいます。それは職業のマナー上も許されませんし、自分の評判にも響きます。

これは「ドキュメントを残すことは一般的ではなく、ソースコードを読めば解決」と考えるかもしれません。しかし、具体的にこのドキュメント文化を残している企業の代表例が、Amazon Japanです。AWSやAmazon Primeの動画といった、革新的なサービスを次々リリースしているAmazonは、日本のオフィスにエンジニアが大勢います。しかし外資系であるがゆえに、入れ替わりも激しく、同時に激務であることはよく知られています。

そこで、Amazonが考案した文化が「ドキュメント・ドリブン」すなわち、仕事の何もかもを文書に残すということです。とにかくドキュメント・ドリブンの文化があるため、文書を残すという習慣は、みならうべきものです。

2.余計なコードが積み増しされていないこと


そして2点目、余計なコードが積み増しされていないことも大切です。一般的に、エンジニア以外の人が、エンジニアの生産性を推量するのは極めて困難です。そのため、システム・エンジニアの業界、すなわちSIerなどでは、時間単価で工数がはかられます。自分が一時間にどの程度の生産をすることができるのか、それをはかるのもまた難しいものなのです。

しかし、時間単価ではかれば、見積もりがしやすいかわりに、無限に残業して工数を稼ぎ、生活残業するというSIer独自の欠点も浮き彫りとなります。そのかわり、IT業界には時間ではかる以上に生産性を高める方法が見つからないのも事実なのです。

そこで、考えられるのが請負タイプのフリーランスエンジニア契約です。これをお読みになっているということは、フリーランスエンジニアであるか、もしくはそれを将来的に検討している方だと思いますが、請負型であると、結果に応じて報酬が支払われるので、余計な残業をしなくとも、たっぷり稼げるのです。

初級のエンジニアは、働いていることをアピールするため、コードをとにかくたくさん書いてしまいがちです。もちろん、絵画と一緒でコードは書けば書くほど美しく、洗練され、上手になってきます。しかし、それよりは思考を深くすべきで、アルゴリズムを学び、上級者のコードを見て、シンプルかつ洗練されたコードを書いていくべきなのです。そして、洗練されたエンジニアのコードは、よりコード数が少なくなりがちです。

たとえば、1行ですべてを表現する「ワンライナー・プログラム」などにチャレンジしてみるのもいいかもしれません。もちろん、Rubyは正規表現が使えますので、ワンライナー・プログラムも実装可能です。

ただ、「2のワンライナー・プログラムはコードが読みづらく、1の可読性と矛盾するのでは?」と思われる鋭いエンジニアの方もいるかもしれません。実は、複雑なコードが書けて、同時にドキュメントにアウトプットする習慣をつければつけるほど、コードはきれいにシンプルになっていくのです。

Rubyは可読性が高く、またメンテナンス性も高いことで知られています。コードが読みやすく、なおかつ、アルゴリズムやロジックの面で、共通化されたコードが書けるのです。これが他のプログラムではこうはいきません。たとえば、C言語なら、10人のエンジニアがいれば10通りのプログラムがあり、初心者が開発に混じると、コードの品質がバラバラになってしまいます。

しかしRubyにおいては文法上そのようなことが起こりづらく、メンテナンス性が高くなります。「スキルの壁を超える」と表現されるこうしたRubyの特徴は、コードを学んでいく上でパワフルな味方となってくれるでしょう。

よって、安心してコードをたくさん書いて修行しましょう!

Rubyを学ぶ上で重要なこと

Rubyは、比較的簡単に学べる言語です。Rubyがわからなければ、これ以上簡単に初心者が学べるプログラム言語はかなり限定的となります。それぐらい、初心者に向けた言語なのです。その上で、同時に上級者も書けるコードとなります。

しかし、誰が書いても似たようなコードになるわけではないので、Rubyを書く際には、スキルの差が露骨にでてしまうのです。

Rubyを学ぶ上で大切なことはたくさんあります。Rubyは日本人プログラマが、日本語との親和性を高めるため開発した言語でありながらも、オブジェクト指向をシンプルに理解できるため、爆発的に広がりました。そして、アメリカで最初は人気となり、逆輸入されて日本でもRubyの魅力が伝わりましたから、日本語のソースやドキュメントが豊富にあり、勉強しやすいのです。

そのうち、あえて初めてRubyを触る方に向けてメッセージをお伝えするとしたら、まず、適切な教材を選ぶこと、そして、環境構築を自分で行うこと、さらには、コードをたくさん書くことなどが上げられます。

教材は、独習でもレッスンに通っても構いません。大切なのは継続と量です。量が質に転嫁することはありますので、最初は膨大なコードを読んで書きましょう。

さらに重要な点として、フリーランスエンジニアとして通用するためには、環境構築ができなければならないのです。スクールが準備した環境の上で、Rubyで「HelloWorld」とやるだけでは、いつまでたっても上達しません。

よって、MacbookでもWindowsでもLinuxでも構わないので、Rubyの環境構築をしてみてください。

あらゆる環境で、仕事空間を作ることができるようになったころには、ソフトウェアに関するかなりの知識が身についているはずです。まずは、Rubyが書けるだけでなく、環境を作る力も学んでみましょう。

おすすめ案件

関連タグ

フリーランスエンジニアの案件をお探しします!
上記案件のほか、非公開のRuby案件も多数あります