Sharing Programming @ wiki

43
ププププププププププ @ Wiki 鹿鹿鹿鹿鹿 鹿鹿鹿 鹿, 鹿鹿鹿鹿鹿 , 鹿鹿鹿

description

Programming Symposium @ 20110902

Transcript of Sharing Programming @ wiki

Page 1: Sharing Programming @ wiki

プログラミングの共有@

Wiki

鹿児島大学山之上 卓 ,

小田謙太郎 , 下園幸一

Page 2: Sharing Programming @ wiki

目次はじめにPukiWiki-Java ConnectorBasic っぽい言語のプログラミングの共有Lisp っぽい言語のプログラミングの共有PEN プログラミングの共有新しい Java プログラムの追加関連研究おわり

Page 3: Sharing Programming @ wiki

はじめに( 本来は teleportation の話をしないといけないのですが、ごめんなさい )

プログラミングの共有「みんなでプログラム開発」は楽しい

1988 年 11 月 17 日の日本経済新聞「パソコン通信を使い電算機言語を開発」 , etc.

プログラムを , Web 上で仲間と共有し , 書き換えたい , 書き換えたものをその場で実行したい

Page 4: Sharing Programming @ wiki

Wiki web ページの上でページの編集 , 共同作業 , 情報共有 Wikipedia, 他

日本… PukiWiki….PukiWiki でプログラムや他の様々なアプリケーションプログラムとそのデータも共有したい

Page 5: Sharing Programming @ wiki

NetDrawドロープログラムを PukiWiki で利用するプラグイン + お絵かきプログラムを連携するためのアプレットお絵かきデータの共有

PukiwikiJavaConnector … Wiki システムプログラムを編集しそれを実行する環境 +ドロープログラム +作曲して演奏するための簡単な環境 +Your Own Java Applications

Page 6: Sharing Programming @ wiki

PukiwikiJava Connector

PukiwikiJavaConnector =PukiWiki +Java プログラムを起動するためのプラグイン + Java のクラス

Java プログラム ( データを文字列として読み書き可能 )わずかに書き換え + コンパイル + クラスファイルを特定のディレクトリに配置 … その Java プログラムを PukiWiki から利用することが可能PukiWiki の書き換え必要なし

様々な Java プログラムとそのデータが , ネットワーク上で共有可能

Page 7: Sharing Programming @ wiki

PukiwikiJava Connectorインストール

pukiwiki-java.tar.gz Pukiwiki + PukiwikiJavaConnector このファイルをダウンロードし , 通常の Pukiwiki と同様にインストールすれば , PukiwikiJavaConnector が使える Pukiwiki が構築できる.

既存の PukiWiki に PukiwikiJavaConnector を追加PukiwikiJavaConnector のファイル(javaApplications.jar) をダウンロードして解凍javaApplications ディレクトリとその中身を Pukiwiki のディレクトリの直下にコピー

<pukiwiki>/javaApplications

<pukiwiki>/plugin ディレクトリに , ブロック型プラグイン jcon.inc.php を追加

Page 8: Sharing Programming @ wiki

PukiwikiJava Connector 例題アプリケーションの利用法

簡単なテキストエディタ , 簡単な音楽データ編集とその演奏環境 , お絵かきプログラム (NetDraw), ベーシックに類似したプログラミング言語の簡単なプログラム編集・実行環境 , …Pukiwiki の編集ページで左端からブロック型プラグイン呼び出し     #jcon(<Java アプリケーション名 >)

<Java アプリケーション名 > で指定された Java プログラムが起動データは , このページの , プラグイン呼び出しの次の行から記述される.

Page 9: Sharing Programming @ wiki

http://www.yama-lab.org/ pjc/

Page 10: Sharing Programming @ wiki

Basic っぽい言語のプログラミングの共有

Page 11: Sharing Programming @ wiki

1. Bassic(?) を起動・プログラム保存のための PukiWiki ページ作成

1. PukiwikiJava Connector を導入した Pukiwiki で、「新規」ボタンか、「編集」ボタンをクリックし、編集用テキストエディタのページを開く

2. 上のページでどこかの行の左端から #jcon(basic)を記述

3. 「ページの更新」をクリック

Page 12: Sharing Programming @ wiki
Page 13: Sharing Programming @ wiki

2. GUI でプログラミング、実行、デバッグ3. 「 save 」ボタンでプログラムを保存4. 再度、同じページを開くと保存したプログ

