「第62回 プログラミング・シンポジウム」 プログラム

日程
2021年1月8日(金) 12:30 開場
2021年1月8日(金) 13:00 開会
2021年1月9日(土) 17:30 閉会
会場
オンライン (チャットとして Slack を,プレゼンテーションと映像コミュニケーションに ZoomSpatial.Chat を使用します.)

本プログラムはまだ暫定版です.発表時間等にこれから多少の変更が入る可能性があります.


第1日: 2021年1月8日 (金)

Zoom 開場 12:30
オープニング 13:00 - 13:15

セッション1 (プログラミング) 13:15 - 15:15 座長:中野 圭介 (東北大学)

ハイブリッド型ReDoS検出プログラムの実装
藤浪 大弥 (日本大学文理学部情報科学科)
概要
ReDoSとは高い負荷をかけてサービスを妨害するDoS (Denial-of-Service) 攻撃の一種で、バックトラック型の正規表現エンジンではパターンによってはマッチングに入力文字列に対して非線形な(二乗や指数的な)時間がかかる場合があることを利用したものである。 この脆弱性は次の2つの方法で検出できることが知られている。 1) パターンに対応する非決定性有限状態オートマトン(NFA)の遷移関数から、ReDoSの原因となるような構造を探索する。 2) 遺伝的アルゴリズムによって入力文字列をいくつも生成し(ファジング)、ReDoSの原因となるような文字列を発見する。 NFAを用いる場合は原理的に対応の難しい構文があり、ファジングの場合は必ずしもReDoSを検出できるとは限らない。 本発表では、パターンに応じて適切な検出手法を選択する、ハイブリッド型ReDoS検出プログラムの紹介を行う。
Pythonと日本語変換:Trans-CompilerとTransformerの比較
縫嶋 慧深,秋信 有花,倉光 君郎 (日本女子大学)
概要
近年、深層学習技術の登場により,文書要約や質問応答など、自然言語処理は目覚ましい発展を遂げている. 我々は、これらの技術発展をソフトウェア開発においても享受するため、ソースコードを形式化された自然言語に変換する手法を提案する。本発表では、Pythonコードを日本語記述に変換する過程で、従来の形式的な変換に基づくTrans-Compiler と最新のニューラル機械翻訳技法であるTransformer によるの変換を比較する予定である。また、逆変換となる自然言語からのコード生成などの展望について述べたい。
AgdaによるGalois理論のプログラミング
河野 真治 (琉球大学工学部)
概要
群論の検証をプログラミングで行う研究はたくさんあるが、検証と証明を同時におこなうには証明支援系が適している。代数方程式の複数の解はそれを入れ替えても方程式を満たすので交換に対する群に対して不変になっている。方程式をより低次の方程式の解に帰着できる条件は交換子g ⁻¹ ∙ h ⁻¹ ∙ g ∙ hが単位元になることなので、それを全部計算してやれば良い。対称群は有限なので計算自体は容易だが、その計算と証明との関係を示すにはAgdaの証明を含むデータ構造が必要になる。そのためのFresh listやco-induction について考察する。
休憩 15:15 〜 15:45

招待講演 15:45 - 17:15

遠隔合奏を実現するSYNCROOMとその技術
原 貴洋 (ヤマハ株式会社楽器LTV推進G主事)
概要
ヤマハ株式会社では、ネットワークを介してリアルタイムな合奏を実現するSYNCROOMというアプリケーションを開発しています。この講演では、SYNCROOMに至るまでの背景や活用事例、遠隔合奏を実現させるための技術のご紹介、それに加えて「プログラミング」という観点で見たお話もできたらと考えています。
休憩 17:15 - 17:30
夏のプログラミング・シンポジウム,情報科学若手の会,GPCC など各種報告 17:30 - 17:50
Spatial.Chat 開場 18:00
このあとのイベントは 19:00 からで予定しておりますが,会場となる Spatial.Chat は早めに開ける予定です.参加者と話しながら夕食などをとりたい方はこの時間からご参加ください.

GPCC,ポスター・デモセッション,夜のセッション,自由討論 19:00 -

すべて同じ Spatial.Chat の空間の中で行います.各セッションやデモをやっているところに「近づく」と声が大きく聞こえ,離れると声が聞こえなくなっていくので,興味のあるところへ適宜「移動」してください.

