著者
権藤 克彦 明石 修 伊知地 宏 岩崎 英哉 河野 健二 豊田 正史 上田 和紀
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.26, no.4, pp.4_17-4_29, 2009-10-27 (Released:2009-12-27)

「ソフトウェア開発で得られる経験や知見を成果とする論文(=ソフトウェア論文)を書くことは難しい」とよく言われますが,「なぜ難しいのか」の分析はこれまで十分にはなされていません.本論文では本誌のソフトウェア論文特集を編集した経験から,「ソフトウェア論文を書くことがなぜ難しい(と感じる)のか」の分析を試みます.問題は「著者の作文の問題」だけではなく,ソフトウェア自体,ソフトウェア工学,査読者,社会状況にも要因があることを示します.要因が多岐に渡るので結論を短く言うことが難しいです.あえて言えば「著者の作文技術にも問題はあるが,(著者の責任ではない)本質的な難しさも別にあるので,著者が自らハードルを上げてしまうことは避けるべき」「ソフトウェア論文の追試としての価値を査読者は評価すべき」です.また作文技術の問題を解決する一助として,ソフトウェア論文の執筆チェックリストを最後に示します.
著者
高野 保真 岩崎 英哉 佐藤 重幸
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.32, no.1, pp.1_253-1_287, 2015-01-26 (Released:2015-02-11)

関数型言語 Haskellは,遅延評価を標準とするプログラミング言語であり,近年注目を集めている.デファクトスタンダードの処理系である Glasgow Haskell Compiler(GHC)は多くの研究の基盤として用いられ,新しい言語概念など先進的な研究成果が取り入れられている.その一方で,GHCの実装は巨大で複雑になってきており,GHCに新機能を導入することは障壁が高くなってしまった.このような状況において,我々は実行時メモリの効率化を目指して,遅延オブジェクトを再利用する手法を提案し,GHCに実装してきた.我々が提案した手法は,コンパイル時にプログラム変換を行い,再利用対象とする遅延オブジェクトへの参照を単一にした上で,遅延オブジェクトを破壊的に書き換えて再利用する.その基本的な機構は既に先行論文において述べ,メモリ削減の効果も確認済みである.本論文は,再利用手法を実現するために考えられる各種手法の実装方法,および,それらの手法の得失・取捨選択に関する議論を詳細に行う.また,再利用手法の基本的な機構の実装で培った経験を生かし実装した,再利用手法の改善技法をいくつか提案する.それらの技法を導入することにより,実行時間に関するオーバヘッドを低く抑えることが可能であることを実験により確認した.最後に,GHCを研究の基盤に用いた経験より得られた遅延型関数型言語処理系に関する知見についても述べる.特に,GHCが Haskellで記述されていることは,処理系の拡張性に大きく貢献していることが分かった.
著者
牧 大介 岩崎 英哉
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.12, pp.1-18, 2007-08-15
参考文献数
15

Ajax は Web 開発の世界で普及したが、一方で Ajax 開発が従来の Web 開発に比べて非常に困難であることがよく知られている。その理由として、Ajax 開発においては複雑な非同期処理を 1 つのスレッドの上にすべて記述しなければならない点、JavaScript では非同期通信をイベント駆動型でしか記述できないため、制御フローの記述が困難である点があげられる。上の問題を解決するため、本論文では JavaScript のマルチスレッドライブラリを提案する。提供するライブラリの特徴としては、(1) 代表的な複数の Web ブラウザで可搬性があること、(2) プリエンプティブなスレッド切替えが可能であること、(3) オブジェクト指向で API を提供すること、がある。提案機構では、マルチスレッド・スタイルで記述された JavaScript プログラムを継続ベースの並行処理を応用して既存の処理系で実行可能な JavaScript プログラムへと変換し、この変換済みプログラムを実行時ライブラリであるスレッド・スケジューラの上で並行実行する。そして実際に Ajax アプリケーションを記述することで、提案機構の有効性を確かめた。提案機構にはオーバヘッドがあるが、Ajax アプリケーションにおける通信遅延に比べると十分に小さいため、実用上は大きな問題にはならないと考えられる。Although Ajax is widely used in the development of Web applications, it is well known that Ajax development is much more difficult than traditional Web development. There are two reasons: (1) Ajax developers have to write complex asynchronous program on a single thread; (2) asynchronous communication on JavaScript can be programmed only in event driven style, which causes control-flow difficulty. To resolve this problem, we provide multithread library to JavaScript programmers. The proposed library has the following features: (1) it is portable among popular Web browsers; (2) it provides preemptive scheduling; (3) it provides object-oriented API. The proposed system converts JavaScript programs written in multithreaded-style into those in continuation-based style that are executable on existing systems, and then executes them concurrently on a runtime-library called thread-scheduler. To see the effectiveness of the library, we implemented an Ajax application using the library. The overhead of the converted programs is not a serious problem in practice because the overhead is smaller enough than communication delay of Ajax applications.
著者
稲津 和磨 岩崎 英哉
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.3, no.4, pp.1-15, 2010-09-22

