Sharing Programming @ wiki
-
Upload
takashi-yamanoue -
Category
Technology
-
view
679 -
download
0
description
Transcript of Sharing Programming @ wiki
プログラミングの共有@
Wiki
鹿児島大学山之上 卓 ,
小田謙太郎 , 下園幸一
目次はじめにPukiWiki-Java ConnectorBasic っぽい言語のプログラミングの共有Lisp っぽい言語のプログラミングの共有PEN プログラミングの共有新しい Java プログラムの追加関連研究おわり
はじめに( 本来は teleportation の話をしないといけないのですが、ごめんなさい )
プログラミングの共有「みんなでプログラム開発」は楽しい
1988 年 11 月 17 日の日本経済新聞「パソコン通信を使い電算機言語を開発」 , etc.
プログラムを , Web 上で仲間と共有し , 書き換えたい , 書き換えたものをその場で実行したい
Wiki web ページの上でページの編集 , 共同作業 , 情報共有 Wikipedia, 他
日本… PukiWiki….PukiWiki でプログラムや他の様々なアプリケーションプログラムとそのデータも共有したい
NetDrawドロープログラムを PukiWiki で利用するプラグイン + お絵かきプログラムを連携するためのアプレットお絵かきデータの共有
PukiwikiJavaConnector … Wiki システムプログラムを編集しそれを実行する環境 +ドロープログラム +作曲して演奏するための簡単な環境 +Your Own Java Applications
PukiwikiJava Connector
PukiwikiJavaConnector =PukiWiki +Java プログラムを起動するためのプラグイン + Java のクラス
Java プログラム ( データを文字列として読み書き可能 )わずかに書き換え + コンパイル + クラスファイルを特定のディレクトリに配置 … その Java プログラムを PukiWiki から利用することが可能PukiWiki の書き換え必要なし
様々な Java プログラムとそのデータが , ネットワーク上で共有可能
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 を追加
PukiwikiJava Connector 例題アプリケーションの利用法
簡単なテキストエディタ , 簡単な音楽データ編集とその演奏環境 , お絵かきプログラム (NetDraw), ベーシックに類似したプログラミング言語の簡単なプログラム編集・実行環境 , …Pukiwiki の編集ページで左端からブロック型プラグイン呼び出し #jcon(<Java アプリケーション名 >)
<Java アプリケーション名 > で指定された Java プログラムが起動データは , このページの , プラグイン呼び出しの次の行から記述される.
http://www.yama-lab.org/ pjc/
Basic っぽい言語のプログラミングの共有
1. Bassic(?) を起動・プログラム保存のための PukiWiki ページ作成
1. PukiwikiJava Connector を導入した Pukiwiki で、「新規」ボタンか、「編集」ボタンをクリックし、編集用テキストエディタのページを開く
2. 上のページでどこかの行の左端から #jcon(basic)を記述
3. 「ページの更新」をクリック
2. GUI でプログラミング、実行、デバッグ3. 「 save 」ボタンでプログラムを保存4. 再度、同じページを開くと保存したプログ
ラムが入った GUI が開く5. プログラムを修正、実行、デバッグ6. 「 save 」ボタンでプログラムを保存7. 再度、同じページを開くと保存したプログ
ラムが入った GUI が開く8. …
コピペ( 大学のレポートでは × だが… )既存の部品を使って新しくて良いものを早く作る時の基本情報共有・情報拡散の有力な手段の一つページ間、サイト間のコピペ OK
「編集」ページでコピー、別のページでペースト
Lisp っぽい言語のプログラミングの共有
PEN プログラミングの共有
PEN …. xDNCL のプログラミング環境 大学入試センター情報関係基礎の問題で使われるプログラミング言語、および東京農工大学の入試用手順記述言語 TUATLE に準拠
大阪学院大学・大阪市立大学で開発
例題アプリケーションの利用方法簡単なテキストエディタ
例題アプリケーションの利用方法その他
新しい Java プログラムの追加
PukiwikiApplet// Creator
#getPukiwikiJavaApplication():
PukiwikiJavaApplication
PukiwikiJavaApplication// Product
MyApplet//Concrete Creator
getPukiwikiJavaApplication():PukiwikiJavaApplication
+getOutput():String+setInput(String x)+setSaveButtonDebugFrame(…)
NewAppli//Concrete Product
新しい Java プログラムの追加ソースディレクトリの追加
pukiwiki-java / javaApplications / src / application 新しいディレクトリを作成 … jcon の引数
application.newAppli
newAppli の場合PukiWiki の編集ページの左端で #jcon(newAppli)
新しい Java プログラムの追加既存の MyApplet.java のコピーと変更
application.myEditor.MyApplet.java -><pukiwiki>/javaApplications/src/application/newAppli/MyApplet.javagetPukiwikiJavaApplication メソッド内
new MyEditor() を new NewAppli() に書き換えコンストラクタの引数は , 追加する java application に応じて追加getPukiwikiJavaApplication メソッドが factory method
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; }}
新しい Java プログラムの追加追加するアプリケーションの
ソースプログラムのコピー
追加するアプリケーション (Jframe 型のクラス +etc.) を newAppli ディレクトリにコピーこのクラス (newAppli.java) が PukiWiki から起動newAppli.java をコンパイルするのに必要な他の java ファイルも , このディレクトリなどにコピー
新しい Java プログラムの追加インターフェースの implements
NewAppli.java のパッケージを application.newAppli とし , PukiwikiJavaApplication インターフェースを implements package application.newAppli;import connector.*;public class NewAppli extends JFrame implements PukiwikiJavaApplication { ... }
@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 }
@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 }
新しい Java プログラムの追加コンパイルとコピー
NewAppli ディレクトリ内の Java ファイルをコンパイル<javaApplications>/bin/application/newAppliディレクトリを作成MyApplet.class, NewApppli.class , etc.
bin/application/newAppli にコピー apache の httpclient
<javaApplications>/bin/lib に httpclient に関する jar ファイル
( 開発期間 )
既存の Java プログラムを短時間で Wiki システムの一部として組込み NetDraw
SOLAR-CATS の絵かきプログラムを PukiWiki で利用3週間 /人
NetDraw の図データを PukiWiki のページから抽出するための構文解析部 PukiWiki ページにお絵かきのデータを埋め込むための様々な変換プログラム このアプレットを起動するための PHP プログラムの作成PHP や PukiWiki のプログラムを学習する時間も必要
今回のシステムこれらの処理を行うプログラムがあらかじめ javaApplications パッケージの中に組込みFactory method パターンを利用PukiWiki 側のプログラムを書き換える必要がなし 同じプログラムを本システムに組込むのに必要な時間は 3 日 /人程度簡単なテキストエディタ… 2 時間 /人程度プログラミング言語実行環境と音楽編集・演奏プログラムの場合は 1 日 /人程度Java の開発環境として Eclipse を利用
関連研究mbed
Web でプログラミング・コンパイル、手元のデバイスに書き込み実行、 C++ 、サイトでプログラミングの共有、…一種の Wiki ではあるが … PukiWiki ではないな…実行は web ではしない (ただ、この部分については時間の問題だろう)
GIT, Sub Version, CVS … Wiki ではない
AroeAjax
AspenKonoha
九州産業大学藤田研究室 Java アプレットプラグイン任意の Java アプレットを PukiWiki のページに埋込みアプレット上で作成されたデータを保存したり , 保存したデータを読み込んだりする機能なし
PukiWiki paint プラグインpaint プラグインはペイント専用システム
作曲を共同で行うことを可能にする Web サイト専用サイト他のサーバでは不可。他の様々なアプリケーションを自由も不可
おわりにPukiWiki 上でプログラミングの共有を可能にするプラグインを開発Basic 認証も OK.WikiSym 2011 でデモ予定 .使ってみていただけると幸いです .今後改良利用方法のマニュアルの整備宣伝
謝辞PukiWiki 開発関係者に感謝しますPEN 開発関係者に感謝しますNetDraw , PukiwikiJava Connector 公開時に意見をいただいた皆さまに感謝します
質疑応答NTT 中山 :Q. Wiki のうえにあることのメリットがよくみえない。Wiki のうえにあることの利点の事例は ?>> A. 絵とかをたくさん使う実験の授業。実験資料 ? のミスをその場で修正して即座に反映。>> Q. 連携 ? などの Wiki ならではのインターフェースがないように思える。>> A. 今後考えたい ???
東大 ??Q. 実行を必ずともしたくないなどの場合にそなえて1クッションを。ソース????立ち上がりがおそいように見える。もっと早くならないものか?>> A. ...>> Q. よけいなコンソールがでるがどうにかならないのか?>> A. 仕様なのか出てしまう.出ないやり方があれば教えて欲しい>> Q. ウィンドウを埋め込むとか,必要な場合だけポップアップだとか、インターフェースの改善を。
横浜国大 ???Q. Wiki でやっているとどうやってグループコミュニケーションをとっているのか?>> A. ...???>> Q. コミュニケーション手段の拡張は?>> A. ...???>> Q. 現在、実際に使っているのか ?>> A プログラミング授業ではこれから。お絵かきでは使っている.
小出Q. Wiki を使うとひとりでの作業になりやすいが,共同作業化にうまく活用するには ???>> A. ...>> Q. twitter版の連携システムは難しいか ?>> A. できなくはないと思う。これからの検討 ????