• 検索結果がありません。

soyText-プログラムとデータを一緒に同期してどこでも動くWebアプリケーションフレームワーク

N/A
N/A
Protected

Academic year: 2021

シェア "soyText-プログラムとデータを一緒に同期してどこでも動くWebアプリケーションフレームワーク"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

soyText -

ϓϩάϥϜͱσʔλΛҰॹʹಉظͯ͠

Ͳ͜Ͱ΋ಈ͘

Web

ΞϓϦέʔγϣϯϑϨʔϜϫʔΫ

ຊൃදͰ͸ɼWeb ΞϓϦέʔγϣϯϑϨʔϜϫʔΫ soyText ΛఏҊ͢ΔɽWeb ΞϓϦέʔγϣ ϯ͸ɼωοτϫʔΫʹ઀ଓ͍ͯ͠ͳ͍ͱ͖΍ɼWeb αʔόʹো֐͕͋ͬͨͱ͖ʹར༻Ͱ͖ͳ͘ͳΔɼ ͱ͍͏໰୊఺͕͋Δɽͦ͜ͰɼsoyText Ͱ͸ɼෳ਺ͷαʔόɼ͋Δ͍͸ϩʔΧϧͳ؀ڥͰ·ͬͨ͘ಉ ͡؀ڥΛՔಇͤ͞ΒΕΔ࢓૊ΈΛ࣮ݱͨ͠ɽsoyText ͸ɼϑϨʔϜϫʔΫ্Ͱಈ͘ϓϩάϥϜ͓Αͼ ͦΕΒͷϓϩάϥϜ͕ར༻͢ΔσʔλΛɼ୯Ұͷ૊ΈࠐΈσʔλϕʔε্ʹҰॹʹอଘ͍ͯ͠Δɽͦ ΕΒͷϓϩάϥϜ͓ΑͼσʔλΛଞͷίϯϐϡʔλ্ʹ͋Δ soyText ͷγεςϜͱಉظ͢Δ͜ͱʹ Αͬͯɼෳ਺ͷίϯϐϡʔλ্Ͱ·ͬͨ͘ಉ͡؀ڥΛ࠶ݱ͢Δ͜ͱ͕Ͱ͖Δɽ

soyText - The Web application framework, runs on

everywhere by synchronizing both programs and data

Cho Shinya

This presentation proposes ”soyText”, Web application frame work. Web applications are not available when network is disconnected or servers failed. soyText solves this problem by copying server environment into client computers. Each system of soyText has single em-bedded database that contains all program and data needed to run the application. Two or more systems of soyText can easily ”sync” their database to work with the same environment between servers and clients.

1. ͸ ͡ Ί ʹ

චऀ͸ɼ͜Ε·ͰWebϒϥ΢β্Ͱಈ͘ϓϩάϥ

ϛϯά؀ڥʢWeb-bases IDEɼҎԼWBIͱݺͿ)Λ ࡞ͬͯतۀͰ׆༻͖ͯͨ͠ɽ WBIͷར఺ͱͯ͠ɼ࣍ͷΑ͏ͳ͜ͱ͕͋͛ΒΕΔɽ ֶशऀʹΑΔ؀ڥͷηοτΞοϓ͕ෆཁͰɼେਓ ਺ͷतۀʹ͓͚Δαϙʔτͷܰݮ͕Ͱ͖Δ ֶशऀؒͷϓϩάϥϜͷڞ༗͕༰қͰ͋Δɼଞͷ ਓͷ࡞඼ΛݟͨΓධՁͨ͠Γ͢Δ͜ͱʹΑͬͯϞ νϕʔγϣϯΛ͋͛Δ͜ͱ͕Ͱ͖Δ ֶश؀ڥͷෆ۩߹΍όʔδϣϯΞοϓΛWebϒ ϥ΢βΛ௨ͯ͡ಈతʹߦ͏͜ͱ͕Ͱ͖Δ ͜Ε·ͰʹɼPHPͷ։ൃ؀ڥ1)(ਤ1)΍JavaScript

ͱWeb APIΛ༻͍ͨ։ൃ؀ڥ2)(ਤ2)ͳͲΛWBI

Ͱ࡞Γɼ࣮ࡍͷतۀʹ༻͍͖ͯͨɽ ຊൃදͰ͸ɼ͜ΕΒͷ࣮श؀ڥʹదͨ͠WebϑϨʔ ϜϫʔΫΛఏҊ͢Δɽ † ໌੕େֶ Meisei University ਤ1 PHP ͷ WBI Fig. 1 WBI in PHP

2. WBI ΁ͷཁ݅

͜͜Ͱ͸ɼ͜Ε·ͰͷWBIͷ։ൃΛ௨ͯ͡ಘΒΕ ͨɼγεςϜ͕΋ͭ΂͖ཁ݅Λ·ͱΊΔɽ

(2)

2 JavaScript ʴ Web API ʹΑΔ WBI Fig. 2 WBI in JavaScript and Web API