近年Google Mapsなどに代表される,Ajaxと呼ばれる手法を用いたWebアプリケーションが増加している.Ajaxを用いたWebアプリケーションはサーバ側とクライアント側で動作する2つのプログラムにより構成され,それらが協調して動作する.そのため,煩雑な通信処理を記述する必要があり,さらには,それぞれの実装言語が多くの場合は異なっているため,プログラミングが非常に煩雑になる.そこで本論文では,開発効率の向上を目的として,JavaScriptに基づくプログラム言語でWebアプリケーションを1つのプログラムとして記述し,処理の柔軟な分割を可能とするフレームワークを提案する.また,そのプログラム言語で記述されたプログラムを読み込み,サーバ側で動作するソースコードとクライアント側で動作するソースコードを出力するような機構を設計し,実装した.提案機構は,与えられたプログラムを解析し各構文要素がサーバとクライアントのどちらで実行するべきかを決定する.その際,分割方針を指定することで,同じソースコードから異なる分割を得ることができる.同じ動作をするWebアプリケーションを,提案機構と既存の手法のそれぞれを用いて記述し,プログラムを比較して記述性が向上していることを確認した.また,提案機構によるオーバヘッドは,Webアプリケーションで行われる一般的な処理については問題ない程度の小さなものであることを確認した.
著者
田中 哲朗 岩崎 英哉 長橋 賢児 和田 英一
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.36, no.9, pp.2122-2131, 1995-09-15
被引用文献数
7

多くの漢字は偏や旁などの基本的な部品の組合せからできている。本論文では、このことを利用して、漢字を具体的な座標を含まない抽象的な組合せ情報で定義しておき、プログラムによって部品を組み合わせてフォントを生成する方法を提案する。各部品は組合せによって大きさが変化するので、通常は様々な大きさの部品を用意しないと組み合わせて使うことができない。しかし、線の太さを自由に変えることのできるスケルトンフォントを使えば、あるサイズでデザインした部品をサイズを変更して使うことができる。そこで、本研究では論文(1)で提案した複数書体に対応可能なスケルトンフォントの形式で部品のデザインを表現する。組合せの種類として、横方向、縦方向、片方の部品の空白部分に他方の部品を配置する嵌込みが考えられる。JIS X0208に含まれるすべての漢字をこの3種類の組合せで表現して、最初の2つの組合せを扱うだけでもある程度デザインコストを減らせるが、嵌込みを扱うと更に効果があることを確かめた。また、未知の漢字が現われた時に、既知の部品の組合せだけで表現できる可能性を、JIS X0212の漢字の何割がJIS X0208の漢字の部品で表現できるかによって見積もった。表現した漢字を表示、印刷するためには組合せアルゴリズムが重要である。そこで、一番容易な横方向の組合せを実現するために単純な方法をいくつか実装し、評価をおこなった。その中でもっとも良かった組合せアルゴリズムをもとに縦方向、嵌込みのプログラムを実装し、JIS X0208とJIS X0212のフォントセットを作成した。これが単純なアルゴリズムで作成されたものにもかかわらず、ある程度の品質に達していることを確かめた。
著者
大泉 良介 岩崎 英哉
雑誌
第56回プログラミング・シンポジウム予稿集
巻号頁・発行日
vol.2015, pp.1-11, 2015-01-09

本稿では,プログラムの穴埋め問題とプログラム実行の視覚化を組み合わせた,初学者向けのプログラミング学習ツールである拡張Online Python Tutor(拡張OPT)を提案する.拡張OPTは,web上で動作し,プログラムの穴埋め問題を,プログラム実行の視覚化とともに出題する.学習者は視覚化されたプログラム実行の過程を確認し,その実行過程と合致するように穴埋め問題に解答する.誤答の場合には,誤答プログラムによる実行過程を正答プログラムの実行過程と並べて視覚化して提示する.これにより,正答と誤答の振る舞いの違いを明確にし,学習者の理解を促す.学習者はこれを繰り返すことによって,プログラミングに関する理解を深めることができる.穴埋めの正解判定は,正解プログラムと学習者からの解答のプログラムの実行トレースを比較することで行う.この方法により,正解が唯一に定まるとは限らないという問題に対処した.
著者
岩崎 英哉
出版者
情報処理学会
雑誌
情報処理
巻号頁・発行日
vol.64, no.11, pp.e41-e54, 2023-10-15
著者
杵淵 哲也 岩崎 英哉
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.48, no.4, pp.76, 2007-03-15