ラムが入った GUI が開く5. プログラムを修正、実行、デバッグ6. 「 save 」ボタンでプログラムを保存7. 再度、同じページを開くと保存したプログ

ラムが入った GUI が開く8. …

Page 14: Sharing Programming @ wiki

コピペ( 大学のレポートでは × だが… )既存の部品を使って新しくて良いものを早く作る時の基本情報共有・情報拡散の有力な手段の一つページ間、サイト間のコピペ OK

「編集」ページでコピー、別のページでペースト

Page 15: Sharing Programming @ wiki

Lisp っぽい言語のプログラミングの共有

Page 16: Sharing Programming @ wiki

PEN プログラミングの共有

Page 17: Sharing Programming @ wiki

PEN …. xDNCL のプログラミング環境 大学入試センター情報関係基礎の問題で使われるプログラミング言語、および東京農工大学の入試用手順記述言語 TUATLE に準拠

大阪学院大学・大阪市立大学で開発

Page 18: Sharing Programming @ wiki

例題アプリケーションの利用方法簡単なテキストエディタ

Page 19: Sharing Programming @ wiki
Page 20: Sharing Programming @ wiki
Page 21: Sharing Programming @ wiki

例題アプリケーションの利用方法その他

Page 22: Sharing Programming @ wiki
Page 23: Sharing Programming @ wiki
Page 24: Sharing Programming @ wiki

新しい Java プログラムの追加

PukiwikiApplet// Creator

#getPukiwikiJavaApplication():

PukiwikiJavaApplication

PukiwikiJavaApplication// Product

MyApplet//Concrete Creator

getPukiwikiJavaApplication():PukiwikiJavaApplication

+getOutput():String+setInput(String x)+setSaveButtonDebugFrame(…)

NewAppli//Concrete Product

Page 25: Sharing Programming @ wiki

新しい Java プログラムの追加ソースディレクトリの追加

pukiwiki-java / javaApplications / src / application 新しいディレクトリを作成 … jcon の引数

application.newAppli

newAppli の場合PukiWiki の編集ページの左端で #jcon(newAppli)

Page 26: Sharing Programming @ wiki

新しい Java プログラムの追加既存の MyApplet.java のコピーと変更

application.myEditor.MyApplet.java -><pukiwiki>/javaApplications/src/application/newAppli/MyApplet.javagetPukiwikiJavaApplication メソッド内

new MyEditor() を new NewAppli() に書き換えコンストラクタの引数は , 追加する java application に応じて追加getPukiwikiJavaApplication メソッドが factory method

Page 27: Sharing Programming @ wiki

package application.newAppli; public class MyApplet extends PukiwikiApplet{ public PukiwikiJavaApplication

getPukiwikiJavaApplication(){ System.out.println( "MyApplet.getPukiwikiJavaApplication");

if(frame==null){ frame=new MyEditor(); } return this.frame; }}

Page 28: Sharing Programming @ wiki

新しい Java プログラムの追加追加するアプリケーションの

ソースプログラムのコピー

追加するアプリケーション (Jframe 型のクラス +etc.) を newAppli ディレクトリにコピーこのクラス (newAppli.java) が PukiWiki から起動newAppli.java をコンパイルするのに必要な他の java ファイルも , このディレクトリなどにコピー

Page 29: Sharing Programming @ wiki

新しい Java プログラムの追加インターフェースの implements

NewAppli.java のパッケージを application.newAppli とし , PukiwikiJavaApplication インターフェースを implements package application.newAppli;import connector.*;public class NewAppli extends JFrame implements PukiwikiJavaApplication { ... }

Page 30: Sharing Programming @ wiki