2.1 ༷ʑͳछྨͷݴޠͰॻ͔ΕͨϓϩάϥϜΛ҆ શʹಈ͔͢ WBIͰ͸ɼֶशऀ͕ॻ͍ͨϓϩάϥϜ͕Webαʔ όͳͲʹෆ۩߹Λى͜͢ՄೳੑΛഉআ͢Δඞཁ͕͋Δɽ ਤ1ͷPHPͷ࣮श؀ڥͰ͸ɼֶशऀͷॻ͍ͨϓϩ άϥϜΛPHPͷΠϯλϓϦλΛ࢖ͬͯͦͷ··ಈ࡞ ͍ͤͯͨ͞͠ͷͰɼWebαʔόͷॏཁͳϑΝΠϧΛ ಡΈॻ͖͞ΕΔՄೳੑ΍ɼ֎෦ͷωοτϫʔΫʹ๬· ͘͠ͳ͍ΞΫηεΛ͞ΕΔڪΕ͕͋ͬͨɽ Ұํɼਤ2ͷJavaScriptͷ࣮श؀ڥ͸ɼֶशऀ͕ ॻ͍ͨ͢΂ͯͷϓϩάϥϜΛ͢΂ͯϒϥ΢βͰಈ͔͠ ͨͷͰɼWebαʔόʹ௚઀ෆ۩߹Λ༩͑Δ͜ͱ͸ͳ ͔͕ͬͨɼαʔόαΠυͷϓϩάϥϛϯά͕Ͱ͖ͳ͘ ͳͬͨͨΊɼे෼ͳԋश͕Ͱ͖ͳ͔ͬͨɽ ͜ΕΒͷ͜ͱ͔ΒɼαʔόαΠυͰ҆શͳϓϩάϥ ϜΛ࣮ߦ͢Δ͜ͱ͕ඞཁͰ͋Γɼ·ͨɼֶश͢Δ಺༰ ʹΑͬͯଟ͘ͷݴޠʹରԠͤ͞Δඞཁ΋͋Δͱ͍͑Δɽ 2.2 ো֐ʹΑΔఀࢭΛ๷͙ WBIʹΑΔ࣮श؀ڥ͸ɼ௨ৗɼڭࣨ֎ͷWebαʔ όʹઃஔ͢Δ͜ͱ͕ଟ͍ɽ͜ͷͱ͖ɼαʔόͷো֐΍ ωοτϫʔΫͷੇஅ͕͋Δͱڭ͔ࣨΒ࣮श؀ڥ͕࢖͑ ͳ͘ͳͬͯ͠·͏ɽ ී௨ͷ࣮शʹ͓͍ͯ͸ɼ࣮शʹ༻͍ΔॲཧܥͳͲ͸ ڭࣨ಺ͷϩʔΧϧͳ୺຤ʹΠϯετʔϧ͞Ε͍ͯΔͷ Ͱɼສ͕ҰωοτϫʔΫ͕੾Εͯ΋ɼϓϩάϥϜΛ࣮ ߦ͢Δ͕͜Ͱ͖Δɽ͔͠͠ɼWBIͰ͸࣮शͦͷ΋ͷ ΛWebͰߦͳ͍ͬͯΔͷͰɼωοτϫʔΫ͕੾Εͨ Β࣮श͕Ͱ͖ͳ͘ͳΔɽ͜ͷͨΊωοτϫʔΫ΍αʔ όͷো֐͸க໋తͱͳΔɽ͜ͷͨΊɼωοτϫʔΫ͕ ͭͳ͕͍ͬͯͳͯ͘΋࣮श͕ଓ͚ΒΕΔ؀ڥ͕ඞཁʹ ͳΔɽ 2.3 ֶश݁ՌΛ౷߹తʹ؅ཧ͢Δ तۀͷਐߦத΍तۀऴྃޙʹɼֶ֤शऀͷֶश݁Ռ ʢֶशऀ͕࡞ͬͨϓϩάϥϜɼϨϙʔτ౳ʣͷղੳΛ ͢Δ৔߹͕͋ΔɽֶशऀʹΑͬͯ͸ɼෳ਺ͷWBIΛ ༻͍͍ͯΔ৔߹΋͋ΔͷͰɼֶश݁ՌΛԣஅతʹղੳ ͢Δʹ͸͢΂ͯͷWBIͷσʔλ͕౷߹తʹ؅ཧͰ͖ Δඞཁ͕͋Δɽ

3. soyText ͷಛ௃

લઅͰࣔͨ͠ཁ݅Λղܾ͢ΔͨΊɼWebϑϨʔϜ ϫʔΫsoyTextΛ։ൃͨ͠ɽsoyText͸࣍ͷΑ͏ͳಛ ௃Λ΋ͭɽ αϯυϘοΫε؀ڥͰͷεΫϦϓτݴޠͷ؀ڥΛ ఏڙ͢Δ soyTextͷγεςϜʹ͸ɼ֤छεΫϦϓτݴޠͷ εΫϦϓτΤϯδϯΛ౥ࡌ͠ɼֶशऀ͕ॻ͍ͨϓ ϩάϥϜ͸͢΂ͯεΫϦϓτΤϯδϯΛ௨࣮ͯ͡ ߦͤ͞Δɽ͜ΕʹΑΓɼֶੜ͕ෆ༻ҙʹॻ͍ͨة ݥͳಈ࡞Λ཈੍ͤ͞ΔΑ͏ʹ͢Δɽ·ͨɼଟ਺ͷ ݴޠʹରԠ͢Δ͜ͱʹΑͬͯɼ୯ҰͷγεςϜͰ ༷ʑͳतۀͷWBIΛ࡞੒Ͱ͖ΔͨΊɼֶश݁Ռ ͷ౷߹؅ཧ͕༰қʹͳΔɽ αʔόͰಈ͍͍ͯΔ؀ڥΛͦͷ··μ΢ϯϩʔυ ͯ͠ɼ֤ϢʔβͷखݩͷPCͰ΋Webαʔόͱ ͯ͠ಈ࡞͢Δ ωοτϫʔΫͷͳ͍؀ڥͰֶश͢Δ৔߹΍ɼωο τϫʔΫɾαʔό͕ࢭ·͍ͬͯΔঢ়ଶʹ͓͍ͯ΋ɼ ༧Ίखݩʹμ΢ϯϩʔυ͓͍ͯͨ͠αʔόͷ؀ڥ Λμ΢ϯϩʔυ͓ͯ͘͜͠ͱͰɼखݩͷPCͰ΋ ಉ͡Α͏ʹֶश͕Ͱ͖Δɽ·ͨɼμ΢ϯϩʔυ͠ ͨ؀ڥ͸ɼಛผͳΠϯετʔϧ΍ઃఆͷ࡞ۀͳ͠ ʹ؆୯ʹىಈͰ͖ΔΑ͏ʹ͓ͯ͘͠ɽ खݩͷPCͷϓϩάϥϜɾσʔλͱαʔόͷϓϩ άϥϜɾσʔλͷಉظ͕Ͱ͖Δ લ߲ͷΑ͏ʹɼखݩͷ؀ڥͰֶशΛߦͬͨ৔߹ɼ ͋ͱͰαʔόͱ઀ଓͰ͖Δঢ়ଶʹͳͬͨͱ͖ʹɼ खݩͷ؀ڥͱαʔόͷ؀ڥΛಉظͤ͞ɼ ֶश݁Ռ Λαʔόʹ൓өͤ͞Δ͜ͱ͕Ͱ͖Δɽ·ͨɼαʔ όͷϓϩάϥϜ΍σʔλʹมߋ͕͋ͬͨ৔߹͸ɼ खݩͷ؀ڥʹͦͷϓϩάϥϜ΍σʔλΛ൓өͤ͞ Δ͜ͱ΋Ͱ͖Δɽ soyTextͷར༻ܗଶͷྫΛਤ3ʹࣔ͢ɽ ௨ৗ࣌ʢਤ3ͷࠨଆʣ͸ɼωοτϫʔΫ্ͷαʔ όʹΠϯετʔϧ͞Ε͍ͯΔsoyTextͷγεςϜ ʢҎԼɼγεςϜʣ͚͕ͩՔಇ͓ͯ͠ΓɼϢʔβ ͸ɼݸਓ͕΋ͭPC͔ΒWebϒϥ΢βΛ௨ͯ͡