XML処理において,タグごとにイベント処理を記述するSAXやStAXといったストリームベースAPIを用いた記述は,木構造を直接扱うDOMなどのツリーベースAPIを用いた場合に比べてメモリ効率が良いという利点を持つ一方,パーサの処理がXML文書のどの部分まで進んだのかを追跡する必要があるため,記述が煩雑になりがちであり,プログラマへの負担が大きいという欠点がある.本発表では,ユーザにあらかじめアクセスする要素のパターンを記述してもらい,そのパターンに適合する要素を取り出すアクセサを自動生成する機構を提案する.自動生成されたアクセサはJavaのクラスとして提供され,主要なストリームベースAPIであるStAXを用いて処理を行う.煩雑な記述はアクセサによって隠蔽されるので,ユーザは生成されたクラスを用いて簡潔な記述によりXML処理を行うことができるようになる.For processing XML documents, stream-based API such as SAX and StAX handles tag-oriented event-driven programs and has the advantage of memory efficiency, compared with tree-based API such as DOM that handles tree structure directly. However, programs using stream-based API are complex because they are necessary to track how far processing has proceed within the XML document, and thus impose large load on the programmer. To resolve this problem, we propose a mechanism that automatically generates accessors to the elements that are specified by the user. Each accessor is implemented as a method that uses StAX API. The proposed mechanism enables the user to write more concise XML processing programs, because complex descriptions are encapsulated within the accessors.
著者
小野澤 拓 岩崎 英哉 鵜川 始陽
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.38, no.3, pp.3_23-3_40, 2021-07-27 (Released:2021-09-27)

ネットワークを介してセンサからデータを収集したり,機器を制御する技術であるIoT (Internet of Things)が近年注目を集めている.eJS (embedded JavaScript)プロジェクトでは,IoTのプログラム開発にJavaScriptを利用可能とすることで,IoTアプリケーション開発の複雑さなどを軽減することを目指している.eJS プロジェクトでは,計算資源が限られるIoT機器や,その上で実行されるIoTアプリケーションに合わせてカスタマイズされたJavaScript仮想機械(eJSVM)を生成するフレームワークeJSTKを提供する.本研究では,eJSVM のふたつの新しいカスタマイズ項目を実現した.ひとつ目に,64 ビット環境向けと32 ビット環境向けのデータ構造を選択できるようにした.ふたつ目に,4種類の異なるごみ集めアルゴリズムから,対象アプリケーションと相性の良いアルゴリズムを選択できるようにした.実験により,これらのカスタマイズ項目の有効性を確認した.
著者
根岸 純一 岩崎 英哉
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.2, no.3, pp.48-56, 2009-07-10

遅延評価型関数型言語 Haskell で書かれたプログラムのデバッグは,処理系 GHC に組み込まれている GHCi デバッガを用いて,実行時の変数の情報を確認する等して行うことが一般的である.GHCi デバッガは,対話的な環境におけるコマンド入力により,ブレイクポイントの設定,ステップ実行,状況に応じた変数の評価や追跡機能等の機能を提供する.しかし,GHCi デバッガは,グラフィカルなユーザインタフェースによる,ステップ実行の可視化が必要であることが,開発者らにより指摘されている.そこで,本論文では GHCi デバッガに対して,デバッグ実行時の表示を追加し,操作を簡易化するための機構を,ウェブブラウザを利用したフロントエンドとして実装する.本フロントエンドは,GUI を用いてソースコードと評価順序を確認しつつ履歴を簡単に戻りながら遅延オブジェクトの内容を評価できるデバッグ支援環境を提供する.実装には,Python および jQuery ライブラリを用いた.本フロントエンドは,GHCi デバッガの出力を JavaScript を用いた動的 HTML として整形する機構とウェブブラウザの操作を GHCi デバッガのコマンドに対応付ける HTTP サーバの 2 つで構成されている.GHC とウェブブラウザが使用できる環境であれば,環境を選ばず簡単に導入が行えることが特長となっている.
著者
田代 克也 中野 圭介 岩崎 英哉
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.6, no.3, pp.51-51, 2013-12-20