第2日: 2021年1月9日 (土)

セッション2 (ゲーム) 9:45 - 11:45 座長:寺田 実 (電気通信大学)

ニューラルネットワークと強化学習による対戦型2048プレイヤの作成
横山 智洋,松崎 公紀 (高知工科大学)
概要
「対戦型2048」とは、一人ゲーム「2048」を二人ゲームに拡張したものである。対戦型2048の特徴の一つは、攻撃側と防御側でプレイが非対称なことである。これまで2015年のGPCCの問題として採用され、いくつかのプレイヤが実装された。本研究では、ニューラルネットワークと強化学習を用いて対戦型2048プレイヤを作成した。ニューラルネットワークは、全体5層からなる畳み込みニューラルネットワーク[松崎, 投稿中]を用いた。学習の方法として二通りの実験を行った。一つは、防御側の学習と攻撃側の学習を交互に行うものである。もう一つは、防御側の学習と攻撃側の学習を同時に行うものである。本発表では、学習方法について説明するとともに、得られたニューラルネットワークプレイヤ間の対戦結果について報告する。
最中限における戦略学習の試み
大室 光, 横山 大作 (明治大学理工学部情報科学科知的情報処理システム研究室)
概要
"最中限とは3人プレイのトランプゲームである。ルールはシンプルだが、多くの場面で中間の順位を狙う必要がある、独特の難しさがあるゲームである。大域的な戦略をたててちょうど良い程度の得点を狙い、局所的な戦術を用いてその得点を実際に獲得していく、という組み合わせが必要となり、コンピュータプレイヤ作成には複雑な要求があるゲームであるといってよい。 本研究では、ヒューリスティックな解法、並びにTD法を用いた強化学習によるプレイヤを作成し、ランダムプレイヤとの対戦を用いてその有効性を探る。"
立体連結ゲームBridgetのプログラミング — 古典的手法再び
竹内 郁雄, 天海 良治 (東京大学名誉教授)
概要
英国発の立体型の連結ゲームBridget(ブリジット)はまだ日本では発売されていないようだが,競技してみると予想外に奥深いゲームである.正立方体4個を連結してできるテトロミノの駒14個を交互に打ち,8x8の盤面を(上から見て)対辺同士を連結すれば勝利するのだが,手の選択の分岐数が多いのと,形状の組合せが対象となるのでプログラミングは比較的面倒である.BridgetはGPCC2019の問題にもなっており,2020の夏のプロシンで対戦デビューをした.本稿では,深層学習や最新のGUIを使わない「古典的手法」のみで,定跡の半自動生成を含め,ある程度強いプログラムを開発したことについて報告する.なお,付録でGobblet Gobblersという楽しいゲームの完全解析を行ったことについても述べる.
休憩 11:45 - 13:00

山内奨励賞表彰・受賞講演,『プロシン今昔』 13:00 - 14:00

山内奨励賞受賞講演: 「静的型つき組版処理システムSATySFi: その後の発展と今後の課題」
諏訪 敬之
概要
SATySFi(サティスファイ)は発表者が2018年にリリースし以後も開発を継続している新しい組版処理システムであり,それが静的型つき言語であることなどの特徴について,前回の第61回プログラミング・シンポジウムにて紹介した.この発表に関して光栄ながら山内奨励賞を賜り,引き続き発表の機会を頂けたので,今回は前回の発表以降特に設計・実装の進んだSATySFiの新しい機能であるマクロ機構について紹介する.このマクロ機構は言語内にDSLを導入して文書をより簡潔に書けるようにしたいという動機によって必要となったものであり,多段階計算という体系に基づいて実現されている.また,ありがたいことに(発表者の主導によってではなく)有志の方々によってSATySFi用のパッケージマネージャやライブラリの整備が進められており,それら成果物のうち一部を紹介したい.このほか,SATySFiの言語機能も依然として発展途上であり様々な課題が残っているが,そのうち特に顕著なものとしてモジュールシステムの再定式化や,SATySFiコードからLaTeXやHTMLのソースなどを得るテキスト出力モードに数式を対応させるなどのfuture workにも簡単に触れたい.
『プロシン今昔』
休憩 14:00 - 14:30

セッション3 (教育) 14:30 - 17:10 座長:谷 聖一 (日本大学文理学部)