(3)

䝸䝰䞊䝖䛾䝃䞊䝞 䝻䞊䜹䝹䛾PC soyText 䝅䝇䝔䝮 Web䝃䞊䝞 䝇䜽䝸䝥䝖䜶䞁䝆䞁 䝕䞊䝍䝧䞊䝇 䝥䝻䜾䝷䝮 (Javascript➼䠅 䝕䞊䝍 Web䝤䝷䜴䝄 䝻䞊䜹䝹䛾PC Web䝤䝷䜴䝄

䠄㏻ᖖ᫬䠅

䝥䝻䜾䝷䝮䠇䝕䞊䝍䛾 䝞䝑䜽䜰䝑䝥 䝥䝻䜾䝷䝮䠇䝕䞊䝍䛾 䝞䝑䜽䜰䝑䝥 䝎䜴䞁䝻䞊䝗 䝎䜴䞁䝻䞊䝗 䝸䝰䞊䝖䛾䝃䞊䝞 䝻䞊䜹䝹䛾PC soyText 䝅䝇䝔䝮 Web䝃䞊䝞 䝇䜽䝸䝥䝖䜶䞁䝆䞁 䝕䞊䝍䝧䞊䝇 䝥䝻䜾䝷䝮 (Javascript➼䠅 䝕䞊䝍 soyText 䝅䝇䝔䝮 Web䝃䞊䝞 䝇䜽䝸䝥䝖䜶䞁䝆䞁 䝕䞊䝍䝧䞊䝇 Web䝤䝷䜴䝄 䝻䞊䜹䝹䛾PC soyText 䝅䝇䝔䝮 Web䝃䞊䝞 䝇䜽䝸䝥䝖䜶䞁䝆䞁 䝕䞊䝍䝧䞊䝇 Web䝤䝷䜴䝄 ྠᮇ 䠄᚟ᪧᚋ) ྠᮇ 䠄᚟ᪧᚋ)

䠄㞀ᐖ᫬䠅

㉳ື ㉳ື ਤ3 soyText ͷར༻ܗଶ Fig. 3 Assumed usage in soyText

γεςϜʹΞΫηε͢Δɽ ఆظతʹʢຖճͷतۀͷऴΘΓͳͲʣʹɼγες Ϝ͔ΒϓϩάϥϜ͓ΑͼσʔλΛμ΢ϯϩʔυ͞ ͤɼ֤ࣗͷϩʔΧϧͳPCʹόοΫΞοϓͤͯ͞ ͓͘ɽ ສ͕ҰɼωοτϫʔΫ΍αʔόͷো֐͕͋ͬͨ৔ ߹ʢਤ3ͷӈଆʣ͸ɼखݩʹόοΫΞοϓ͓ͯ͠ ͍ͨγεςϜΛϩʔΧϧͷPCͰىಈ͠ɼWebϒ ϥ΢β͔ΒlocalhostʹΞΫηε͢Δ͜ͱͰɼγ εςϜͷར༻Λܧଓ͢Δ͜ͱ͕Ͱ͖Δɽ ো֐͕෮چͨ͠ޙɼαʔόʹ͋ΔϓϩάϥϜ͓Α ͼσʔλͱಉظΛ͢Δ͜ͱʹΑͬͯɼαʔόʹ΋ ো֐தʹมߋͨ͠σʔλΛ൓өͤ͞Δ͜ͱ͕Ͱ ͖Δɽ 䝸䝰䞊䝖䛾䝃䞊䝞 Ꮫ⩦⪅D䛾 Ꮫ⩦ෆᐜ ᤵᴗA

䛾WBI 䛾WBIᤵᴗB ᤵᴗC䛾WBI Ꮫ⩦⪅E䛾 Ꮫ⩦ෆᐜ Ꮫ⩦⪅F䛾 Ꮫ⩦ෆᐜ Ꮫ⩦⪅D䛾PC Ꮫ⩦⪅E䛾PC Ꮫ⩦⪅F䛾PC Ꮫ⩦⪅D䛾 Ꮫ⩦ෆᐜ ᤵᴗA 䛾WBI Ꮫ⩦⪅E䛾 Ꮫ⩦ෆᐜ ᤵᴗA 䛾WBI ᤵᴗC

䛾WBI ᤵᴗB䛾WBI ᤵᴗC䛾WBI Ꮫ⩦⪅F䛾 Ꮫ⩦ෆᐜ ྠᮇ ྠᮇ ྠᮇ ਤ4 तۀʹ͓͚Δ soyText ͷσʔλ഑ஔྫ Fig. 4 Data deployment of soyText in classrooms.

͜ͷΑ͏ͳܗଶʹ͢Δ͜ͱʹΑͬͯɼWebΞϓϦ έʔγϣϯͱͯ͠ͷखܰ͞ʢWebϒϥ΢β͔ΒΞΫ ηεͰ͖ΔʣΛଛͳ͏͜ͱͳ͘ɼωοτϫʔΫ͕ෆ௨ ͷঢ়ଶͰ΋࠷௿ݶͷ࡞ۀ͕Ͱ͖ΔΑ͏ʹͳΔɽ ͳ͓ɼWebαʔόʹΠϯετʔϧ͞ΕͨγεςϜ ʹ͸ɼ͢΂ͯͷतۀͰ༻͍ΔWBIͷϓϩάϥϜ͓Α ͼ͢΂ͯͷֶशऀͷֶश݁ՌΛ֨ೲ͓͕ͯ͘͠ɼ֤ݸ ਓͷPCʹμ΢ϯϩʔυ͞ΕΔσʔλ͸ɼਤ4Ͱࣔ͠ ͍ͯΔΑ͏ʹɼ֤ϢʔβͷखݩͷPCʹ͸ɼ֤͕ࣗඞ ཁͱ͢ΔϓϩάϥϜ͓Αͼσʔλ͚ͩʹݶఆ͢Δ͜ͱ ͕Ͱ͖Δɽ͜ΕʹΑΓɼݸਓͷϗʔϜσΟϨΫτϦͷ Α͏ͳɼ༰ྔʹ੍ݶͷ͋Δ؀ڥͰ΋࠷௿ݶͷ༰ྔͰಈ ͔͢͜ͱ͕Ͱ͖Δɽ

