|
目次 |
|
目次 |
|
はじめに |
|
ここまでの経緯 |
前回にも述べたことですが、本研究のテーマに思い至った所以を軽くご紹介します。 大学3年の秋、研究室に配属された当初は研究テーマなど特に何も決めず考えずで、目先の専門科目のことで手一杯だったのですが、 就職活動のエントリーシートや面接を通して研究テーマに関する質問を受けるようになってから、真剣に考えるようになったのでした。 そして、予てから気になっていたソフトウェアメトリクスに関する研究をしてみたいと思い、いろいろとその具体的な案を出してみようとするも、 何かしっくりこないものばかり。そうして、しばらく考えあぐねていたのでした。
ところが、師にご紹介いただいた先行研究(ソフトウェアの可視化に関する研究)に端を発し、 突如として「スパゲッティを題材としたソフトウェアプログラム可視化に関する研究」というテーマに至ったのです。少しぶっ飛んでいますよね...。 (その経緯の詳細も前回少しだけ紹介しました。)
前回の発表が終わった後、スパゲッティの調査に乗り出しましたが、そのスパゲッティの世界があまりに広大で茫然自失。 当初は「可視化・可触化・可食化」を計画していましたが、それを縮小して「可視化・可食化」、さらに現段階では「可食化」に絞らざるを得なくなってしまいました。 それゆえに今回の発表に際して、研究題目を変更することになったのです。
本研究は、抽象的でわかりづらい存在「ソフトウェアプログラム」を、より具体的で実在感溢れる「スパゲッティ」として表現する事で、 間接的(比喩表現的)にソフトウェアプログラムの実在感を高めようとするものです。
通常のソフトウェアプログラム(ソースコード)は、コンパイラによる「コンパイル」という処理で実行可能プログラム(機械語)に変換されます[2]。 (上図の「?」がコンパイラに相当します。) コンパイルとは、字句解析・構文解析・意味解析・コード生成及び最適化によって構成される処理ですが、前方の3つについて軽くまとめてみました。
ここで注目するのは「意味解析」です。構文の列を見て「意味」を見出す(付与する)役割がありますが、これはつまりソースコードと機械語を結びつける役割と言い換えることもできます。 コンパイラはソースコードを「機械語」に変換するものであり、ここで述べた「意味解析」で良いのですが、今回私が研究しているものには別の「意味解析」を用意しなければなりません。 入力されたプログラムがどのような機械語に対応付けられるのかではなく、どのような品質・性質を持っているのかを解析する「意味解析」を拵えなければならないのです。 俗にいう「ソフトウェアメトリクス」のツールを開発することに相当します。
一般的なソフトウェアメトリクスツールでは、ソースコードの品質の計測結果を数値で表します。しかし、単に数値だけを見せらてても、あまり実感が湧かないというもの。 それをより具体的な実在感溢れる方法で提示するために、スパゲッティを用いて表現しようと思い至りました。 良いプログラムは良いスパゲッティに、悪いプログラムは悪いスパゲッティに写像されるようにして、ソースコードをスパゲッティとして表現しようという試み。 つまり「ソースコードの可食化」がここに実現されるのです。
しかし、一つ残念なことがあります。ソースコードを入力したとしてからと言って、簡単にスパゲッティを再現することは難しいものです。 (「解析」ボタンを押せば「スパゲッティ」が出来上がる...など、夢の様な話。) 調理器具をアクチュエータで操作すれば、スパゲッティの自動調理も夢ではありませんが、あまり現実的な話ではありません。 その代わりとして考えているのが、スパゲッティのレシピを出力するというものです。
ソースコードを解析システムに入力すると、スパゲッティのレシピが得られて、そのレシピ通りに調理すると、入力したプログラムを写像したスパゲッティが完成します。 できあがったスパゲッティを食べて「あぁ、このプログラムはマズイな...」「すごくうまくできたプログラムだ!」などと感じることができれば、 人間の感覚に直接訴える新しい情報提示手法が実現したということになります。
ソフトウェアプログラム(ソースコード)の品質低下は、その存在が抽象的であること(実在感の無さ)に原因があると考えます[3]。 もしその実在感が向上すれば、品質への意識を向上させること、つまり高品質なソフトウェアの開発に繋げることができると考えているのです。 本研究は「可食化」というアプローチを通して、上に述べるような実在感をソフトウェアに付与しようとするものであり、 それと同時に他分野における「可食化」アプローチの可能性をも示唆するものです。 多くの方に生かしていただけるような研究成果が得られるよう、日々努めてゆくつもりです。
中間発表(1)の「今後の取り組み」では、次のように述べていました。
中間発表(2) : 先行研究・スパゲッティの性質・プログラムの性質の調査を終え、また指標の検討や、解析部の実例作成を終えていること。
しかし、現段階で実現できたのは「スパゲッティの性質の調査」のみ。先行研究の調査はまだ不足気味で、プログラムの性質調査・指標検討・解析部作成には触れもせず。 全体の進捗状況は非常に悪いと言わざるを得ません。その原因はスパゲッティ・パスタの世界に没入したためだと思われます。 発表の前々日にようやくスパゲッティ・パスタに関する調査が終わったため、これからはプログラムを中心に研究を進めることになります。
結局、この中間発表(2)では、2ヶ月間に渡り調査してきた「スパゲッティ及びパスタのこと」についてのみ言及します。。。
ここでは、中間発表(1)からの変更事項について、その内容を記載します。
[2] 変換しないものもあります。
[3] 根拠に乏しいため、さらに熟考のこと。
|
「スパゲッティ」と「スパゲッティプログラム」 |
(製造を含むスパゲッティの雑学に触れ、スパゲッティの広大な世界を垣間見てもらう → 「スパゲッティ」と「スパゲッティプログラム」#スパゲッティのピンからキリまで)
(この言葉を知っていますか?とまず質問。それを踏まえて「スパゲッティプログラム」について述べてゆく。要調査。 そして、一概に悪い意味で使われている...ということをとりあえず知ってほしい → 「スパゲッティ」と「スパゲッティプログラム」#「スパゲッティプログラム」という言葉)
(スパゲッティの世界を踏まえて、自分自身が訴えたいこと。「一言で済ませる」ものではないということ。幅広い世界を写像するためのものといっても過言ではないということ) (当該の研究に関する背景や動機をざっとおさらい。「スパゲッティプログラム」という言葉の使い方の是非について、また、広大なプログラムの世界を映し出す対象としてのスパゲッティの可能性について、追求してゆくということを述べる) (→ 「スパゲッティ」と「スパゲッティプログラム」#研究への意志)
|
達成に必要な事項と今後の見通し |
中間発表(1)から引き継いだ「必要事項」です。
スパゲッティの調査は基本的に終えたのですが、先行研究の調査に甘さが見られるため、今後も継続して調査を行うものとします。
【従来の「スパゲッティプログラム」という言葉とその実態の調査】
世間で使われている「スパゲッティプログラム」という言葉が、いったい何を表現しているものなのかを調べ、従来の「スパゲッティプログラム」について理解を深めます。
その上で、当該の研究で「スパゲッティプログラム」という言葉をどのように扱いたいか(つまり本研究における理想の「スパゲッティプログラム」)について言及します。
【プログラムの性質・特徴の分析調査】
後の「調査協力のお願い(改)」で述べる通り、被験者から頂戴するプログラムや課題実験・アンケートにより、プログラムの性質・特徴を分析します。
ここで「被験者」とは、プログラミングの初心者から玄人まで様々な方を対象としているものです。
収集するサンプルが初心者から玄人まで分散していて、その性質の推移を追うことができるような状態が望ましいと考えます。
【スパゲッティへ写像する指標の検討と決定】
また、今回調査したスパゲッティの知見を基に、スパゲッティに関する指標とプログラムに関する指標とを繋げ合わせる、つまり写像方法(メトリクス結果を提示する方法)について検討し、
実際に開発するツールで用いる指標を決定し、まとめます。
残り2回の中間発表でどの程度の地点まで進んでいるべきかをここにマイルストーンとして定め、今後の活動の標石とします。
(現在思いついているアイデアについて列挙する)
|
さいごに |
(やっとプログラム系に取り組めるなぁという実感を徒然と。ようやく師をひっつかまえて(!?)プログラミングする時が来たか...とも。)
前回の中間発表(1)でもお願いしました通り、1,2年次のプログラミング演習科目の課題提出物(プログラム)を研究題材としてご提供いただけないかと考えています。 研究がようやくプログラムに関する部分に入りましたので、近々改めてご協力をお願いするものと思います。どうぞ宜しくお願いします。
また、さらにもうひとつ。「プログラム作成課題及びそれに伴うアンケート調査」というものを実施する予定でいます。 ある決まった題に沿ったプログラムを作成してご提出いただき、そのプログラム作成の前後にそれぞれアンケートを執り行うものです。 具体的な内容はまだ計画の段階ですが、これはWeb上で実施しようと考えています。(ちょうど大学で用いている「moodle」のようなもの。) その際もご協力を賜りますようお願い致します。
|
発表後のご意見・ご感想など |
レシピには写真を添えるのが良いかと
なるほど、言われてみると確かにその通りでした。レシピ本やレシピサイトでも、料理の写真を添えることが普通のようですね。
本日発表した例では文章のみのレシピになっていましたが、今後は写真のことも考慮してレシピ出力を検討しようと思います。
ただ、メトリクス結果は入力するプログラムによって多様に変化するため、その出力として得られるスパゲッティのレシピも多様なものになるはずです。
写真の表現をあまり細かくすると、撮影しなければならないスパゲッティが膨大な種類に及ぶため、実際の出力レシピに用いる写真はかなり大雑把なものにしようと考えています。
お腹が空きました。食べさせてください。
もちろん喜んで。一言申し付けていただければご用意いたします。実際に口にしてみなければ分からない「スパゲッティの違い」を是非味わってみてください。 (ソースの種類には限りがありますのでご了承ください。)
スパゲッティ(パスタ)の調査を広げ過ぎでは。それら多様な指標をプログラムに写像できるのか。
仰るとおりです。私自身もまさか二ヶ月かけるとは思いませんでした。しかしながら、その世界のあまりの広大さに没入してしまいまして...。 ソフトウェアの具現化という意味における先行研究[4]においても、 実際に用いている指標はほんの数種類です。本研究でもこれに倣い、スパゲッティ及びプログラムそれぞれの指標を幾つかに限定して写像を行こなう予定です。 なお、その限定した結果については、次回の中間発表(3)にて言及する予定です。
プログラムをどのようにスパゲッティへ写像させるのかよくわからない
具体的な写像方法はこれから検討してゆくつもりですが、 例えば、大域変数が随所で乱用されていたとすれば、その変数が他の部分プログラムと密接に関わる状態であるという意味合いから、 スパゲッティのもつれ具合を酷く(転じて、作り置き時間を長く)します。(その変数一つを取ってみても、繋がっているところが沢山あるというニュアンスで。) 他にも今日述べた「レシピの名称」や麺の太さなどが、プログラムに喩えた時にどのような性質を持つだろうかと想像し、写像方法を具体的にしてゆきます。 おそらく次回の発表時には、写像方法を決定しているものと思いますので、どうぞご期待ください!
スパゲッティを用いようと思い立った経緯や、可食化というアプローチに至った経緯の説明を加えると良い
確かに、研究概要を述べる際にも説明がぶっ飛んでいたものと思います。 頂いたご意見の通り「数学的な証明」のように、思考遷移の順を追うような説明を付したいと思います。 (その説明はまだ用意できていませんが、用意でき次第、研究ログ 導入(概要・目的・対象・目標)に記載する予定でいます。)
ぶっ飛んでるね!いいよ、そういうの好き、どんどんやっちゃって!!
前回に引き続き嬉しいご声援をありがとうございます(笑)
我ながら本当にぶっ飛んでいるとは思いますが、これをより科学的なぶっ飛び方に仕上げ、研究を進めてゆきたいと考えていますので、
また激励や助言などを以って温かく見守っていただければ幸いです。
|
添付資料 |
発表に用いた資料類をご覧いただけます。