これから始めるRubyのエッセンスーー「非エンジニアの起業家が知っておくべきプログラミングの知識 #08」

TechAcademy__テックアカデミー____ITに特化したスクール編集部注:本稿は初心者向けにプログラミングやWebデザインの講座を開催している TechAcademy(テックアカデミー)による連載企画。「非エンジニアの起業家が知っておくべきプログラミングの知識」というテーマで数回に分けて極めて基礎的なプログラミングの基礎知識をお伝えする。全連載はこちらから

e1dfff81991da328100035c7a4ba08ce

「非エンジニアが知っておくべきプログラミングの知識」というテーマで、10回に分けてお届けする連載企画。第8回目のテーマは「これから始めるRuby基礎」です。いよいよこの記事を含めて、残り3回となりました。

前回は「これから始めるPHP基礎 – 動的なサイトを作るためのエッセンス」というテーマでお送りしました。今回は、PHPと同様にWebサーバー上で動的なWebサービスなどを開発する言語として、特に小規模な新規のスタートアップ企業などで採用が普及している「Ruby」について解説します。本連載は、インターネット業界で、これまで技術的なバックグラウンドを持たないまま起業した方や、これから独立・起業しようと思い立った方をサポートするための、連載記事です。

「Ruby」は日本発のプログラミング言語

ここ数年、Rubyという言葉を耳にすることが多くなりました。特に、本誌「THE BRIDGE」を読んでいるような方は、2〜3人の技術者チームから始まる「スタートアップ」企業の多くで、採用されやすい主要言語としてRubyが挙げられていることをご存知のことでしょう。Rubyについて、簡単な基礎知識を振り返ってみます。

  • 日本人のまつもとゆきひろ氏(通称 Matz 氏)が1995年、個人で開発をスタートした言語
  • プログラマーが楽しめることを設計思想としている
  • シンプルな文法にも関わらず、本格的なオブジェクト指向プログラミングが可能
  • コンパイルが不要なインタプリタ言語である
  • 変数にはどのような型の値でも代入することが可能な、動的型付け言語
  • コミュニティが存在し、Ruby on Railsなどのフレームワークにより世界的に認知が広がる

他にも数多くの特徴は列挙できますが、本記事を書く上でいくつかピックアップしてみました。

Rubyの公式サイトはこちらです。最新のアップデート情報は、こちらのサイトをチェックするようにしましょう。

Rubyは楽しい = 初学者の最初の選択肢になりやすいか?

開発者の本人が監修した『たのしいRuby』という書籍が有名です。Rubyは、コードを書く人自身の「楽しさ」を尊重した設計思想で誕生し、現在もコアな価値として残されたまま、オープンソースプロジェクトとしてアップデートを重ねています。プログラミング初学者にとって、その謳い文句は非常に魅力的なものに感じることでしょう。

「RubyやPHP、Java、Objective-C、どの言語から始めれば良いか?」という疑問から始まることが多い、初心者の最初の一歩。Rubyを薦める理由を挙げるとすれば、「今日からすぐにでも始められ、日本人コミュニティが確立して日本語でのブログ記事などが多く、コードを書きながら一歩一歩の学習に手応えを感じられる」ことでしょうか。

Macユーザーであれば最初からRubyがインストールされていますから、難しい環境構築(プログラムを動かすための設定)をしなくとも、簡単にプログラミングに触れることができます。

Rubyが日本発であることの強み

Rubyは日本発のプログラミング言語ですが、日本だけでなく(特に「Ruby on Rails(以下RoR)」などのフレームワークが世界中で受け入れられるようになって以降)、小規模なスタートアップが最初に採用する言語として、その傾向が顕著になっています。例えば、開発初期のTwitterは、RoRで書かれていました。その他にもRoRで構成されているWebサービスとして、Ask.fm、SlideShare、GitHub、COOKPAD、食べログ など挙げればキリがありません。