4. ࣮

4.1 ࣮૷ͷํ਑ લઅͰड़΂ͨΑ͏ʹɼsoyText͸ֶ֤शऀͷखݩͷ ؀ڥͰ΋ಈ࡞͢ΔΑ͏ͳܗଶʹͳ͍ͬͯΔɽֶशऀͷ खݩͷ؀ڥ͸ɼڭࣨͷPC୺຤ͳͲɼΠϯετʔϧʹ ੍ݶͷ͋Δ؀ڥͰ͋Δ৔߹͕ଟ͘ɼεΫϦϓτͷॲཧ ܥɼWebαʔόɼσʔλϕʔεͷγεςϜΛҰࣜΠ ϯετʔϧ͢Δͷ͸େมͰ͋ΔͨΊɼ࣍ͷΑ͏ͳํ਑ Ͱ࣮૷Λߦͬͨɽ • JavaΛ༻͍࣮ͯ૷͢Δ Java͸ɼ਺ଟ͘ͷϓϥοτϑΥʔϜͰಈ͔͢͜ͱ ͕Ͱ͖ΔɽΞϓϦέʔγϣϯ͸࣮ߦՄೳͳjarܗ ࣜʹ·ͱΊͯ഑෍Ͱ͖ΔͨΊىಈ͕؆୯ʹߦ͑Δɽ ·ͨɼRhino3)(JavaScript)ɼJRuby4) (Ruby)ɼ

Jython5)(PythonʣɼQuercus6)(PHP)ͳͲɼଟ ͘ͷݴޠͷεΫϦϓτΤϯδϯ͕࣮૷͞Ε͍ͯΔɽ αʔό΍σʔλϕʔεΛ૊ΈࠐΜͰ࣮૷͢Δ ڭࣨͳͲͷतۀ؀ڥͰ͸ɼΠϯετʔϧͰ͖Δι ϑτ΢ΣΞ͕ݶఆ͞Ε͍ͯΔͨΊɼDBMS΍αʔ ϒϨοτίϯςφΛผ్Πϯετʔϧ͢Δ͜ͱ͸ ೉͍͠ɽ ͦ͜Ͱɼσʔλϕʔεʹ͸SqliteͷJava࣮૷Ͱ ͋ΔSqlJET7)ɼWebαʔό͸ɼελϯυΞϩϯ ͳWebαʔόͰ͋ΔNanoHTTPD8)Λ༻͍ͨɽ

(4)