初心者のプログラムを正誤と質で評価するシステム
鄭 佳健 (電気通信大学 情報・ネットワーク工学専攻 寺田研究室)
概要
 プログラミングを習得するためには練習問題を解くのが効果的である。  しかし、初心者が正解にたどり着くのはそれほど簡単なことではないので、正解に近い、「惜しい」プログラムを評価する方法が必要である。  一般のプログラミングコンテストなどでは、テスト入力に対する出力が正解と一致するかどうかで正誤を判定する。これに対し、本研究では正解プログラムとの近さ、言い換えればプログラムの質の評価を目指す。これによって、結果は正しくなくても良いプログラムをそれなりに評価でき、また、逆に結果が正しくとも構造や振る舞いの点で問題のあるプログラムも発見できる。この評価方法から、正解を得た初心者が過剰に自慢することがなく、不正解を得た初心者も自信をなくすことがないことが期待される。具体的な評価の方法としては、静的な解析としてプログラムの抽象構文木を用いた類似度と、動的な解析として変数値の系列の比較による類似度を用いる。
「Which Programming Languages?」の実現に向けて (口頭発表: 論文任意)
高野 保真,野口 敬未 (北里大学)
概要
本研究では,質問に答えていくことで,そのユーザーに「向いている」プログラミング言語を提案・生成できるようなシステムを考えている. ここでいう「向いている」というのは,その人の思考方法に合っている言語であり,「〜という計算をするのに,どう説明されるのがしっくり来ますか?」といった(特定の言語で書かれたプログラムではない)選択肢に回答していくシステムをイメージしている. 単に,既存のどの言語があなたに向いてます,というのを示すことが目的ではなく, ・向いている言語処理系の自動生成(既存の言語へのトランスレーターも含む) ・ある言語が分かっている人が次にどの言語に移るのがよいか ・問題の自動生成 など, 色々な研究の発展先を考えている. 現状のプログラミング習得は,プログラミング言語ありきで始まっており,「その人にしっくりくる概念→プログラミング言語」という流れができないかと考えている. その第一段階として,本発表では全体の構想について述べ,どういった質問事項が必要という議論をしたい.
初等教育・特別活動(クラブ活動)における実践事例:2011年度からの実践を振り返り今後の活動を考える
内田 奈津子,柏 舜 (フェリス女学院大学,University of California, Santa Cruz)
概要
2020年度より,初等教育におけるプログラミング教育が始まった. 著者らは,地域,大学,学校とが連携して2008年よりロボット教材を活用した講座を実施してきた.これに参加した当時小学5年生であった著者らの提案により,2011年度に小学校での特別活動(クラブ活動)として,プログラミングを体験できる教育環境を実現させた. この取り組みは,2016年度まで大学と学校が連携して運用した.その後,一時中断したが,2020年度より再開し,学校を中心とした運用に移行した.しかし,以下の課題が明らかになった. ・特別活動(クラブ活動)の特性により継続が難しいこと(対象校においては,毎年児童の希望によりクラブ活動の内容が決められる) ・設備が整っているだけで,担当者のスキルに寄るところが大きい ・教員の移動により,ノウハウが引き継がれていない 本稿では,開設当初のカリキュラムを紹介し,現状の課題解決に向けての提案を行う.
GoogleColaboratoryにおけるPythonの導入実践~一斉授業型,動画視聴型の比較~
山本周 (東京理科大学大学院)
概要
「情報Ⅰ」の導入により,プログラミングが必修となった情報の授業では,文部科学省が公開した教員研修用教材でPythonが使用されており,採択される可能性が高い.また,本実践は2019年度に一斉型,2020年度に動画配信型の形態で行った。そこでPythonによるプログラミング指導の授業形態による効果の検討を目的とした.“Google Colaboratory”を用いたPythonの導入授業を行った.プログラミング経験者が1割程度である高校3年生に対して,5時間の実施をした.“Google Colaboratory”を用いることで面倒な環境構築がなくなり,関連するライブラリのインストールも容易であった.また,動画視聴型の授業形態により,生徒のコーディングのエラー等の対応における教員負担が減少し,生徒においては個別最適化された学習が可能となった.“GoogleColaboratory”によるPythonの指導は,導入なども含めて有用であることが分かった.さらに,アンケートの結果からは生徒の興味を引くことができる等の結果も得た.
クロージング 17:10 - 17:30

照会先