まつもとゆきひろ氏の功績のおかげで、Rubyを主要言語として選んだ日本人プログラマは、世界に浸透しつつあるRubyの世界で、日本人であることに「ある種の誇り」のようなものを感じることもあるでしょう。昨今の日本において、IT教育の制度や、技術者の絶対数が足らない状況において、一人ひとりのエンジニアがそうした自尊心を持ったモチベーションで、世界中に潜在している問題解決のためのWebサービスや技術イノベーションを生み出すことは、とても良い状況だと考えられます。

cc428863871dbd7b84f5197181e9841d
photo credit: elliottcable via photopin cc

Rubyで “Hello World!”

前置きはさておき、定番の「Hello world!」を書いてみましょう。JavaScript、PHPでも同様におこなってきましたので、前回までの連載と合わせて、ぜひその違いなどを見比べてみてください。

Rubyでワンライナーを書いてみる

せっかくですからRubyの魅力を伝えるために、Hello World! をテキストエディタで保存するのではなく、直接コマンドライン上でワンライナー(1行で書く処理のこと)を書いてみましょう。Macの方はTerminalを開いて、以下のコマンドを入力してみてください。

ruby -e 'print "Hello world\n"'

Windowsの方は、OSや環境によってRubyのセットアップが必要な場合もありますので、ここでいったん環境構築のためにGoogle検索などを活用して、コマンドライン操作ができるまで保留にしておいてください。

Hello World! が画面上に表示されれば成功です。Rubyは文法がシンプルで柔軟性があり、助長な表現を省いた「ワンライナー」の記述が、ほかの言語に比べて比較的好まれやすい傾向にあります。より高度なアルゴリズムや処理を実現するワンライナーの洗練さを競い合う人たちもいます。(Perlのほうがより短く書けますが、Rubyでも十分です。)

実際に使える便利なワンライナー

デジタルカメラから取り込んだ9枚の画像が入った、「/2014/0725 」というフォルダがあることを想像してみてください。フォルダ内のそれぞれの画像は、1.JPG、2.JPG といった連番名で 9.JPG まで保存されています。

7bc151a1f7a7d674670342e0aa1296c1

これらの画像に対して、一括してリネーム(名前変更)する処理を、Rubyのワンライナーで記述することができます。まずは、要求定義(どうしたいか?)を考えてみましょう。

ここまでの連載で使ってきたアルゴリズム(関数、繰り返し処理など)を組み合わせて考えてみます。

  • 特定のフォルダに含まれる画像ファイルに対して操作をおこないたい → 処理を1回ずつ、終わるまで10回繰り返す
  • ファイル名は、Webにアップロードすることを想定して、「img_002.jpg」という形式にリネームする

まずは、コマンドライン上でで、リネームしたいフォルダ階層に移動(cd)します。

ruby -e '(1..9).each { |i| system "mv #{i}.JPG img_00#{i}.jpg" }'

586da7cdb0e3f08133daeba1041f881f

上記のコマンドを入力すると、そのフォルダ階層の 1〜9.JPGのファイル名が、img_01.jpg といった名前に変更されます。このように、シンプルな記述でも簡単な処理をおこなうことができます。

Rubyの学習方法と、コミュニティについて今日6時間だけ勉強すれば、明日からあなたもRubyist

Rubyは入門しやすいことが特徴です。学習方法のステップとして、以下のようなものを参考程度にご紹介します。

  • 丁寧に解説されたWeb上の無料学習リソース、ブログサイトを活用して、「まずは6時間だけ」と決めて夢中になってみましょう。定番のドットインストールや、まつもとゆきひろ氏も関わっているミニツクといったWebサイトを読んでみましょう
  • Code SchoolCode AcademyなどWebブラウザ上でコマンドライン体験ができるサイトを活用してみる
  • まず6時間は、Webで手に入る情報だけでRubyについて全体像を掴んでみましょう。そのあとに、入念な編集作業を経て発刊された書籍での学習をお薦めします。入門書は、前述した『たのしいRuby』など複数ありますので、書店のコンピュータ書籍コーナーで見比べてみると良いでしょう
  • 次のステップとして、Rubyの言語仕様から「実際にWeb上で動くサービス」にするために、Ruby on Railsや、より軽量なフレームワークである「Sinatra」などを学んでみてください。「Ruby on Railsチュートリアル」という書籍並みの情報量を扱って無料で公開しているWebサイトのほか、書籍では『パーフェクトRuby』『パーフェクトRuby on Rails』を机の上に置いて、リファレンスとして何度も読み重ねつつ、自分が作りたいもののイメージを手を動かして作り始めるのが、上達のコツです