ϓϩάϥϜ΍σʔλؒͷࢀরؔ܎Λอো͢Δ 3અͷ࠷ޙͰड़΂ͨΑ͏ʹɼಉظΛߦ͏ࡍʹɼख ݩͷ؀ڥ͸࠷௿ݶඞཁͳσʔλΛμ΢ϯϩʔυ͢ Δ͜ͱͰɼඞཁͳ༰ྔΛগͳ͘͢Δ͜ͱ͕Ͱ͖Δɽ ͜ͷͱ͖ɼ͋ΔϓϩάϥϜ΍σʔλΛਖ਼͘͠ར༻ ͢ΔͨΊʹඞཁͳଞͷϓϩάϥϜ΍σʔλʢ͜Ε Λɼʮࢀর͍ͯ͠ΔʯϓϩάϥϜ΍σʔλͱݺͿʣ ͕ԿͰ͋Δ͔ΛɼϑϨʔϜϫʔΫͰ͋ΔsoyText ࣗ਎͕೺Ѳ͓ͯ͘͠ඞཁ͕͋Δɽͦ͜ͰɼsoyText Ͱ͸ɼ͢΂ͯͷϓϩάϥϜ΍σʔλʹɼͦΕͧΕ ͕ࢀর͍ͯ͠ΔϓϩάϥϜ΍σʔλͷ৘ใΛ෇Ճ ͢ΔΑ͏ʹ͍ͯ͠Δɽ 4.2 σʔλϕʔεͷߏ଄ soyTextʹ͓͍ͯ͸ɼαʔόɾΫϥΠΞϯτؒͰϓ ϩάϥϜͱσʔλ͕͢΂ͯಉظ͞ΕΔɽಉظͷ࢓૊Έ Λ୯७ʹ࣮૷͢ΔͨΊɼϓϩάϥϜͱσʔλΛಉҰͷ ΋ͷͱͯ͠ѻ͑ΔΑ͏ʹͨ͠ɽϓϩάϥϜͱσʔλΛ ͋ΘͤͯʮจॻʯͱݺͿɽ σʔλϕʔε͸ʮจॻςʔϒϧʯͱ͍͏ςʔϒϧΛ ΋ͭɽจॻςʔϒϧʹ͸ෳ਺ͷจॻ͕Ϩίʔυͱ͠ ͯ ೖ͍ͬͯΔɽ֤จॻ͸ɼ֤छεΫϦϓτݴޠͷΦϒδΣ Ϋτͱͯ͠දݱ͞ΕΔɽ จॻ͸࣍ͷଐੑΛ΋ͭɿ • id ͜ͷจॻͷIDΛ͋ΒΘ͢ɽଞͷγεςϜͷؒͰ ΋ID͸ҰҙͰ͋Δඞཁ͕͋Δɽ ݱ࣮૷Ͱ͸ʮ֤ γεςϜ͕ੜ੒ͨ͠௨͠൪߸@γεςϜIDʯͱ͍ ͏ܗࣜͰ͋ΔɽγεςϜID͸ɼ֤γεςϜʹৼ ΒΕͨIDͰ͋Γɼ͜ͷจॻΛ࠷ॳʹ࡞੒ͨ͠γ εςϜͷIDͱͳΔɽಉظΛߦ͏͜ͱʹΑΓɼଞ ͷγεςϜ͕࡞੒ͨ͠จॻͷෳ੡͕࡞ΒΕΔ͜ͱ ͕͋Δɽ͕ͨͬͯ͠ɼଞͷγεςϜͷIDΛ΋ͬ ͨจॻ͕֨ೲ͞ΕΔ͜ͱ΋͋Δɽ • lastUpdate ͜ͷจॻ͕࠷ޙʹ࡞੒·ͨ͸มߋ͞Εͨ೔࣌Λ͋ ΒΘ͢ɽҎલʹಉظͨ͜͠ͱ͕͋ΔγεςϜͱ࠶ ౓ಉظ͢Δࡍʹ͸ɼ͜ͷ೔࣌Λ༻͍ͯมߋ͕͋ͬ ͨ෼͚ͩΛಉظ͢Δɽ • content ͜ͷจॻ͕͋ΒΘ͢ϓϩάϥϜ·ͨ͸σʔλΛε ΫϦϓτݴޠͰهड़͢Δɽهड़ͷ಺༰ʹΑͬͯ͸ɼ จॻ͕ଞͷจॻΛࢀর͢Δ͜ͱ΋͋Δɽهड़ྫ͸ 5ʹޙड़͢Δɽ • language contentΛهड़͢ΔεΫϦϓτݴޠΛද͢ɽݱࡏ ͸”JavaScript”ͷΈ͕ରԠ͍ͯ͠Δɽ 4.3 ಉ ظ ଞͷsoyTextγεςϜͱσʔλϕʔεͷಉظΛߦ͏ ͜ͱʹΑͬͯɼจॻͷ಺༰ΛͦΕͧΕಉ͡ঢ়ଶʹ͢Δ ͜ͱ͕Ͱ͖Δɽσʔλϕʔεʹ͸ϓϩάϥϜͱσʔλ ͕྆ํؚ·ΕΔͨΊɼϓϩάϥϜͷߋ৽΋ؚΊͯΞϓ ϦέʔγϣϯΛಉ͡ঢ়ଶʹ͢Δ͜ͱ͕Ͱ͖Δɽ ಉظʹ͸࣍ͷ2ͭͷํ͕ࣜ͋Δɽ શಉظ ಉظݩͷγεςϜͱɼಉظઌͷγεςϜ͕͓ޓ ͍ͷ͢΂ͯͷจॻΛอ࣋͢ΔํࣜͰ͋Δɽ࠷ॳʹ ಉظ͢Δ৔߹͸ɼಉظઌͷ͢΂ͯͷจॻ͕μ΢ϯ ϩʔυ͞ΕɼಉظݩͷγεςϜ͕΋ͭ͢΂ͯͷจ ॻΛΞοϓϩʔυ͢Δɽ2ճ໨Ҡߦͷಉظʹ͓͍ ͯ͸ɼ࠷ޙͷಉظҎདྷߋ৽ͷ͋ͬͨจॻ͚ͩΛμ ΢ϯϩʔυɾΞοϓϩʔυ͢Δɽ ෦෼ಉظ ಛఆͷ৚݅ʹҰக͢ΔจॻͱɼͦΕΒͷจॻ͔Β ʢ࠶ؼతʹʣࢀর͞ΕΔจॻ͚ͩΛμ΢ϯϩʔυɾ Ξοϓϩʔυ͢ΔํࣜͰ͋Δɽ৚݅͸ಉظݩͱಉ ظઌͰҟͳ͍ͬͯͯ΋Α͍ɽྫ͑͹ɼϩʔΧϧͷ γεςϜ͔ΒɼϦϞʔτͷγεςϜ΁͸ɼ͢΂ͯ ͷจॻΛΞοϓϩʔυ͢Δ͕ɼϦϞʔτ͔Βϩʔ Χϧ΁͸ɼϩʔΧϧͷϢʔβͱؔ܎͢Δจॻʢͦ ͷϢʔβ͕࡞ͬͨจॻͳͲʣ͚ͩΛμ΢ϯϩʔυ ͢ΔΑ͏ʹઃఆ͢Δ͜ͱ΋ՄೳͰ͋Δɽ

5. จ ॻ ͷ ྫ

͜͜Ͱ͸ɼσʔλϕʔεʹ֨ೲ͞ΕΔσʔλɾϓϩ άϥϜͷྫΛࣔ͢ɽͳ͓ɼsoyTextʹ͸ඪ४ͷจॻΤ σΟλ͕૊Έࠐ·Ε͓ͯΓɼਤ5ͷΑ͏ʹWebϒϥ ΢β͔ΒฤूՄೳͰ͋Δɽ ਤ5 soyText ඪ४ͷจॻΤσΟλ Fig. 5 Default editor embedded in soyText

(5)

5.1 ୯७ͳจॻ ਤ6ʹɼ୯७ͳจࣈྻଐੑΛ΋ͭJavaScriptΦϒ δΣΫτΛɼจॻʹهड़ͨ͠ྫΛࣔ͢ɽ id: [email protected] content: $.extend( ,{ name: "hello.txt", body: "Hello, world"

});

6 ୯७ͳจॻ Fig. 6 a simple document

ม਺$͓Αͼ ม਺ ͸soyText͔Βࣗಈతʹ౉͞Ε Δɽม਺$͸σʔλͷߏஙΛखॿ͚͢ΔΦϒδΣΫτ Λ͍ࣔͯ͠Δɽม਺ ʹ͸จॻΛ͋ΒΘ͢ΦϒδΣΫ τʢจॻΦϒδΣΫτ)͕ॳظԽ͞Ε͍ͯͳ͍ঢ়ଶͰ ೖ͓ͬͯΓɼ$.extendϝιουΛ௨ͯ͡ ʹσʔλ Λॻ͖ࠐΜͰ͍Δɽ 5.2 ଞͷจॻΛࢀর͢Δจॻ ਤ7ʹɼଞͷจॻΛࢀর͢ΔจॻͷྫΛࣔ͢ɽଞ ͷจॻΛࢀর͢Δ৔߹͸ɼ$.byIdϝιουΛ༻͍ͯ ID͔ΒจॻΦϒδΣΫτΛऔಘ͠ɼจॻΦϒδΣΫ τʹॻ͖͜Ήɽcontent಺෦Ͱએݴ͞Ε͍ͯΔม਺ͱ ͦͷ஋͸ɼจॻΦϒδΣΫτͷ”scope”ͱ͍͏ϓϩύ ςΟʹॻ͖͜·ΕΔɽ͜Ε͸ɼϓϩάϥϜ͔Βͷσʔ λͷॻ͖׵͑(ޙड़)Λߦ͏ͱ͖ʹɼએݴ͞Ε͍ͯͨ ม਺ͷҰཡΛจॻΦϒδΣΫτʹॻ͖໭͢ͱ͖ʹ༻͍ ΒΕΔɽ id: [email protected] content: var hello=$.byId("[email protected]"); $.extend( ,{

scope: {hello: hello}, name: "my folder", hello: hello

});

