DIVE INTO CODE

2019年4月2日

Rubyでできることいろいろまとめてみた

Rubyでできることを、形態別、目的別の2つの観点から詳しくご紹介します。

【こんな方におすすめ】
・プログラミングを学びたいが、どの言語を学ぼうか迷っている方
・Rubyの特徴を詳しく知りたい方
・Rubyでできること、Rubyだけではできないことを理解したい方

【目次】
1.Rubyでできるアプリケーションは大きく4種類
2.ゲームアプリケーションは子供でも作れてしまう
3.Webアプリケーションの可能性は無限大
4.組み込みアプリケーションで農業もIT化!
5.Rubyで業務効率化もできる

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

Rubyでできるアプリケーションは大きく4種類

Rubyでできることはいろいろあるのですが、「形態別」「目的別」の2つの切り口で話すのがいいかなと思っています。

では、形態別から教えてください。

形態別は、提供する形態ですね。例えばゲームアプリケーションWebアプリケーション、つまりネットに接続して使うシステムなどです。あとは組み込みアプリケーションと言って、工場の生産ラインにある機械の中など、ハードウェアの中で動かすものがあります。あとはWebアプリケーションじゃなくても、パソコンの中で動かすような、作業を効率化するために作る形態があります。形態別はこのくらい押さえておけば良いです。
それぞれRubyで作れるんですが、 Rubyだけではできないものもあるので、注意したほうが良いです。特にスマホアプリは、Rubyという言語だけで開発するのは難しいです。

へえ、そうなんですか。

iPhone、Androidで動く形で、開発支援をしてくれるツールを使わなければいけないんです。

規定みたいなのがあるんですね。

そうです。JavaとかSwiftといった言語が揃っているんですけど、Rubyはいろんな形態のアプリが作れるので、あまりスマホだけに特化して作られていないんです。

逆に幅が広いんですね。

そうです。そういう環境が誰かが出していればできるかもしれないんですが、基本は使わないですかね。

ゲームアプリケーションは子供でも作れてしまう

目的別では、まずゲームアプリケーション。以前、「中高生国際Rubyプログラミングコンテスト」の運営委員を務めたことがあり、発表内容を見たんです。パソコンの中で動くシミュレーションゲーム、アクションゲーム、あとは落ちゲーと呼ばれるものが作れちゃうんですね。普通に中学生、高校生が作れるんです。

何歳からやってるんですかね?すごいですね。

私のセミナーの参加者の中で、最年少は11歳。4年くらい前、お母様と来ました。大人が他に10数人いました。Railsで開発するセミナーでしたが、確かその子が一番早くできました。その日は心なしか、大人たちの表情が険しかったですね(笑)。

これまで勉強した人は一発で抜かれてしまった、という感覚ですよね。

コワーキングスペースで、椅子に座ると足が床に届いてなかったような小柄な子でした(笑)。
ゲームを作るのは、中高生でもパソコンクラブや高専などでやっていたりしますね。

それだけ早くできるのは、Ruby on Railsのカジュアルさですかね?

Ruby自体が直感的に書きやすいので好まれるのかもしれません。まずはゲームを作れることを覚えておいてください。最近プログラミングが義務教育化されるという話がありますが、Scratchというツールがあります。簡単に画面上で処理の流れを組んで人形を動かすことができたり。それを真似て、良いものを作ろうというSmalrubyというものもあります。子供向けにもRubyを展開しようとしています。

いろいろな年代の人が使う可能性がありますね。

ですね、遊びとしてもいいかもしれません。

そこから学べますね。

そうですね。

Webアプリケーションの可能性は無限大

Webアプリケーションの場合、目的はたくさんあります。例えばDIVE INTO CODEの学習システムはRuby on RailsでWebアプリケーションを作っています。受講生がログインして、その中で質問したり、課題を評価してもらったり、テキスト見たり・・・ということをやっていきますね。

他のサービスではどのようなものがありますか?

他にはAirbnbという民泊のサービスがあります。世界中のどこでも、例えばルワンダに行っても宿泊施設が借りられます。あとはマッチングシステムといって、ネット上で何かを売りたい人と買いたい人をマッチングするシステムを作ることもできます。勤怠管理などの業務用システムだって作れますよね。SNSだってWebアプリケーションとして作れます。
インターネットにアクセスして使うシステムだったら何でも作れるでしょう、というのが基本です。もちろんRubyだけで作っている訳ではないですが、Rubyで骨格だけでも作れるんです。

幅広いんですね。

そうなんですよ。なので可能性が大きいです。電車移動中に、スマホでネットにアクセスして見る人も多いですが、ネットでアクセスするサイトだったら、最近スマホのブラウザだと大きさも変化するじゃないですか。そうすれば、スマホアプリでなくともWebアプリだけでも見れますね。起業家たちも、まずそこから入ろう、と優先順位を決める人も多いですね。

Android、iOSと分けなくてもいいということですね、Webだったら。

そういうのを個別に作ると、お金も時間もかかります。本当にスマホアプリじゃなければいけないの?という観点は起業を考えている人には重要ですね。

「アプリを作ろう」とばかり考えちゃいそうですね。