@Override public String getOutput() { // TODO Auto-generated method stub } @Override public void setInput(String x) { // TODO Auto-generated method stub } @Overridepublic void setSaveButtonDebugFrame ( SaveButtonDebugFrame f ) { // TODO Auto-generated method stub }

Page 31: Sharing Programming @ wiki

@Override public String getOutput() { return this.myTextArea.getText(); // add } @Override public void setInput(String x) { this.myTextArea.setText(x); // add } @Overridepublic void setSaveButtonDebugFrame ( SaveButtonDebugFrame f ) { // TODO Auto-generated method stub }

Page 32: Sharing Programming @ wiki

新しい Java プログラムの追加コンパイルとコピー

NewAppli ディレクトリ内の Java ファイルをコンパイル<javaApplications>/bin/application/newAppliディレクトリを作成MyApplet.class, NewApppli.class , etc.

bin/application/newAppli にコピー apache の httpclient

<javaApplications>/bin/lib に httpclient に関する jar ファイル

Page 33: Sharing Programming @ wiki

( 開発期間 )

既存の Java プログラムを短時間で Wiki システムの一部として組込み NetDraw

SOLAR-CATS の絵かきプログラムを PukiWiki で利用3週間 /人

NetDraw の図データを PukiWiki のページから抽出するための構文解析部 PukiWiki ページにお絵かきのデータを埋め込むための様々な変換プログラム このアプレットを起動するための PHP プログラムの作成PHP や PukiWiki のプログラムを学習する時間も必要

Page 34: Sharing Programming @ wiki

今回のシステムこれらの処理を行うプログラムがあらかじめ javaApplications パッケージの中に組込みFactory method パターンを利用PukiWiki 側のプログラムを書き換える必要がなし 同じプログラムを本システムに組込むのに必要な時間は 3 日 /人程度簡単なテキストエディタ… 2 時間 /人程度プログラミング言語実行環境と音楽編集・演奏プログラムの場合は 1 日 /人程度Java の開発環境として Eclipse を利用

Page 35: Sharing Programming @ wiki

関連研究mbed

Web でプログラミング・コンパイル、手元のデバイスに書き込み実行、 C++ 、サイトでプログラミングの共有、…一種の Wiki ではあるが … PukiWiki ではないな…実行は web ではしない (ただ、この部分については時間の問題だろう)

Page 36: Sharing Programming @ wiki

GIT, Sub Version, CVS … Wiki ではない

AroeAjax

AspenKonoha

Page 37: Sharing Programming @ wiki

九州産業大学藤田研究室 Java アプレットプラグイン任意の Java アプレットを PukiWiki のページに埋込みアプレット上で作成されたデータを保存したり , 保存したデータを読み込んだりする機能なし

PukiWiki paint プラグインpaint プラグインはペイント専用システム

作曲を共同で行うことを可能にする Web サイト専用サイト他のサーバでは不可。他の様々なアプリケーションを自由も不可

Page 38: Sharing Programming @ wiki

おわりにPukiWiki 上でプログラミングの共有を可能にするプラグインを開発Basic 認証も OK.WikiSym 2011 でデモ予定 .使ってみていただけると幸いです .今後改良利用方法のマニュアルの整備宣伝

Page 39: Sharing Programming @ wiki

謝辞PukiWiki 開発関係者に感謝しますPEN 開発関係者に感謝しますNetDraw , PukiwikiJava Connector 公開時に意見をいただいた皆さまに感謝します

Page 40: Sharing Programming @ wiki

質疑応答NTT 中山 :Q. Wiki のうえにあることのメリットがよくみえない。Wiki のうえにあることの利点の事例は ?>> A. 絵とかをたくさん使う実験の授業。実験資料 ? のミスをその場で修正して即座に反映。>> Q. 連携 ? などの Wiki ならではのインターフェースがないように思える。>> A. 今後考えたい ??? 

Page 41: Sharing Programming @ wiki

東大 ??Q. 実行を必ずともしたくないなどの場合にそなえて1クッションを。ソース????立ち上がりがおそいように見える。もっと早くならないものか?>> A. ...>> Q. よけいなコンソールがでるがどうにかならないのか?>> A. 仕様なのか出てしまう.出ないやり方があれば教えて欲しい>> Q. ウィンドウを埋め込むとか,必要な場合だけポップアップだとか、インターフェースの改善を。 

Page 42: Sharing Programming @ wiki

横浜国大 ???Q. Wiki でやっているとどうやってグループコミュニケーションをとっているのか?>> A. ...???>> Q. コミュニケーション手段の拡張は?>> A. ...???>> Q. 現在、実際に使っているのか ?>> A プログラミング授業ではこれから。お絵かきでは使っている. 

Page 43: Sharing Programming @ wiki

小出Q. Wiki を使うとひとりでの作業になりやすいが,共同作業化にうまく活用するには ???>> A. ...>> Q. twitter版の連携システムは難しいか ?>> A. できなくはないと思う。これからの検討 ????