7 ଞͷจॻΛࢀর͢Δจॻ

Fig. 7 a document which refers other document

5.3 ϓϩάϥϜʢؔ਺ʣΛؚΉจॻ จॻͷσʔλʹ͸ؔ਺ΛؚΉ͜ͱ͕Ͱ͖Δɽਤ8ʹɼ ؔ਺ΛؚΉจॻͷྫΛࣔ͢ɽ ਤ9ͷΑ͏ʹɼ֎෦ͷσʔλΛࢀর͢Δؔ਺΋࡞ ΕΔɽ 5.4 WebΞϓϦέʔγϣϯจॻ doGet ͱ͍͏ϓϩύςΟʹؔ਺Λઃఆͨ͠จॻΛ WebΞϓϦέʔγϣϯจॻͱݺͿɽ͜ͷจॻʹWeb ϒϥ΢β͔ΒΞΫηε͢ΔͱɼdoGetʹઃఆͨؔ͠਺ id: [email protected] content: $.extend( ,{ name: "displayResult", display: function (s) { return "Result :"+s; } });8 ؔ਺ΛؚΉจॻ Fig. 8 a document having a function

id: [email protected] content:

var hello=$.byId("[email protected]"); $.extend( ,{

scope: {hello: hello}, name: "displayHello", display: function () {

return "Result :"+hello.body;

} });

9 ֎෦ͷจॻΛؔ਺͔Βࢀর͢Δ Fig. 9 a function refers other document ͕ݺ͹ΕͯɼWebϖʔδ͕ಈతʹੜ੒͞ΕΔɽਤ10

ʹɼWebΞϓϦέʔγϣϯจॻͷྫΛࣔ͢ɽdoGet

͸ɼServletʹ͓͚ΔrequestͱresponseΦϒδΣΫ τΛड͚औΓɼϖʔδͷੜ੒Λߦ͏ɽ

id: [email protected] content:

$.extend( ,{

name: "changeHello",

doGet: function (request,response) { var w=response.getWriter(); w.println("Hello, world");

} });

10 Web ΞϓϦέʔγϣϯจॻ Fig. 10 a Web application document

5.5 ϓϩάϥϜ͔Βͷσʔλͷॻ͖׵͑ ਤ11ʹهड़͞ΕͨϖʔδΛ࣮ߦ͢Δͱɼ࣮ߦޙɼ [email protected]ͷจॻͷcontent͕ਤ12ͷΑ͏ʹ ࣗಈతʹॻ͖׵ΘΔɽ͜ͷྫͰ͸ɼจࣈྻͷ஋Λॻ͖ ࠐΜͰ͍Δ͕ɼଞͷΦϒδΣΫτ΁ͷࢀর΍ɼ഑ྻɼ ϋογϡɼؔ਺ͳͲΛॻ͖ࠐΉ͜ͱ΋ՄೳͰ͋Δɽ 5.6 ݕ ࡧ ਤ13͸ɼσʔλϕʔε಺ͷจॻͷݕࡧΛ͢Δϓϩ άϥϜͷྫͰ͋ΔɽจॻΛݕࡧ͢Δʹ͸ɼdbͱ͍͏ม ਺͔Βࢀর͞ΕΔ૊ΈࠐΈΦϒδΣΫτʢdbΦϒδΣ ΫτʣΛ༻͍Δɽ͜͜Ͱ͸ɼݕࡧ৚݅ͱͯ͠nameͱ ͍͏ϓϩύςΟͷ஋ʹhelloͱ͍͏จࣈྻΛؚΉจॻ

(6)

id: [email protected] content:

var hello=$.byId("[email protected]"); $.extend( ,{

name: "world2japan",

doGet: function (request,response) { hello.body="Hello, Japan"; hello.save(); w.println("hello.body="+hello.body); } });11 จॻΛॻ͖׵͑ΔϓϩάϥϜ Fig. 11 a program modifying other document

id:

[email protected] content:

$.extend( ,{

name: "hello.txt", body: "Hello, Japan"

});

12 ॻ͖׵͑ޙͷ಺༰

Fig. 12 changed content after modification

Λࢦఆ͍ͯ͠Δɽ৚݅ʹҰகͨ͢͠΂ͯͷจॻʹ͍ͭ ͯɼeach ϝιουʹࢦఆͨؔ͠਺Λݺͼग़ͯ͠ॲཧ Λߦ͏ɽ id: [email protected] content: $.extend( ,{ name: "changeHello",

doGet: function (request,response) { var w=response.getWriter(); db.q("name","hello").each(function (doc) { w.println("Found :<br>"); w.println("name="+doc.name+"<br>"); w.println("body="+doc.body+"<br>"); }); } });13 จॻͷݕࡧ Fig. 13 searching documents

5.7 ΦϒδΣΫτࢦ޲ JavaScript Ͱ͸ɼؔ਺ΦϒδΣΫτΛ༻͍ͯΦϒ δΣΫτͷϓϩτλΠϓΛఆٛ͢Δɽ͜͜Ͱ͸ɼϓϩ τλΠϓΛఆٛ͢ΔͨΊͷؔ਺ΦϒδΣΫτΛศ্ٓ ʮΫϥεʯͱݺͿɽ soyTextͷจॻ͸ɼ͢΂ͯؔ਺ΦϒδΣΫτͱͯ͠ ݟͳ͢͜ͱ͕Ͱ͖ΔͷͰɼ೚ҙͷจॻͷprototypeϓ ϩύςΟʹඞཁͳϝιουΛఆٛ͢Δ͜ͱͰɼΫϥε ͕ఆٛͰ͖Δɽ ਤ14͸ɼΫϥεΛఆٛͨ͠ྫͰ͋Δɽ͜͜Ͱ͸ɼ RubyͷεΫϦϓτΛ͋ΒΘ͢ΫϥεΛఆ͍ٛͯ͠Δɽ initializeϝιου͸ίϯετϥΫλͱͯ͠ఆٛ͞Εɼ Ҿ਺ʹRubyͷϓϩάϥϜΛද͢จࣈྻΛड͚औͬͯ ॳظԽ͢Δɽ id: [email protected] content: var Ruby=$.byId("[email protected]"); $.extend( ,{ name: "RubyScript", prototype:{

initialize: function (body) { this.body=body;

},

eval: function () {

return Ruby.eval(this.body);

},

doGet: function (request,response) { var w=response.getWriter(); w.println(this.eval()); } } });14 ΫϥεΛ͋ΒΘ͢จॻ Fig. 14 document represent a class

