1. ホーム
  2. 格安スマホ
  3. 大学研究の現場から
  4. プログラミングで「面白いこと」を実現してみよう
公開日:2020/11/18
最終更新日:2020/11/18

プログラミングで「面白いこと」を実現してみよう

日々新しいアプリがリリースされています。仕事や勉強に役立つもの、家族や友人とのコミュニケーションを助けてくれるものなど、種類も様々です。

今回は、ソフトウェア工学やペ―レーティングシステムを研究されている、京都産業大学の荻原剛志先生にお話を伺いました。記事を読めば、プログラミングを使った「やりたいこと」が見つかるかもしれません!

荻原 剛志(おぎはら・たけし)
荻原先生の画像

京都産業大学 情報理工学部 情報理工学科 教授。工学博士(大阪大学)。

大阪大学情報処理教育センターでは「NeXTコンピュータシステム」の導入に携わり、あのスティーブ・ジョブズとも会っている。奈良先端科学技術大学院大学、神戸大学、高知工科大学、大阪大学大学院を経て2008年より現職。

専門分野はソフトウェア工学、オペ―レーティングシステム、データ圧縮アルゴリズム。「Objective-C」や「Swift」について解説した著書がある。

プログラミングで生み出されるユニークなアプリ

ー先生は以前、iPhoneアプリの勉強会をされていたそうですね?

今は中断していますが、私はiPhoneアプリやアプリを作るためのプログラミング言語の専門家として参加していました。

勉強会は、京都の大学生や大学院生、教員だけでなく、若手の技術者・開発者など有志で集まって、アプリ開発の情報などを交換する場でした。京都産業大学だけでなく、京都大学や立命館大学からも学生がたくさん参加してくれましたね。

勉強会には毎回20名程度が集まり、iPhoneに直接関わる情報だけでなく、例えばIoT(Internet of Things:モノのインターネット)についても早い段階から話題にあがっていました。ベンチャー企業を立ち上げて先進的な取り組みをしている社会人との交流もあって、とても面白い集まりでしたよ。

ー勉強会の参加者が、どのようなiPhoneアプリを開発したのか気になります

勉強会をコーディネートされていたのは、京都産業大学で同じ情報理工学部の安田豊先生です。

安田先生はソフトウェア開発関係のいくつかの団体でも活躍しておられて、有志の学生さんたちと一緒にユニークなアプリやガジェット(電子機器)をいくつも開発されています。これらはオープンキャンパスで披露したり、学外のイベントなどで展示したりすることもあるのですが、特に印象に残っているのは iPhoneでエアー鉋(かんな)がけをするアプリです。

iPhoneにはデバイスの動きを検知する加速度センサーが搭載されています。このセンサーを利用したアプリで、iPhoneを鉋に見立てて動かすと、きれいに削れたかどうかを判定してくれるというものでした。面白いですよね。

必要な知識は「面白いことがやりたい」思いについてくるもの

ー専門知識のない私たちがアプリを作ることはできますか?

何を作るかによって、開発者に求められる力量は変わります。

道を歩いていて敵キャラクターと出会い、戦うか逃げるかをメニューで選んだ結果、経験値が上がったりストーリーが進んだりする、簡単な構造のRPGを作る場合。この程度の仕組みはすでに用意されているので、そこまで専門的なプログラミングの知識がなくても作れます。

ところが、操作性の自由度が高いシューティングゲームを作りたければ、難易度は格段に上がります。

もしチャレンジしたければ、まずUnityのような広く利用されている開発環境(ソフトウェアを開発するためのソフト)をインストールして、先に公開されているゲームを参考に「どんなことができるか」見てみるといいでしょう。そこで、機体の色を変えたり、操作スピードを調整したり、自分が実現したい仕組みを付け足していく方法がおすすめです。

まずは、「効率良く作りたいものが作れる方法」を探してみましょう。すべてをゼロから作り上げようとすると、ものすごく大変ですから(笑)。

ー素人がアプリを開発するのは難しいのでしょうか

「難しそう」と構えていると、何も生み出せないと私は思います。まずは「こんな面白いことがやりたい」「自分はこれが作りたい」を考えることが大事ではないでしょうか。

作りたいものに近づくために、どのような知識が必要かを考えてみましょう。そして、まずは可能な範囲で形にしてみることです。最初から完璧なものは作れません。少しずつ勉強しながら改善していくことをおすすめします。

身近にアプリやゲームを開発している人がいれば、「どんなことをしているの?」と聞いてみるのもいいですね。

様々なプログラミング言語がスマートフォンを動かしている

ープログラミング言語を学ぼうと思ったら、何から始めるとようのでしょうか

京都産業大学の学生であれば、まずはC言語、次にJava、あとはPythonなどの順に学んでいきます。どこの大学でも同じような感じでしょう。

独自に学ぶとすれば、JavaScriptという言語なんかは面白いと思いますよ。

JavaScriptを使ってコードを書くと、すぐにWebのブラウザ上で動かすことができます。WindowsやMacといったことに関係なく、Webのブラウザが動作すればそこでいろいろと試せる点も魅力です。

WebにあるJavaScriptのソースコードを試しながら、いろいろな機能を付け加えてみるといいですね。JavaScriptをきっかけにプログラミングに興味を持った人も少なくないようです。