中学生も、女子大生も触れているRuby

“元”中学生Rubyコミッターとして有名になった「そらは」さん(@sora_h)は、当時14歳でRubyの言語仕様の改善に関わる「コミッタ」として史上最年少で参加し、話題になりました。

彼は高校進学せず、現在はクックパッドで働いています。また、テレビCMにも出演する女優で、慶應義塾大学の学生でもあった池澤あやかさんは、大学の授業や研究室でRubyやRoRを学んだことがきっかけでWeb上でも情報発信するようになり、ちょうど2014年7月に『小学生から楽しむ Rubyプログラミング』という本を刊行しました。最近では、より下の年代へと、Rubyでプログラミングを学ぶような機会がみられるようになりました。

Rubyのフレームワークやライブラリ、定番ツール

「Ruby」を用いた開発で採用されることの多いWebアプリケーション開発フレームワークや、定番ツールには、RoRのほか、luentd、Chef、Capistrano、Vagrant、Redmine、Sass、Compassなど数多く挙げられます。中には、これらのツール群の充実のお陰で「Ruby」自体の存在価値が高められたと言っても過言ではないものも存在します。

RubyGemという圧倒的なライブラリの存在

一般的にはプログラミング言語と同様、Rubyにも外部の開発者が提供している、サードパーティ製のライブラリが提供されています。 それらの多くは、 “gem”(ジェム)という形式で公開されています。公式サイトから引用すると、”RubyGemsとはライブラリの作成や公開、インストールを助けるシステム” です。Ruby のバージョン 1.9 以降、RubyGems は標準添付となっています。

例えばRoRでよく使われるRubyの定番Gemとして、ユーザー登録認証の「Devise」、オブジェクトをページング制御してくれる「kaminari」、デプロイツールの「Capistrano」、デバッグツールとして「pry」などが数多くあります。

まとめ

世界には様々な性格・志向性のプログラマーがいますが、Rubyを自ら選択して活躍しているプログラマの多くには、Rubyの特徴のような性格の共通点が挙げられることも、しばしばあります。「設計思想を尊重し、きれいなコードを書く(=他の人が読みやすいコードを書く」「助長な表現を省いて、同じ記述を繰り返さず、なるべくシンプルに実装する」「楽しみながら仕事をする」といったように。あなたの身の回りや、メディアに出ているエンジニアの方々で、そんな気概をもってプログラマとしての職業に取り組んでいる人が、何人か見当たりませんか?

ffd12e13d1bc397e2c7c2cb6ae3ba84e
photo credit: Batuhan Kök via photopin cc

「シンプル」ということは、同時にそれだけ奥が深いということも示唆しています。あるいは、同じ言語を選んだときに「初心者と上級者がはっきりと区別できる」とも言えるでしょう。つまり、初学者が入門しやすく、上級者にとっては磨き上げることができる言語 ─ 数あるプログラミング言語の中で、ただ単に技術的な特徴を列挙するのではなく、1つのコラムとして説明するならば、それがRubyの真髄のような気がします。

この記事も含めて過去3回で、Webブラウザ上(クライアント側)で動作するJavaScript、サーバーサイドで動作するスクリプト言語のPHP・Rubyについて、初歩的ですが、基礎的な構文やコミュニティについて紹介しました。

次回の第9回は、データベースについて解説していきます。