15ʹࣔͨ͠จॻ͸ɼਤ14ͷΫϥεͷΠϯελ ϯεͰ͋ΔɽconstructorϓϩύςΟʹɼ͜ͷจॻͷ ΫϥεͱͳΔจॻΛࢦఆ͍ͯ͠Δɽ͜ͷจॻ͸ɼਤ14 Ͱࢦఆ͞ΕͨdoGetؔ਺Λ΋͍ͬͯΔͨΊɼWebΞ ϓϦέʔγϣϯจॻͱ࣮ͯ͠ߦՄೳͰ͋Δɽ࣮ߦ͢Δ ͱɼbodyϓϩύςΟʹॻ͔Ε͍ͯΔRubyͷεΫϦ ϓτͷ࣮ߦ݁ՌWebϒϥ΢βʹදࣔ͢Δɽ ͳ͓ɼਤ 15 ʹॻ͔ΕͨRuby ͷϓϩάϥϜ͸ɼ JavascriptͷจࣈྻϦςϥϧͰهड़͞Ε͍ͯΔͨΊɼ ਤ5ͷΑ͏ͳඪ४ͷΤσΟλͰฤू͢Δͷ͸೉͍ͨ͠ Ίɼࣗ෼ͰΤσΟλΛ࡞੒ͯ͠ฤूํ๏ΛΧελϚΠ ζ͢Δ͜ͱ΋Ͱ͖Δɽ

6. ࣮

චऀ͕୲౰͍ͯ͠Δϓϩάϥϛϯάͷतۀʹ͓͍ͯ ͸soyTextΛ༻͍ͯतۀࢧԉͷWebΞϓϦέʔγϣ ϯΛ։ൃ͠ɼतۀͰֶੜʹ࢖Θ͍ͤͯΔɽ ͜͜Ͱ͸ɼϓϩάϥϛϯάݴޠʮυϦτϧ9)ʯΛ༻ ͍ͨWebΞϓϦέʔγϣϯ։ൃ؀ڥʮD-rails10)ʯͷ ྫΛࣔ͢ɽD-railsͷಈ࡞ը໘Λਤ16ʹࣔ͢ɽ͜ͷը ໘͸Webϒϥ΢β্Ͱಈ࡞͠ɼWebϒϥ΢β͔Βϓ ϩάϥϜʢϖʔδʣΛهड़͠ɼදࣔɾ࣮ߦΛߦ͏͜ͱ͕ Ͱ͖ΔɽD-railsʹΑΔϓϩάϥϜͷྫΛࣔ͢ɽਤ17 ͸ɼσʔλϕʔεΛ৽͘͠࡞੒͢ΔྫͰ͋Γɼਤ18 ͓Αͼਤ19͸ɼσʔλϕʔεͷσʔλΛදࣔ͢Δྫ

(7)

16 D-rails ͷಈ࡞ը໘ Fig. 16 Screenshot of D-rails

id: [email protected] content: var RubyScript=$.byId("[email protected]"); $.extend( ,{ constructor: RubyScript, name: "helloRuby", body: "class Test \n"+ " def hello(s)\n"+ " \"Hello, #{s} world\"\n"+ " end\n"+ "end\n"+ "Test.new.hello(\"soyText\")" /* #body ͷ಺༰͸࣍ͷ௨Γɿ class Test def hello(s) "Hello, #{s} world" end end Test.new.hello("soyText") */ });15 ΫϥεͷΠϯελϯε Fig. 15 an instance of class

Ͱ͋Δɽ υϦτϧ͸ɼJavaͰ࣮૷͞Ε͓ͯΓɼsoyTextͷε ΫϦϓτΤϯδϯͱͯ͠औΓࠐΉ͜ͱ͕ՄೳͰ͋Δɽ <html><body> <% ৽͍͠೔هʹ೔هςʔϒϧʂ࡞Δɽ ৽͍͠೔هɿ݄ʹ"10"ɽ ৽͍͠೔هɿ೔ʹ"12"ɽ ৽͍͠೔هɿ಺༰ʹ"େֶͰतۀΛड͚·ͨ͠"ɽ ৽͍͠೔هʂอଘɽ %> </body></html> ਤ17 D-rails ͷϨίʔυͷ࡞੒ Fig. 17 Creating a database record in D-rails

໊લɿ೔هݕࡧ.html Ҿ਺ɿʢͳ͠ʣ

<h1>೔هΛදࣔ͢Δ</h1>

<% ೔هςʔϒϧʂ ݕࡧ (೔هςϯϓϨʔτ) ࣮ߦɽ%>

18 D-rails ͷϨίʔυදࣔ Fig. 18 Searching record in D-rails

໊લɿ೔هςϯϓϨʔτ.html Ҿ਺ɿ೔ه

<h2><% ೔هɿ݄ %> ݄ <%೔هɿ೔ %> ೔ͷ೔ه</h2> <% ೔هɿ಺༰ %><br>

19 Ϩίʔυͷදࣔʹ༻͍ΔςϯϓϨʔτ Fig. 19 A template used for displaying records

7. ࠓޙͷల։

7.1 JavaScriptҎ֎ͷݴޠΛ༻͍ͨจॻͷදݱ ݱঢ়ɼจॻͷهड़͸contentsଐੑʹJavaScriptͷ ϓϩάϥϜΛॻ͘͜ͱͰ࣮ݱ͍ͯ͠ΔɽͦΕҎ֎ͷݴޠ Ͱॻ͔ΕͨϓϩάϥϜ͸ɼ ਤ15ͷΑ͏ʹJavaScript ͷΦϒδΣΫτͷதʹจࣈྻσʔλͱͯ֨͠ೲ͢Δඞ ཁ͕͋Δɽࠓޙ͸ɼRubyͳͲͷଞͷݴޠͰॻ͔Εͨ ΦϒδΣΫτΛ௚઀จॻʹ֨ೲͰ͖ΔΑ͏ʹվྑͯ͠ ͍͘ɽ ͨͩ͠ɼJavaScript͸ؔ਺ͷ಺༰Λจࣈྻʹม׵͢ Δ͜ͱ͕༰қͰ͋ΔͨΊɼؔ਺ΛؚΜͩΦϒδΣΫτ Λɼ5.5߲ͷΑ͏ʹଞͷϓϩάϥϜ͔Βॻ͖׵͑ͯ΋ ؔ਺ͷ಺༰͕อ࣋͞ΕΔɽҰํɼଞͷݴޠʹ͓͍ͯ͸ɼ