ープログラミングを学んでいくと、オブジェクト指向、オブジェクト指向言語といった言葉を知ることになりますが、これはどういったものなのでしょうか?

ソフトウェアを作る際に、データを処理したり、画面に表示したりするためのプログラムを書きますね。そのプログラムは、どこかからか「動け」と指示されて動くわけです。

一方のデータは、ふだんはハードディスクやクラウドにあって、必要な場合に取り出したり書き換えたりします。

プログラムやデータは、どちらもプログラムを構成する要素であって、何か「お願い」すると動作するものです。その点に注目して抽象化し、区別なく「オブジェクト」と呼ぼうということになりました。

つまり、「お願いして何かしてくれるもの」はプログラムでもデータでもオブジェクトなんです。

ただし、オブジェクト指向言語には「これ」という定義がありません。

例えば、JavaやPython、日本で生まれたRubyなどはオブジェクト指向として認識されています。JavaScriptもオブジェクト指向言語にくくられますが、その中でも「ちょっと変なやつ」という感じです。

ー利用者からは、オブジェクトの中身がどうなっているかわからないのでしょうか

わからないようになっています。実際に動作を指示する私たちからは、オブジェクトの中身がプログラムかデータかの区別は見えないようになっているからです。これをモジュール化といいます。

モジュール化したソフトウェアは、決まったやり方で指示すれば、中身がプログラムだろうがデータだろうが動くようになっています。スマートフォンであれば、タップやスワイプといった抽象的な指示で、様々な動作ができるようになっていますよね。

タップやスワイプのような単純な指示で「どう動くか」がオブジェクトでは定義されていて、このオブジェクトを組み合わせることでソフトウェアができているんです。

オブジェクト指向の考え方と、今のコンピュータの使い方は、非常に親和性の高いと言えます。とても便利です。

プログラミングで「ラノベの矛盾」を見つける研究

ー先生が注目されているプログラミング言語は何ですか?

私が面白いと思っているのはSwiftです。

Swiftの前にObjective-Cという言語がありました。Objective-Cは、Appleの共同設立者の一人であるスティーブ・ジョブズと関わりがあります。

ジョブズはAppleから一度離れて設立したNeXT社で、NeXTコンピュータという非常に性能の良い製品を生み出しました。このNeXTコンピュータを、私の勤める大阪大学が、当時としては世界でも最大規模である400台を導入したんですね。私も導入に携わりました。

このNeXTコンピュータでアプリケーションプログラムを書くための言語がObjective-Cだったというわけです。Objective-Cはその名の通りオブジェクト指向言語なのですが、あまり知られていませんでした。

それで、専門書もなかったので自分で勉強を始めたところ、面白くなってしまったんですね。そして、2014年にObjective-Cに代わる言語として誕生したのがSwiftです。

Objective-Cでソフトウェアを開発していた人がスムーズに移れるよう、Appleは工夫してSwiftの仕組みを作っています。私はもともとObjective-Cの知識があったので、それも活かしつつSwiftを研究しながらソフトウェアも開発しているというわけです。

ー現在、先生が進めておられる研究は何ですか?

物語のつじつまが合っているかを検証するプログラムを作っています。ライトノベルが好きな大学院生が、「ラノベはWeb版と書籍版、テレビアニメでストーリーが変わったり省略されたりするけれど、そこに矛盾はないか調べたい」と提案してくれたのがきっかけです。

プログラミング言語は、プログラムを動かすためのものです。しかし、もっと範囲を広げると、データとしてちゃんとできているか、相互のつながりがしっかりしているかといった検証にも使うことができます。

プログラミング言語をラノベに使うなら、例えば主人公と仲間との関係がセリフに適切に反映されているか検証できそうです。昔からの知り合いに「初めまして」って挨拶するのはおかしいですよね。

ただ、実際の物語はかなり複雑で、プログラムは相当大変です。知り合いといっても、顔見知り程度なのか、親子なのかで関係性は異なります。

本当はたくさんのキャラクターが登場するラノベを扱いたいのですが、今題材にしているのは『桃太郎』です。

桃太郎は単純なストーリーですが、これがなかなか難しいんですよ。犬、猿、雉にあげるきび団子も、「その場で食べるのか、あるいはずっと持っているのか?」でプログラムしないといけないですからね(笑)。

日常生活に深く入り込んでいるスマホと付き合うには

ー日々新しいアプリが登場して、私たちの生活はどんどん便利になりますが、一方で気を付けるべきことはありますか?

スマートフォンは、私たちの日常生活に深く入り込んでいます。スマホ持っていない人の方が珍しい社会です。

つまり、自分だけがスマホを使っているのではないということです。

自分がどうスマホを扱うべきかも大事ですが、周囲への影響も考えたいですね。家族や友人との関係をふまえてどう使っていくかということを、話し合ってみてもいいでしょう。

例えば、怪しいメールが届いたとします。一人では悩んでいるばかりでも、周囲に相談すればあっけなく解決するかもしれません。

アプリやSNSで得られる情報も同じで、身近な人に共有すれば、流されたり惑わされたりすることも減るでしょう。スマホの膨大な情報に立ち向かうためにも、家族や友人との関わりも大切にしていきたいですね。