著者
逢坂 美冬 上野 雄大 大堀 淳
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.35, no.3, pp.3_79-3_95, 2018-07-25 (Released:2018-09-25)

一般にWebアプリケーションにおけるWebページの動的生成は,テンプレートエンジンを用い,事前に用意されたテンプレートに対して動的に値を埋め込むことで行う.テンプレートはテキストファイルとして用意され,実行時に読み込まれる.そのため,テンプレートに対する操作は一般に型無しの文字列操作となる.従って,たとえホスト言語が強い型付けを持つ関数型言語であったとしても,実際のテンプレート構造とプログラムの想定の間の不整合は静的に検出されない.本論文では,動的に読み込まれるテンプレートに対して,部分動的レコードに基づく動的型検査を行うことで,型付きのテンプレート操作を実現する言語機構を提案する.この機構は,テンプレートにホール名をラベルとするMLの部分動的レコード型を与え,テンプレートに値を埋め込む操作をレコードの更新演算と同様に型付けする.テンプレートに存在しないホールへの値の埋め込みは型エラーとなる.プログラムが想定するテンプレートの型と実際のテンプレートの構造の整合性は,テンプレートファイル読み込み時に動的に検査する.本論文ではさらに,この機構をML系関数型言語SML#のコンパイラを拡張することで実装し,実例を通じて実用性を検証するとともに,実用上の課題について議論する.
著者
逢坂 美冬 菊地 大介 上野 雄大 大堀 淳 佐々木 加奈子
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.8, no.4, pp.17, 2015-12-04

今日広く用いられているWebアプリケーションフレームワークは,プログラムの自動生成やファイル名の命名規約など,プログラミング言語の範囲を超えた記述を要求するものが多い.この方法は,典型的なアプリケーションの開発において生産性が高いと考えられている一方,実行されるコードの全体像を把握することが難しく,フレームワークの想定から外れた,細やかな制御を必要とするアプリケーションを書くことは難しい.この問題を解決する1つの方法は,Webアプリケーションを構成するすべての要素がプログラミング言語の概念で網羅されるようにアプリケーションを構築することである.関数型言語は,高階関数やモジュール言語などの機能による高い記述力を持ち,このようなWebアプリケーション開発に適していると期待できる.従来の関数型言語では,Webアプリケーション開発に必須となる,データベースへのシームレスなアクセスやマルチコアCPUへの対応が不十分なため,言語単体でのWebアプリケーション開発は難しい.本発表では,SML#を用いた試作を通じて,関数型言語による高水準なWebアプリケーション開発の可能性を分析し,単独プロセスのWebサーバーとして動作するユーザプログラムとしてWebアプリケーションを開発する枠組みを提案する.提案手法では,HTTPサーバー機能を含む,サーバーサイドプログラミングに含まれるすべての要素はSML#のプログラムとして構築される.その構成から,SML#が持つCやデータベースとの連携により,データベースを含めた高水準なプログラミングや,マルチスレッドへのスケールアップ性は,自然に得られる.さらに本発表では,クライアントサイドプログラミングや,HTMLのリンクをユーザがたどることによる状態遷移など,本手法とクライアントとの連携の可能性について論じる.