実際にスマホアプリを作ると、インターネットにアクセスして使わせたい場合がありますよね。完全にスマホの中だけでゲームするなら別ですけど、対戦したりとか、ランキング出したりとか、他の人と交流させたいじゃないですか。そうしないとユーザーが増えないと思うじゃないですか。
そうするとネットにアクセスすることは必須なんですよ。結局、アプリを作っても、ネット上のサーバーと通信しなければならない。そのシステムはRuby on RailsやRubyで作るんです。
結局別のシステムは作るので、最初にWebブラウザで使ってもらえばいいんじゃないか、という話になります。アプリを作ることは効果があるのかないのかは、考えた方が良いです。

逆にアプリでしか使えない言語もあったりするんですか?

あると思いますよ。例えばスマホアプリであれば、位置情報などのセンサー技術です。それを使いたい場合は、スマホの中の仕組みにアクセスするので、アプリが必要です。今何時だとか、どう動いているかとかは、アプリでしかアクセスできないんです。

Webだと感知できないんですね。

ざっくりはできるんですが、もっと精度を上げたいとか、アプリならではのものを使いたいとなると、どうしてもアプリになります。他のアプリとの連携や、そこから情報を取ることもですね。あとは操作性ですね。操作性の方が重視されるかもしれないです。

サクサク進んだりとか。それはありますよね。

ネットにつないでなくても使えることもですね。ネットにつなげないと使えないとだいぶ使い勝手が悪いじゃないですか。新幹線に乗ったら使えなくなりました、とか。

イライラするときありますね(笑)。

組み込みアプリケーションで農業もIT化!

mrubyっていう、Rubyの亜種みたいなものがあるんですよ。Rubyを作ったまつもとゆきひろさんと一緒にコミュニティで開発している人たちが、色々な分野でRubyを普及させていきたいということで作られました。
彼らと製造業の企業とで、ハードウェアの中で動くものを作っていこうという活動があるんですよ。そういう端末は普通のパソコンと違ってメモリがないし、CPUも弱いです。

白黒の画面にタッチをして、というような。タッチもできたらすごいくらいですね。

そうです。やっぱりハードウェアの限界があって、より少ないメモリ容量やより少ないコード量でないと実装ができなかったりするんですよね。ファイルも入らなかったり、ネットもなかったり。いろいろな制約条件がある中でもmrubyを使えば、工場の生産ラインに埋め込まれている機械の中にプログラムを仕込んで、それを動かせたりします
スマホほど高機能ではないデバイスでも、例えば温度を検知するような端末にプログラムを仕込んでおいて、その端末と連携させることもできるようになるんですよね。

スマホは高性能ですけど、スマホの傾きセンターだけにアプリを入れる感覚ですね。

Rubyを作ったまつもとゆきひろさんがお住まいの島根県で、RubyWorld Conferenceというものが開催されています。そこでブースが出されているんですが、島根県では、水田の水質調査や、水が枯れていないかをリモートでセンシングする仕組みなど、農業に活かすことを研究されています。ITがなかなか進んでいない特定の産業でも、組み込みを使うことでシステム化できる可能性が高いんです。

mrubyを活用することで、ネットやアプリ、システムが組み込まれていない業界も、どんどん進んでいくことができるんですね。

それを推進している方々がいるので、「Rubyでできたら素敵だよね」ということが広がっていく訳ですよね。

いいですね、色々な人が挑戦できますしね。

そうですね。目的によりますけど、そういう世界があることを知っておくと良いと思います。

Rubyで業務効率化もできる

最後に、業務効率化の話を。例えば、自分の端末で、自動で毎日何かのマスターデータを抜いてくるようなことができます。

毎回確認するのは大変ですよね。

それを手作業でやってたら面倒じゃないですか。このような「皆やるよね」という観点で作られたRubyの簡易プログラムがあって、それを流用することで実装できるんですよ。

他の用途に転用することもできますね。

そうです。これはPythonも同じですけど、Rubyでもできます。そのように、他の人が作ったものが世の中にあるので、それを利用すれば可能性は無限大。なので目的別は非常に難しくて、ネットにアクセスして見に行くとか、ファイルを加工するとか、一括変換で名前を変えるとか、業務システムの裏側で動く連携のためのファイルを作るとか・・・マニアックなことを言うといろいろあります。

幅広く見ていいんですね。どうしても今流行りのWebアプリのイメージが強いですけれども、産業の中で使えないかという視点もありますね。

仕事の中で「自動化できないかな」と思っている単純作業はできる可能性がありますね

買い物で「毎回これ忘れちゃうからどうにかできないかな」とか身近なことでもいいですよね。

そうですね、それを本当に作るほどのコストをかけるのかということはありますけどね(笑)。

確かに(笑)。でもそういう簡単なところから作ってみて慣れていって、新しいことに挑戦していくのもいいですね。

あまり可能性を限定せずに、楽しんでいただけるといいんじゃないかなと思います。

すごくわかりやすかったです!ありがとうございました。

まとめ

・Rubyでできることは、形態別と目的別の2つの軸で捉えると良い!
・形態別では、①ゲームアプリケーション、②Webアプリケーション、③組み込みアプリケーション、④その他端末の中で動くアプリケーションの大きく4種類がある。Rubyは直感的に書きやすい言語なので子供でもゲームアプリケーションを作れるし、スマホアプリの前にWebアプリケーションから開発することにも向いている。また、スマホほど高機能な端末でなくとも、組み込みアプリケーションを実装することが可能!
・目的別は、様々なものがあるので、形態別に応じて事例を見てみると良い!
・スマホアプリ自体を作ることができないなど、Rubyだけではできないこともあるので注意が必要

DIVE INTO CODEのことをもっと知ってみませんか?