Webアプリケーションの開発を支援するための枠組みとして,テストツールと呼ばれる機能が多くの開発フレームワークにおいて提供されている.この機能では,テストに必要な入力値などの組であるテストケースを開発者が設定することで,自動的なテストの実行が可能である.しかしながら,正確なテストを行うには,入力値などを詳細に記述しなければならないため,テストケースの作成自体が開発者側への大きな負担となっている.本発表では,Webアプリケーション開発フレームワークにおける,テストケースの自動生成機能を提案し,実装を行った.対象とする開発フレームワークは,現在主流になっているRuby on Railsとし,Railsのテストツール機能の1つである機能テストにおいて実装した.本システムでは,開発者は全体の入力値の一部を与えることで,不足している入力値を補完しつつテストケースが生成される.また,オープンソースのRailsのWebアプリケーションに対して本システムを適用し,多くのテストケースが自動生成されることを確認した.Many Web application frameworks provide testing tools for supporting development of Web applications. The testing tools automatically test a Web application with a set of test cases given by a developer. However, the developer should carefully designate the set of test cases to achieve precise tests. We propose and implement an automatic test case generation system for a Web application framework. Our system works for the Web application developed with Ruby on Rails which is widely used. It provides a set of test cases for functional tests on Rails from only a part of input values designated by a developer. Furthermore, we demonstrate that our system can automatically generate many test cases for open-sourced Web applications developed with Rails.
著者
田村 知博 高野 保真 岩崎 英哉
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.1, no.2, pp.28-41, 2008-09-26

実行効率の良い探索プログラムを書くためには,結果に寄与しない計算を除去する枝刈りが有効であるが,一般に,簡潔なプログラム構造を保ったまま枝刈りの記述をすることは難しい.この問題点を解決するために,Improving Sequence(IS)というデータ構造を用いる手法が提案され,有効性が確認されている.ISとは,ある全的に定義された推移的な二項関係に従い,要求駆動によって単調に最終結果へ近づいていく近似値の列のことである.ISを用いたプログラムでは,枝刈りをするか否かの判断に近似値を用いることができる.従来の純関数型言語上のISの実装はライブラリによるものだったので,近似値の数に比例したヒープ領域を必要とし,効率があまり良くないという問題点があった.この問題点を解決するため,本論文では,ISの近似値が持つ単調性に着目し,また,近似値が枝刈りの判断にのみ用いられ,中間データとしての役割しか持たないことを前提として,純関数型言語において,定数領域しかヒープを消費しないISの実装を提案する.提案手法の効果を確認するため,Glasgow Haskell Compilerに実装を施し,ナップサック問題など,いくつかのプログラムで実験を行った.その結果,問題によってばらつきはあるものの,メモリ消費量において3%~75%程度の減少が見られ,安定的に改善できることが確認できた.また,メモリ消費量を削減することで,多くの場合に実行時間を改善できることも確認できた.
著者
五味真幹 鵜川始陽 岩崎英哉
雑誌
第52回プログラミング・シンポジウム予稿集
巻号頁・発行日
vol.2011, pp.125-132, 2011-01-07

半導体記憶素子であるフラッシュメモリを使用した記憶装置の一種として、Solid State Drive(SSD)が、価格の低下や速度の向上に伴い、近年注目を集めている。HDDと比べ、読み書きが速い、耐衝撃性が高い、消費電力が小さいといった利点の反面、書き換え可能回数に上限がある、記憶容量当たりの単価が高いといった欠点もある。そのため、一般的なマシンにおいてはSSDとHDDを併用し、相補的に利用することが重要視されている。そこで本研究では、SSDとHDDの併用によって、ファイルアクセスを高速化するファイルシステムUnion-Extended Cache File System(UECFS)を提案し、実装する。UECFSは、ファイルへのアクセス頻度に応じて、SSDかHDDのどちらかへファイルを自動配置する。ファイルの配置先は、ファイルのアクセス頻度の変化に応じて、動的に変更する。アクセス頻度の高いファイルのみをSSDに自動配置するため、SSDの使用量を抑えつつ、ファイルアクセスの高速化が可能である。また、ユーザはSSDとHDDのどりたにファイルが配置されているか意識しなくてよい。UECFSは、UnionFSを拡張して実装した。UnionFSは、Linux向けに実装されているファイルシステムであり、異なる複数のディレクトリを重ねてマウントし、単一のディレクトリの様に扱うことが出来る。UECFSは、UnionFSの機能を利用して、SSD上のディレクトリとHDD上のディレクトリを重ねてマウントし、独自のファイル自動配置機構により、ファイルアクセスを高速化する。UECFSをLinux Kernel 2.6.30.10に実装し、実験を行ったところ、ファイルがSSDに自動配置されることにより、ファイルアクセスが高速化することを確認した。