(8)

ؔ਺Λจࣈྻʹม׵͢ΔػೳΛ΋ͨͳ͍΋ͷ͕ଟ͍ͨ ΊɼͦͷΑ͏ͳػೳΛεΫϦϓτΤϯδϯʹ௥Ճ͢Δ ඞཁ΋ग़ͯ͘Δɽ 7.2 Javaͷґଘ౓ΛԼ͛Δ ݱঢ়ͷsoyTextͷ࣮૷Ͱ͸ɼεΫϦϓτΤϯδϯ ΍Webαʔόͷଞʹ΋ɼਤ5ͷΑ͏ͳWebΠϯλ ϑΣʔε΍ɼݕࡧͷ࢓૊ΈͳͲΛJavaͰ࣮૷͍ͯ͠ Δɽ͜ΕΒΛJavaScriptͳͲͷεΫϦϓτݴޠʹஔ ͖׵͍͑ͯ͘͜ͱͰɼ࠷ऴతʹ͸γεςϜશମΛεΫ Ϧϓτݴޠ͚ͩͰ࣮૷͢Δ͜ͱΛ໨ࢦ͍ͯ͠Δɽ͜Ε ʹΑΓsoyTextΛJavaҎ֎ͷݴޠͰ࣮૷͞ΕͨεΫ ϦϓτΤϯδϯΛ࢖࣮ͬͯ૷͢Δ͜ͱ΋ՄೳʹͳΓɼ Javaͷͳ͍؀ڥͰ΋ಈ͔ͤΔΑ͏ʹͳΔɽ

8. · ͱ Ί

ຊൃදͰ͸ɼWebϑϨʔϜϫʔΫ”soyText”Λఏ Ҋͨ͠ɽsoyTextͰ͸ɼσʔλͱϓϩάϥϜΛҰମԽ ͠ɼJavaͰಈ࡞͢ΔεΫϦϓτݴޠʹΑͬͯॻ͔Ε ͨϓϩάϥϜΛಈ࡞ͤ͞Δ͜ͱͰɼଟ͘ͷ؀ڥͰ؆୯ ʹಈ࡞ͤ͞Δ͜ͱ͕Ͱ͖Δɽ·ͨɼଞͷsoyText؀ڥ ͱಉظ͢Δ͜ͱʹΑͬͯɼ৔ॴΛબ͹ͣ؀ڥΛߏங͢ Δ͜ͱ͕Ͱ͖Δɽ

ߟ

ݙ

1) ݉फਐ,௕৻໵:จՊܥେֶʹ͓͚Δαʔόʔα ΠυϓϩάϥϛϯάतۀͷࢼΈ,৘ใॲཧֶձݚ ڀใࠂɼ2006-CE-83, pp. 141–148 (2006). 2) ௕৻໵:จՊܥେֶʹ͓͚ΔWebαʔϏεߏங ࣮श, ৘ใॲཧֶձݚڀใࠂɼ2008-CE-97, pp. 61–68 (2008).

3) foundation, M.: Rhino - Javascript for Java http://www.mozilla.org/rhino/.

4) jruby.org: JRuby http://jruby.org/.

5) jython.org: Jython: Python for the Java Plat-form

http://www.jython.org/. 6) resin: Quercus

http://quercus.caucho.com/.

7) Software, T.: SQLJet :: Pure Java SQLite http://sqljet.com/. 8) Elonen, J.: NanoHTTPD http://elonen.iki.fi/code/nanohttpd/. 9) ݉फਐ,ٱ໺༃:ϓϩάϥϛϯάݴޠʮυϦτϧʯ, http://dolittle.eplang.jp/. 10) ௕৻໵: D-rails - WebΞϓϦέʔγϣϯֶश༻ ϑϨʔϜϫʔΫ,৘ใॲཧֶձݚڀใࠂɼ 2011-CE-108, pp. 1–12 (2011).

Fig. 4 Data deployment of soyText in classrooms.
Fig. 12 changed content after modification
Fig. 17 Creating a database record in D-rails

参照

関連したドキュメント

Webカメラ とスピーカー 、若しくはイヤホン

特に LUNA 、教学 Web

[r]

㻞㻜㻝㻣ᖺᗘ Ꮫᰯྡ Ặྡ ᑐ㇟䛾䜽䝷䝇ᩘ⏕ᚐᩘ ᐇ᪋᪥ ᐇ㦂ෆᐜ ௒ᅇ䛾ྲྀ⤌䛻 䜘䛳䛶䜒䛯䜙䛥 䜜䛯ຠᯝ ၥ㢟Ⅼ䜔ᨵၿ 䛧䛯᪉䛜Ⰻ䛔Ⅼ ౛ ༸䛾␒ྕ䠄㻌䚷䠍䚷䠅

Digital media has had a profound impact on human behavior.. Nevertheless, articles about digital media have focused on the power of the technology rather than the impact it has had on

教職員用 平均点 保護者用 平均点 生徒用 平均点.

ⱥㄒ䝸䞊䝕䜱䞁䜾䊡㻮䚷㻞㻠 䊣䠉㻞㻜㻠 ඛ➃་⛉Ꮫᐇ㦂䊡 ⏕࿨་⛉ᏛᏛ⏕ᐇ㦂ᐊ ᇶ♏໬Ꮫᐇ㦂䊡䚷㻞 ⎔ቃᛂ⏝໬ᏛᏛ⏕ᐇ㦂ᐊ ⅆ᭙ 䝀䝜䝮䞉䜶䝢䝀䝜䝮་Ꮫ 䊦䠉㻝㻜㻝 ᇶ♏໬Ꮫ㻮䚷㻞 䊥䠉㻝㻜㻝

こども City ミニ京都@らくさいは 2011 年に実施した「こども City ミニ京都