何某日和

「カメラ」のち「ハンダゴテ」ところにより「プログラミング」 ── そんな私“かめきち”のウェブサイト

第3回 中間発表 [2012.10.24]

目次

  1. はじめに
  2. 進捗状況 ── 中間発表(2)から今日に至るまで
  3. プログラムの性質
  4. プログラムの計測と写像
  5. スパゲッティへの写像
  6. 新しいメトリクスツール
  7. 今後の見通し
  8. さいごに
  9. 発表後のご意見・ご感想など
  10. 添付資料

はじめに

表紙・表題の提示

行事名コンピュータ理工学特別研究 第3回 中間発表
発表場所京都産業大学 第2実験室棟 65実験室 青木研究室
発表日時2012年10月24日(水) 15時00分-18時15分
題名「ソースコードは食べられる ── スパゲッティを題材としたソフトウェアプログラム可食化に関する研究」中間発表(3)
発表者コンピュータ理工学部 ネットワークメディア学科 4年 宮崎 雅文

目次

※既に上の項目で記載したため省略。

進捗状況 ── 中間発表(2)から今日に至るまで

「スパゲッティ」を脱して

 スパゲッティが主食と化して約4ヶ月。研究目的で調達した多量のスパゲッティを見て「卒業までに食べきれないぞ...」と漏らしていたのも、今や在庫の底は見えてきました。 あれだけ食べてよく飽きないものだと自身に感心しつつ、アル・デンテの喜びのため...いや、一応「研究」のために、今もなおスパゲッティを食しています。

 しかしながら研究の本題は、「プログラムからスパゲッティへの写像」の仕組みを提供すること。 そろそろプログラムに関する研究を行なわなければ開発もままならない...と焦り始めたのが、ちょうど2ヶ月前「中間発表(2)」の直後でした。

 そして言い訳をぽろりと。やはり人間は「抽象的存在」よりも「具象的存在」が取っ付き易いらしく、 これまでスパゲッティ(具象的存在)の研究調査を行なっていた分、余計にプログラム(抽象的存在)への取っ付きづらさが強調されてしまったようです。 そう言って社会人生活を控えた最後の夏休みに現【うつつ】を抜かしておりました。。。(中四国地方のバイク旅

「プログラム」を調べるも...

 小旅から戻ってようやく「プログラム」の調査に乗り出しました。まずは、既存のメトリクスツールの調査。

  • 既存のメトリクスツールの調査
  • 既存の指標の調査
  • スパゲッティプログラムの発生と歴史
  • スパゲッティへの写像方法
  • メトリクスツールの実現方法
  • 上記を模索したが、ちょっと構造的に何があって、そこで悩んでいる状態。そこがスッキリしさえすれば、あとは実装するだけ。
  • 今日は、これら5点と、今直面している課題について話す。

プログラムの性質

プログラムの古今

ほげほげ

  • プログラムの歴史を簡単に追って、その中で「スパゲッティプログラム」の発生を垣間見る。

プログラムの良し悪し

ほげほげ

  • 結局「良いプログラム」には様々な一面があって、一概に定義することは難しいね、という話。当たり前の話。

指標(プログラムの性質)

(パスタに太さ・原材料・製法...といった様々な側面があるのと同様に、プログラムの捉え方もまた様々。その一端を紹介する。)

  • 研究ログに記載した指標の一覧から代表的なものを抜粋して、とかくたくさんあるのだという印象を受けてもらえればそれで良い。

プログラムの計測と写像

既存のメトリクスツール

(ツールについての調査。その対応言語や計測指標の種類、情報提示手法などに注目してまとめる。)

  • 研究ログのスクショを提示して、やっぱり数値やらグラフが精一杯。これでいいのかな、いやだめだよね、って説得する。
  • 「プログラミングは暗黙知」と言われるほど説明の困難なもの。数値やグラフといった定量的表現でも上手く表せないもの。
  • なら感性に訴えよう、スパゲッティにしてしまおう、食べて感じてもらおうじゃないの、と述べる。

指標計測部(解析部)

(試作として指標計測部(解析部)の制作にあたります。Smalltalkを用いるか、他を用いるか...。)

  • 結局、今回の発表までに何も拵えなかったので、この節はなかったことにする。

指標調査に対する困惑と開き直り ── No Silver Bullet

 この研究では「プログラムをスパゲッティに写像する」という言わば「メトリクスツール」を開発することになるのですが、 そこで用いるべき指標について考えてみたところ、そもそも何を実現するために開発するのか自分自身理解していなかったことに気付き、困惑してしまいました。 自分ならあんなことを計測して表示したいけど、あの人はきっとこんなことを計測したいんだろうなぁ、一体どんな指標を用いれば良いのやら...。 しかし、よくよく考えてみれば、全物に有効で、全人に有意義な「万能の指標」など存在しません。 指標というものは、そのユーザの境遇(分野や立場など)によって異なるのが当然ですし、 それを私自身が勝手に「この指標を使えば良い」と決めつけて用意してしまうことは、むしろ有害なのではないかと考えたのです。

 ユーザの環境は、ユーザ自身が一番知っていることですから、その写像に用いるべき指標も写像方法もユーザ自身で判断すれば良いではありませんか。 つまり私の為すべきことは、指標と指標とを関連付けることのみに専念する「抽象的メトリクスツール」(柔軟な写像の仕組み)を提供することです。 そして、その例題として具体的な指標を幾つか用意するまでが、本研究の目標となります。 例題を参考にして、ユーザ自身が自分なりの写像ツール(メトリクスツール)を組み上げれば良いのです。

メトリクス:系から系への変換

 一般的なソフトウェアメトリクスは、ソフトウェアプログラムを数値に写像するものであり、結局、プログラムに存在する指標値(順序あるもの)を数値(順序あるもの)に写像しているだけです。 メトリクスとはつまり、系から系への写像を行なっているに過ぎません。その写像元や写像対象は、プログラムであろうがスパゲッティであろうが、はたまた小説であろうがラーメンであろうが何でも良いのです。 従来のメトリクスツールには、そういった柔軟性(様々な対象を許容する性質)が欠けているのではと考え、本研究では、柔軟性(抽象性)を含んだメトリクスツールを開発しようと考えています。 具体的な指標に縛られるのではなく、あくまで「系から系への写像」ですから何でも指標として用いることができましょう。 系変換の枠組みを提供しさえすれば、あとは解析系や写像先の詳細などを後付け(プラグイン)で付与すれば、どうにでもできるはずです。

目指すもの

 上記の二節を踏まえると、つまり単なる「系から系への写像」を行うツールを開発すれば良いのです。 写像に用いる指標をプラガブル(pluggable:差し替え可能)にして、ツールを利用するユーザ自身が適切な指標を選択することができる、 柔軟性(抽象性)の高いメトリクスツールを開発します。ソフトウェアからスパゲッティへの写像はもちろん、ソフトウェアからラーメンにも、 さらにはソフトウェアに限らず、例えばウェブサイトをスパゲッティに写像することも、論文をスパゲッティに写像することもできましょう。 対象を変身させる(比喩的に表現する)ことで、普段とは異なる視点で対象を捉え直すことができ、新たな発見にも繋がるでしょう。

スパゲッティへの写像

プログラミング初学者向けのメトリクスとして

ほげほげ

  • 「写像ツール」を作るのは良いとして、やはり具体的にスパゲッティへの写像は行なわねばならない(当初の目的!!)
  • けど、これまでに述べた通り、計測の側面は様々。限定しないと。。。
  • まずは具体的な指標を挙げて、誰に対して有効になるかは後で考えよう...と思って、考えてみた。
  • すると、ふと「初学者向けにすればいいじゃない」と思いついた。寺子屋補助員もさせていただいてるわけだし。
  • ...ちうことで、以下の通りに決めてみました〜と述べる。

写像に用いる指標対

  • ここに写像に関する指標対のテーブルを掲載する。それだけで良い。

 写像の具体的内容については、研究ログ「新しいメトリクスツール #スパゲッティへの写像

新しいメトリクスツール

新しいツールのご紹介

(新しいメトリクスツール「SpaghettiCode」または「CodeSpaghetti」(いずれも仮称)の簡単な紹介。アプリケーションやサービスとしての形態を図説する。)

  • ...という具合に、出来上がったツールを紹介できればと考えていたけど、それができないため、この節は省略。

実装に至るまでの諸問題

ほげほげ

  • 写像ツールとプラグインとして分けたい。(プラガブルにしたい。)分けると、そのつなぎ方をどうしようか...という問題が生じる。
    • MakeとXMLの利用
    • トポロジカルな...論理プログラミング言語処理系の開発
  • 現在はここで詰まっていて、先に進めていない。どうしたものかなぁ。。。良い感じの面白いもの作りたいしなぁ。。。はぁ。。。
  • 機能を減らして「使いやすい」を取るか、機能を増やして「役に立つ」に向かうか...
  • 目指すは、Desirable?(高嶺の花)
  • まず「何をしたい」のか整理したほうが良い。
  • そんで、整理したら実装に入ろう、、、うん。。。

これからの開発計画

(メトリクスツールのこれからの展望を列挙。)

  • モックアップ ── Smalltalk
  • Web Application
  • (Desktop Application)

モックアップ ── Smalltalk

(とりあえずの試作品を作ってみて、設計の良し悪しを云々したい。早くこれに取り組まねば間に合わない!!)

Webアプリケーション

 新しいメトリクスツールを作る...という割に、自分自身はあまりメトリクスツールを使った試しがありませんでした。 その理由を考えてみたところ、やはり「わざわざダウンロードして解答してアプリケーションを立ち上げる」という操作が煩わしかったのです。 それに比べ、HTMLの文法をチェックする「Another HTML-lint gateway」は、 Webサービスとして提供されていて、気が向いた時に手軽にアクセスできて簡単に解析できるため、面倒くさがりの私もよく利用していました。

 そこで、本研究で開発するツールにもその手軽さを与えたいと考え、Webアプリケーションとしてのメトリクスツールを開発することにしました。

  • クライアントサイドに解析プログラム(JavaScript)を提供して、ブラウザ上で解析してもらう。プログラムをアップロードしなくて良い。
  • しかし、ファイル指定ができない?テキスト直接入力ならできるけど。
  • あるいは、プログラムをアップロードしてもらってサーバサイドで解析プログラム(PHPなりなんなり)を動かすか。

デスクトップアプリケーション

 Webアプリケーションとしてのメトリクスツールを完成させることができたらば、予てからの目標でもあったクロスプラットフォームのアプリケーション開発として、 主要OS上で動作するメトリクスアプリケーションを開発することにしました。これはWebアプリケーション版の開発を終えて余力があった場合のみ取り組むことになります。

今後の見通し

メトリクスツールの実装

(準備中)

実験とアンケート調査

(準備中)

論文執筆

(準備中)

さいごに

あとがき

(準備中)

実験及びアンケート調査へのご協力のお願い

(準備中)

発表後のご意見・ご感想など

ほげほげ?

ほげほげ!

添付資料

発表に用いた資料類をご覧いただけます。(予定)