(57)【要約】      （修正有）【課題】テキストを入力することで編集データ（テキスト）を編集することができ、所定の画像を変更するユーザー操作が行われた場合も編集データ（テキスト）を編集することができる、両方向からのテキスト編集が可能な編集プログラムを提供する。【解決手段】編集データが変更された場合、変更後の編集データのテキストをエディタ画面に表示するとともに、変更後の編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、アプリケーションプログラムによって生成されるアプリ画像をエディタ画像と共にプレビュー画面に表示させ、アプリ画像を変更するユーザーの操作が行われた場合、アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び編集データのテキスト内の第１のアプリデータの挿入位置情報を受信し、第１のアプリデータを編集データのテキスト内の挿入位置情報の挿入位置に挿入する。【選択図】図２
2019079165.tif 000002
【特許請求の範囲】
【請求項１】
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第１のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
処理をコンピュータに実行させる編集プログラム。
【請求項２】
前記処理は、
前記編集データのテキスト内の特定の文字列に基づいて、前記編集データのテキスト内の前記第１のアプリデータが挿入される位置を表す挿入位置を生成する処理と、
前記編集データが変更された場合、前記挿入位置を更新する処理と、を有し、
前記挿入位置情報の挿入位置は、前記挿入位置を生成する処理によって生成された挿入位置、又は、前記挿入位置を更新する処理によって更新された挿入位置である、請求項１に記載の編集プログラム。
【請求項３】
前記プレビュー画面に表示させる処理は、前記アプリケーションプログラムを起動し、インスタンスを生成する処理を有し、
前記挿入位置情報は、前記インスタンスを識別する識別情報であり、
前記処理は、
前記編集データのテキスト内の前記第１のアプリデータが挿入される位置を表す挿入位置を生成し、前記インスタンスを識別する識別情報と関連づけて記憶する処理を有し、
前記挿入位置に挿入する処理は、前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報である前記識別情報が関連づけられた挿入位置に挿入する、請求項１に記載の編集プログラム。
【請求項４】
前記編集データ内に挿入されたアプリデータは、ユーザーが入力装置を介して入力したアプリデータ又はサーバから受信されたアプリデータである、請求項１から３のいずれか１項に記載の編集プログラム。
【請求項５】
前記テキストは、マークアップ言語で記述されたテキストである、請求項１から４のいずれか１項に記載の編集プログラム。
【請求項６】
プロセッサと、
前記プロセッサからアクセス可能なメモリとを有し、
前記プロセッサは、
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第２のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
編集装置。
【請求項７】
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第２のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
処理を有する編集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、編集プログラム、編集装置、及び、編集方法に関する。
【背景技術】
【０００２】
従来、Markdown形式等のマークアップ言語で記述されたテキストを入力すると、入力されたテキストを解釈して所定の画像をプレビュー画面に表示する編集システムが知られている。以下の特許文献は、プレビュー画面について関連する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１４００７６号公報
【特許文献２】特表２０１４−５３０４３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記編集システムにおいては、ユーザーが入力装置を介してテキスト（文字列）を入力することでテキストを編集した場合、所定の画像を変更することはできるものの、プレビュー画面上で所定の画像を変更するユーザー操作が行われた場合、その変更をテキストに反映することができない、つまり、片方向からしかテキストを編集することができないという課題がある。
【０００５】
そこで、本開示の第１の側面の目的は、テキストを入力することで編集データ（テキスト）を編集することができ、かつ、所定の画像を変更するユーザー操作が行われた場合も編集データ（テキスト）を編集することができる、つまり、両方向からテキストを編集することができる編集プログラム、編集装置、及び、編集方法を提供することにある。
【課題を解決するための手段】
【０００６】
一つの実施の形態は、テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第２のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、処理をコンピュータに実行させる編集プログラムである。
【発明の効果】
【０００７】
一つの実施の形態によれば、テキストを入力することで編集データ（テキスト）を編集することができ、かつ、所定の画像を変更するユーザー操作が行われた場合も編集データ（テキスト）を編集することができる、つまり、両方向からテキストを編集することができる編集プログラム、編集装置、及び、編集方法を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】テキストを有する編集データを編集する編集システムの概略構成を示す図である。
【図２】編集プログラム２３２とアプリケーションプログラム２３３の処理の概要を示す図である。
【図３】端末１１の構成例を示す図である。
【図４】編集プログラム２３２を構成するプログラム群を示す図である。
【図５】Editorプログラム２３２ａの概略処理を説明するフローチャート図である。
【図６】Brokerプログラム２３２ｅの概略処理を説明するフローチャート図である。
【図７】Ｓ６２で生成されたインスタンスの概略処理を説明するフローチャート図である。
【図８】編集プログラム２３２とアプリケーションプログラム２３３の詳細処理を示すシーケンス図である。
【図９】編集プログラム２３２とアプリケーションプログラム２３３の詳細処理を示すシーケンス図である。
【図１０】編集プログラム２３２とアプリケーションプログラム２３３の詳細処理を示すシーケンス図である。
【図１１】エディタ画面１５１及びプレビュー画面１５２の一例である。
【図１２】ＡＳＴの一例である。
【図１３】位置情報テーブル２４３の一例である。
【図１４】エディタ画面１５１及びプレビュー画面１５２の他の一例である。
【図１５】ＡＳＴの他の一例である。
【図１６】位置情報テーブル２４３の他の一例である。
【図１７】アプリケーション対応表２４４の一例である。
【図１８】エディタ画面１５１及びプレビュー画面１５２の他の一例である。
【図１９】ＡＳＴの他の一例である。
【図２０】位置情報テーブル２４３の他の一例である。
【図２１】エディタ画面１５１及びプレビュー画面１５２の他の一例である。
【図２２】ＡＳＴの他の一例である。
【図２３】位置情報テーブル２４３の他の一例である。
【図２４】サーバ１３の構成例を示す図である。
【図２５】第２の実施の形態の編集プログラム２３２を構成するプログラム群を示す図である。
【図２６】、第２の実施の形態のEditorプログラム２３２ａの概略処理を説明するフローチャート図である。
【図２７】端末１１でのテキストに対する編集内容を、端末１２のテキストに反映（同期）させる処理を説明するシーケンス図である。
【図２８】サーバプログラム３３１の処理を説明するフローチャート図である。
【発明を実施するための形態】
【０００９】
［第1の実施の形態の概略］
図１は、テキストを有する編集データを編集する編集システムの概略構成を示す図である。図１に示すように、編集システムは、ユーザーが編集データのテキストを編集する複数の端末１１、１２と、ある端末で入力されたテキスト（又は編集前後の差分）を他の端末に転送するサーバ１３と、を有する。端末１１、１２が編集装置の一例である。端末１１、１２とサーバ１３は、インターネット等のネットワークＮＷを介して相互に通信可能である。
【００１０】
サーバ１３の構成、動作等は、第２の実施の形態で説明する。第１の実施の形態では、端末１１、１２の構成、動作等を説明する。端末１１、１２は、同様の構成であるため、以下、代表して端末１１の構成、動作等を中心に説明する。
【００１１】
端末１１は、コンピュータであり、メインメモリとプロセッサを有する。そして、端末１１のプロセッサが、ブラウザ２３１を実行すると共に、ブラウザ２３１上で編集プログラム（エディタ）２３２やアプリケーションプログラム２３３を実行して、編集されたテキストを表示装置１５内のエディタ画面１５１内に、編集されたテキストに基づくエディタ画像及びアプリケーションプログラム２３３によって生成されるアプリ画像を表示装置１５内のプレビュー画面１５２内にそれぞれ表示する。
【００１２】
図２は、編集プログラム２３２とアプリケーションプログラム２３３の処理の概要を示す図である。
【００１３】
端末１１のプロセッサは、ブラウザ２３１を実行すると共に、ブラウザ２３１上で編集プログラム２３２やアプリケーションプログラム２３３を実行して、次の第１〜第４の処理を行う。
【００１４】
（１）第１の処理では、ユーザーが入力装置１４（例えば、キーボード）を介して編集データのテキスト（以下、単にテキストと呼ぶ）を編集して、テキストが変更された場合（Ｓ３０）、端末１１のプロセッサは、編集プログラム２３２を実行して、エディタ画面１５１内のテキスト２４１を変更する（Ｓ３１）と共に、プレビュー画面１５２内のエディタ画像ＥＧを変更する（Ｓ３２）。
【００１５】
テキストはMarkdown形式（記法）で記述される。テキストは、それ以外のマークアップ言語で記述されてもよい。エディタ画像ＥＧとは、端末１１のプロセッサが編集プログラム２３２を実行して、Markdown形式（記法）又はそれ以外のマークアップ言語で記述されたテキスト（fenced code blockで囲まれたテキスト以外のテキスト）を解釈して、プレビュー画面１５２に表示される画像のことである。
【００１６】
エディタ画面１５１内のテキスト２４１を変更する処理（Ｓ３１）とは、例えば、変更前のテキスト２４１に代えて、変更後のテキスト２４１をエディタ画面１５１に表示する処理である。エディタ画像ＥＧを変更する処理（Ｓ３２）とは、例えば、変更前のテキストに基づいて生成されるエディタ画像ＥＧに代えて、変更後のテキストに基づいて生成されるエディタ画像ＥＧをプレビュー画面１５２に表示する処理である。
【００１７】
（２）第２の処理では、ユーザーが入力装置１４を介してテキスト内にアプリ起動コマンドを入力した場合（Ｓ３３）、端末１１のプロセッサは、編集プログラム２３２を実行して、アプリ起動コマンドに対応するアプリケーションプログラム２３３を起動する（Ｓ３４）。これにより、端末１１のプロセッサは、アプリケーションプログラム２３３（アプリケーションプログラム２３３によって生成されるインスタンス。以下、インスタンスのことをアプリケーションプログラム２３３と呼ぶことがある）によって生成されるアプリ画像ＡＧをエディタ画像ＥＧと共にプレビュー画面１５２に表示させる（Ｓ３５）。
【００１８】
（３）第３の処理では、アプリケーションプログラム２３３に対してアプリ画像ＡＧを変更するユーザー操作がプレビュー画面１５２上で行われた場合（Ｓ３６）、端末１１のプロセッサは、アプリケーションプログラム２３３を実行して、アプリデータ２４７を変更する（Ｓ３７）と共に、変更後のアプリデータ２４７に基づいて、アプリ画像ＡＧを変更する（Ｓ３８）。
【００１９】
アプリデータ２４７を変更する処理（Ｓ３７）とは、例えば、アプリ画像ＡＧを変更するユーザー操作が行われた場合（Ｓ３６）、端末１１のプロセッサがアプリケーションプログラム２３３を実行して生成するアプリデータでストレージに記憶されているアプリデータ２４７を変更（上書き）する処理である。アプリ画像ＡＧを変更する処理（Ｓ３８）とは、例えば、変更前のアプリ画像ＡＧに代えて、変更後のアプリデータ２４７に基づいて生成される文字列又は画像等が付加されたアプリ画像ＡＧをプレビュー画面１５２に表示する処理である。
【００２０】
アプリデータとは、アプリ画像ＡＧを変更するユーザー操作が行われた場合にアプリケーションプログラム２３３によって生成されるテキストのことである。なお、アプリデータは、ユーザーにより入力装置１４を介してテキスト２４１内に入力される場合もあるし、サーバ１３から受信される場合もある。サーバ１３から受信される場合については、第２の実施の形態で説明する。
【００２１】
アプリケーションプログラム２３３は、例えば、ストレージに記憶された変更後のアプリデータ２４７を解釈して、アプリ画像ＡＧを変更して表示する。
【００２２】
また、第３の処理では、端末１１のプロセッサは、アプリケーションプログラム２３３を実行して、Ｓ３７で変更されたアプリデータ２４７が挿入される位置を表す挿入位置情報が代入された変数idとＳ３７で変更されたアプリデータ２４７が代入された変数newTextとを、編集プログラム２３２に転送（送信）する（Ｓ３９）。変数idと変数newTextは、例えば、端末１１のプロセッサがアプリケーションプログラム２３３を実行して、これらを引数とするコールバック関数であるonEdit関数を実行することで転送される。
【００２３】
また、第３の処理では、端末１１のプロセッサ２０は、編集プログラム２３２を実行して、変数idと変数newTextを受信する（Ｓ４０）。そして、端末１１のプロセッサは、編集プログラム２３２を実行して、受信に応答して、テキスト２４１の内、変数idに代入された挿入位置情報が表す位置に、変数newTextに代入されたアプリデータ２４７（第１のアプリデータ）を挿入する（Ｓ４１）と共に、エディタ画面１５１内のテキスト２４１を変更する（Ｓ４２）。エディタ画面１５１内のテキスト２４１を変更する処理（Ｓ４２）とは、例えば、変更前のテキスト２４１に代えて、変更後のテキスト２４１（ここでは、変数newTextに代入されたアプリデータ２４７が挿入されたテキスト２４１）をエディタ画面１５１に表示する処理である。
【００２４】
（４）第４の処理では、テキスト２４１に挿入されたアプリデータ２４７が変更された場合（Ｓ４３）、端末１１のプロセッサは、編集プログラム２３２を実行して、エディタ画面１５１内のテキスト２４１を変更する（Ｓ４４）。
【００２５】
テキスト２４１に挿入されたアプリデータ２４７が変更された場合とは、例えば、ユーザーが入力装置１４を介して入力したアプリデータがテキスト２４１内に挿入された場合やサーバ１３から受信されたアプリデータがテキスト２４１内に挿入された場合のことである。
【００２６】
エディタ画面１５１内のテキスト２４１を変更する処理（Ｓ４４）とは、例えば、変更前のテキスト２４１に代えて、変更後のテキスト２４１（ここでは、Ｓ４３で変更されたアプリデータ２４７が挿入されたテキスト２４１）をエディタ画面１５１に表示する処理である。
【００２７】
これと共に、端末１１のプロセッサ２０は、編集プログラム２３２を実行して、renderAメッセージと共にＳ４３で変更されたアプリデータ２４７が代入された変数data、コールバック関数であるonEdit関数、アプリデータ２４７が挿入される位置を表す挿入位置情報が代入された変数idをアプリケーションプログラム２３３に転送する（Ｓ４５）。
【００２８】
また、第４の処理では、端末１１のプロセッサは、アプリケーションプログラム２３３を実行して、renderAメッセージと共に変数data、onEdit関数、変数idを受信した場合（Ｓ４６）、変数dataに代入されたアプリデータ（第２のアプリデータ）でストレージに記憶されているアプリデータ２４７（第１のアプリデータ）を変更する（上書きする）処理を行う（Ｓ４７）と共に、変更されたアプリデータ２４７に基づいて、プレビュー画面１５２に表示されたアプリ画像ＡＧを変更する（Ｓ４８）。アプリ画像ＡＧを変更する処理（Ｓ４８）とは、例えば、変更前のアプリ画像ＡＧに代えて、変更されたアプリデータ２４７に基づいて生成される文字列又は画像等が付加されたアプリ画像ＡＧをプレビュー画面１５２に表示する処理である。
【００２９】
［第1の実施の形態の詳細］
まず、ユーザーが、編集プログラム２３２で編集テキスト２４１を編集（変更）すると、プレビュー画面１５２内のエディタ画像ＥＧに反映される。
【００３０】
一方、ユーザーが、プレビュー画面１５２上でアプリ画像ＡＧに対してアプリ入力を行うと、アプリ画像ＡＧに反映され、変更後のアプリデータが、編集テキスト２４１内に挿入される。したがって、編集テキスト２４１をサーバ１３を介して複数の端末１１、１２が共有することで、編集プログラム２３２とアプリケーションプログラム２３３の合成画像をウェブ上で共有し、編集しあうことができる。
【００３１】
図３は、端末１１の構成例を示す図である。端末１１は、ＣＰＵ２０（以下、プロセッサ２０とも呼ぶ）と、メインメモリ２１と、ＮＩＣ２２（ネットワークインターフェースカード）と、補助記憶装置であるストレージ２３、２４と、バス２５と、入力装置１４、１６（例えば、キーボード、マウス）と、表示装置１５、１７（例えば、液晶ディスプレイ）と、を有する。ストレージ２３内には、ＯＳ（図示せず）と、ブラウザ２３１と、編集プログラム２３２と、アプリケーションプログラム２３３と、ＯＴ(Operational Transformation)ライブラリ２３４とが記憶され、これらのプログラムはメインメモリ２１に展開されＣＰＵ２０により実行される。ＯＴライブラリ２３４を用いる例は、第２の実施の形態で説明する。
【００３２】
また、ストレージ２４内には、テキストを有する編集データ２４１と、ＡＳＴ（Abstract Syntax Tree）２４２と、位置情報テーブル２４３と、アプリケーション対応表２４４と、onEdit関数２４５と、id２４６と、アプリデータ２４７とが記憶される。ＡＳＴは、抽象構文木とも呼ばれる。ストレージ２４は、メインメモリ２１であってもよい。編集プログラム２３２、アプリケーションプログラム２３３、ＯＴライブラリ２３４は、例えば、JavaScript（登録商標）で記述されており、端末１１がブラウザ２３１を実行して、サーバ１３等からダウンロードされてストレージ２３に記憶される。
【００３３】
図４は、編集プログラム２３２を構成するプログラム群を示す図である。図４に示すように、編集プログラム２３２は、Editorプログラム２３２ａ、Parserプログラム２３２ｂ、Previewerプログラム２３２ｃ、Rendererプログラム２３２ｄ、Brokerプログラム２３２ｅを有する。これらプログラムは、例えば、JavaScriptで記述されている。これらプログラムは、コンポーネントと呼ばれることがある。
【００３４】
［Editorプログラム２３２ａの概略処理］
端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、表示装置１５にエディタ画面１５１を表示する。ユーザーが入力装置１４を介してテキストを編集した場合、プロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１を変更する。
【００３５】
図５は、Editorプログラム２３２ａの概略処理を説明するフローチャート図である。端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、ユーザーが入力装置１４を介してテキストを編集したか否か（Ｓ５０）、アプリケーションプログラム２３３からテキストが編集されたか否かを判定する（Ｓ５１）。その結果、編集されていないと判定された場合（Ｓ５０：ＮＯ、Ｓ５１：ＮＯ）、上記Ｓ５０、Ｓ５１の処理が繰り返し実行される。
【００３６】
一方、Ｓ５０でユーザーが入力装置１４を介してテキストを編集したと判定された場合（Ｓ５０：ＹＥＳ）、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１に表示されるテキスト２４１、及び、プレビュー画面１５２に表示されるエディタ画像ＥＧを変更し（Ｓ５２）、変更後のテキストをParserプログラム２３２ｂに送信する（Ｓ５１）。
【００３７】
Ｓ５１でアプリケーションプログラム２３３からテキストが編集されたと判定された場合（Ｓ５１：ＹＥＳ）、端末のプロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１に表示されるテキスト２４１、及び、プレビュー画面１５２に表示されるエディタ画像ＥＧを変更し（Ｓ５４）、変更後のテキストをParserプログラム２３２ｂに送信する（Ｓ５５）。
【００３８】
［Parserプログラム２３２ｂの概略処理］
端末１１のプロセッサ２０は、Parserプログラム２３２ｂを実行して、Editorプログラム２３２ａによって送信されたテキスト（Markdownで記述された文字列）を受信した場合、周知のテキスト解析を実行して、ＡＳＴを生成する。
【００３９】
また、端末のプロセッサ２０は、Parserプログラム２３２ｂを実行して、アプリケーションプログラム２３３によって送信されるアプリデータが挿入される位置（テキストに対する挿入位置）を表す挿入位置（挿入位置情報）を生成し、位置情報テーブル２４３に記憶する。
【００４０】
また、端末のプロセッサ２０は、Parserプログラム２３２ｂを実行して、ＡＳＴをPreviewerプログラム２３２ｃに送信する。
【００４１】
［Previewerプログラム２３２ｃの概略処理］
端末１１のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、表示装置１５にプレビュー画面１５２を表示する。
【００４２】
また、端末のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、Parserプログラム２３２ｂによって送信されたＡＳＴを受信した場合、アプリ画像を表示させるためのrenderCメッセージ、エディタ画像を表示させるためのrenderPメッセージを送信する。
【００４３】
［Rendererプログラム２３２ｄの概略処理］
端末１１のプロセッサ２０は、Rendererプログラム２３２ｄを実行して、Previewerプログラム２３２ｃによって送信されたrenderPメッセージを受信した場合、エディタ画像を生成して、プレビュー画面１５２に表示する。
【００４４】
［Brokerプログラム２３２ｅの概略処理］
端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、Previewerプログラム２３２ｃによって送信されたrenderCメッセージを受信した場合、アプリケーションプログラム２３３を起動させて、アプリケーションプログラム２３３のインスタンスを生成し、生成したインスタンスに対してアプリ画像を表示させるためのrenderAメッセージを送信する。
【００４５】
図６は、Brokerプログラム２３２ｅの概略処理を説明するフローチャート図である。端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、Previewerプログラム２３２ｃによって送信されたrenderCメッセージを受信したか否かを判定する（Ｓ６０）。その結果、renderCメッセージを受信したと判定された場合（Ｓ６０：ＹＥＳ）、端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、renderCメッセージと共に受信した属性info string（後述する）がアプリケーション対応表２４４に含まれるか否かを判定する（Ｓ６１）。その結果、含まれると判定された場合（Ｓ６１：ＹＥＳ）、端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、アプリケーション対応表２４４を参照して、属性info stringが対応づけられたコンストラクタ関数を調べ、そのコンストラクタ関数を実行して、当該アプリケーションプログラム２３３のインスタンスを生成する（Ｓ６２）。生成されたインスタンスは、ストレージ２４又はメインメモリ２１に記憶される。
【００４６】
次に、端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、renderAメッセージを、Ｓ６２で生成したインスタンスに送信する（Ｓ６３）。
【００４７】
一方、Ｓ６１でrenderCメッセージと共に受信した属性info stringがアプリケーション対応表２４４に含まれないと判定された場合（Ｓ６１:ＮＯ）、端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、他の処理（例えば、JavaScriptの文法に応じてテキストの色を変える処理）を実行する（Ｓ６４）。
【００４８】
図７は、Ｓ６２で生成されたインスタンスの概略処理を説明するフローチャート図である。端末１１のプロセッサ２０は、Ｓ６２で生成されたインスタンスを実行して、Brokerプログラム２３２ｅによって送信されたrenderAメッセージを受信したか否か（Ｓ７０）、アプリ画像を変更するユーザー操作の有無を判定する（Ｓ７１）。その結果、renderAメッセージを受信していない（Ｓ７０：ＮＯ）、ユーザー操作無し（Ｓ７１：ＮＯ）と判定された場合、上記Ｓ７０、Ｓ７１の処理が繰り返し実行される。
【００４９】
一方、Ｓ７０でrenderAメッセージを受信したと判定された場合（Ｓ７０：ＹＥＳ）、端末１１のプロセッサ２０は、Ｓ６２で生成されたインスタンスを実行して、アプリ画像をプレビュー画面に表示する（Ｓ７２）。
【００５０】
Ｓ７１でアプリ画像を変更するユーザー操作有りと判定された場合（Ｓ７１：ＹＥＳ）、端末１１のプロセッサ２０は、Ｓ６２で生成されたインスタンスを実行して、アプリ画像をプレビュー画面１５２に表示する（Ｓ７３）。そして、端末のプロセッサ２０は、Ｓ６２で生成されたインスタンスを実行して、Ｓ３７で変更されたアプリデータ２４７が挿入される位置を表す挿入位置情報が代入された変数idとＳ３７で変更されたアプリデータ２４７が代入された変数newTextとを、Parserプログラム２３２ｂに送信する（Ｓ７４）。
【００５１】
［編集プログラム２３２とアプリケーションプログラム２３３の詳細処理］
図８〜図１０は、編集プログラム２３２とアプリケーションプログラム２３３の詳細処理を示すシーケンス図である。
【００５２】
以下、端末１１のプロセッサ２０は、編集プログラム２３２を構成する各プログラム、すなわち、Editorプログラム２３２ａ、Parserプログラム２３２ｂ、Previewerプログラム２３２ｃ、Rendererプログラム２３２ｄ、Brokerプログラム２３２ｅを実行しているものとして説明する。
【００５３】
また、アプリケーションプログラム２３３が、アプリ画像としてKPT(Keep-Problem-Try)の表を作成してプレビュー画面１５２に表示するkptアプリケーションプログラムであるものとして説明する。
【００５４】
図８に示すように、まず、ユーザーが入力装置１４を介してテキストを編集（ストレージ２４に記憶されているテキスト２４１の変更、又は、新たなテキストの入力等）した場合（Ｓ８０）、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１を変更する（Ｓ８１）。具体的には、ユーザーが入力装置１４を介してテキストを編集した場合、端末のプロセッサ２０は、変更（編集）されたテキスト２４１をストレージ２４に記憶すると共に、変更前のテキスト２４１に代えて、変更後のテキスト２４１をエディタ画面１５１に表示する。
【００５５】
図１１は、エディタ画面１５１及びプレビュー画面１５２の一例である。図１１には、エディタ画面１５１に表示された変更後のテキスト２４１の一例が示されている。図１１に示すエディタ画面１５１に記載された１〜７の数字列は、編集されたテキスト２４１の行を表す。
【００５６】
テキスト２４１は、Markdown形式（記法）で記述される。テキスト２４１は、それ以外のマークアップ言語で記述されてもよい。
【００５７】
図１１に示すテキスト２４１の内、３つのバッククオート文字「```」（特定の文字列）は、Markdown形式においてfenced code blockと呼ばれる。特定の文字列は、「```」に限らず、他の文字列であってもよい。先頭の「```」（例えば、１行目）と最後の「```」（例えば、２行目）で囲まれたテキストがソースコードとみなされる。図１１に示すテキスト２４１の例では、先頭の「```」（例えば、１行目）と最後の「```」（例えば、２行目）で囲まれたテキストは、２行目の先頭の空文字列である。
【００５８】
テキスト２４１の内、先頭の「```」（例えば、１行目、６行目）の直後には、Markdownの仕様書で規定されるinfo stringとして、アプリケーションプログラム名である「kpt」が記述される。
【００５９】
後述のように、テキスト２４１の内、１、２行目に基づいて、「kpt」に対応するkptアプリケーションプログラムが起動されて、アプリ画像ＡＧ１がプレビュー画面１５２に表示され、４行目に基づいて、エディタ画像ＥＧがプレビュー画面１５２に表示され、６、７行目に基づいて、「kpt」に対応するkptアプリケーションプログラムが起動されて、アプリ画像ＡＧ２がプレビュー画面１５２に表示される。
【００６０】
次に、端末１１のプロセッサ２０は、所定のタイミングで（例えば、テキストが１文字入力されるごとに）テキスト２４１をストレージ２４から読み出して、Parserプログラム２３２に送信する（Ｓ８２）。
【００６１】
次に、端末１１のプロセッサ２０は、Parserプログラム２３２を実行して、テキスト２４１を受信した場合、テキスト２４１をストレージ２４に一時的に記憶すると共に、周知のテキスト解析を実行して、ＡＳＴを生成する（Ｓ８３）。
【００６２】
図１２は、ＡＳＴの一例である。図１２には、図１１に示すテキスト２４１に対してテキスト解析を実行した場合に生成されるＡＳＴが示されている。
【００６３】
図１２に示す各四角形（計９個）はノードと呼ばれる。rootノードN0は、２つの<pre>ノードN1、N6、１つの<p>ノードN4を有する。
【００６４】
<pre>ノードN1、N6は変数info string、変数idを属性として有する。<pre>ノードN1、N6が有する変数info stringには、テキスト２４１の内の先頭の「```」の直後にinfo stringとして記述された文字列「kpt」が代入される。<pre>ノードN1が有する変数idには、複数のインスタンスを識別するための識別情報として１が代入される。一方、<pre>ノードN6が有する変数idには、複数のインスタンスを識別するための識別情報として２が代入される。
【００６５】
<pre>ノードN1,N6は、その配下に、<pre>ノードN1,N6に関連づけられた<code>ノードN2,N7、<code>ノードN2,N7に関連づけられたテキストノードN3,N8を有する。テキストノードN3,N8は、「'」と「'」との間に挿入された文字列を有する。テキストノードN3の「'」と「'」との間に挿入される文字列は、テキスト２４１の内、先頭の「```」（１行目）と最後の「```」（２行目）で囲まれたテキスト（ここでは、空文字列）である。一方、テキストノードN8の「'」と「'」との間に挿入される文字列は、テキスト２４１の内、先頭の「```」（６行目）と最後の「```」（７行目）で囲まれたテキスト（ここでは、空文字列）である。
【００６６】
<p>ノードN4は、<p>ノードN4に関連づけられたテキストノードN5を有する。テキストノードN3,N8は、「'」と「'」との間に挿入された文字列を有する。「'」と「'」との間に挿入される文字列は、テキスト２４１の内、４行目の「paragraph」である。
【００６７】
図８に戻り、端末１１のプロセッサ２０は、Parserプログラム２３２ｂを実行して、後述のようにＳ１０４で第１インスタンス２３３ａによって送信されるアプリデータが挿入される位置（テキスト２４１に対する挿入位置）を表す挿入位置（挿入位置情報）を生成し、位置情報テーブル２４３に記憶する（Ｓ８４）。
【００６８】
アプリデータが挿入される位置は、テキスト２４１の内、最初の「```」（例えば、１行目）の次の行（例えば、２行目）の最初の文字の位置、及び、最後の「```」の一つ前の行（例えば、１行目）の最後の文字の位置である。但し、最初の「```」の次の行が、最後の「```」から始まる場合、最後の「```」の先頭の空文字列の位置である。
【００６９】
図１３は、位置情報テーブル２４３の一例である。図１３には、図１１に示すテキスト２４１に対してテキスト解析を実行した場合に生成される位置情報テーブル２４３が示されている。位置情報テーブル２４３には、複数のインスタンスを識別するための識別情報であるＩＤと挿入位置とが関連づけられて記憶されている。
【００７０】
図１３の例では、ＩＤには、２つのインスタンスを識別するための識別情報として１、２が記憶され、挿入位置には、ＩＤ「１」に関連づけられて第１インスタンスによって送信されるアプリデータが挿入される位置を表す挿入位置（２，０）−（２，０）が記憶され、ＩＤ「２」に関連づけられて第２インスタンスによって送信されるアプリデータが挿入される位置を表す挿入位置（７，０）−（７，０）が記憶されている。
【００７１】
挿入位置（２，０）−（２，０）の内、最初の（２，０）は、図１１に示すテキスト２４１の内、２行目、かつ、左から０番目、つまり、２行目の先頭の空文字列の位置を表す。最後の（２，０）は、図１１に示すテキスト２４１の内、２行目、かつ、左から０番目、つまり、最後の「```」の先頭の空文字列の位置を表す。このようにテキストノードN3が空文字列を有する場合、最初の挿入位置（２，０）と最後の挿入位置（２，０）は一致する。挿入位置（７，０）−（７，０）も同様である。
【００７２】
図８に戻り、端末１１のプロセッサ２０は、Parserプログラム２３２ｂを実行して、renderメッセージと共にＳ８３で生成されたＡＳＴ（rootノードN0及びその配下のノードN1〜N8（属性も含む））をPreviewerプログラム２３２ｃに送信する（Ｓ８５）。
【００７３】
端末のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、renderメッセージと共にＡＳＴを受信した場合、アプリケーション対応表２４４を参照して、renderCメッセージ、renderPメッセージを送信する。
【００７４】
例えば、ＡＳＴが<pre>ノードN1を含み、かつ、<pre>ノードN1の属性info stringであるkptがアプリケーション対応表２４４に含まれる場合、端末１１のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、１つ目のrenderCメッセージと共に<pre>ノードN1（属性も含む）及びその配下のノードN2,N3をBrokerプログラム２３２ｅに送信する（Ｓ８６）。
【００７５】
また、ＡＳＴが<pre>ノードN6を含み、かつ、<pre>ノードN6の属性info stringであるkptがアプリケーション対応表２４４に含まれる場合、端末１１のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、２つ目のrenderCメッセージと共に<pre>ノードN6（属性も含む）及びその配下のノードN7,N8をBrokerプログラム２３２ｅに送信する（Ｓ９３）。
【００７６】
また、ＡＳＴが<p>ノードN4を含み、かつ、<p>ノードN4が属性info stringを含まない（又は、<p>ノードN4の属性info stringがアプリケーション対応表２４４に含まれない）場合、端末１１のプロセッサ２０は、Previewerプログラム２３２ｃを実行して、renderPメッセージと共に<p>ノードN4（属性も含む）及びその配下のノードN5をRendererプログラム２３２ｄに送信する（Ｓ９１）。
【００７７】
端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、１つ目のrenderCメッセージと共に、<pre>ノードN1（属性も含む）及びその配下のノードN2、N3を受信した場合、次の処理を実行する。すなわち、アプリケーション対応表２４４を参照して、<pre>ノードN1の属性info stringであるkptが対応づけられたコンストラクタ関数を調べ、そのコンストラクタ関数（ここでは、kptアプリケーションプログラムのコンストラクタ関数）を実行して、kptアプリケーションプログラムを起動させる。これにより、kptアプリケーションプログラム２３３の第１インスタンス２３３ａを生成する（Ｓ８７）。
【００７８】
図１７は、アプリケーション対応表２４４の一例である。アプリケーション対応表２４４には、info stringとアプリケーションプログラム（コンストラクタ関数）とが関連づけられて記憶されている。
【００７９】
図１７の例では、info stringに'kpt'、'map'が記憶され、'kpt'に関連づけられてkptアプリケーションのコンストラクタ関数が記憶され、'map'に関連づけられて地図アプリケーションのコンストラクタ関数が記憶されている。
【００８０】
図８に戻り、端末のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、renderAメッセージと共に、<pre>ノードN1配下のテキストノードN3が有する文字列（ここでは、空文字列）が代入された変数data、コールバック関数であるonEdit関数、<pre>ノードN1の属性である変数id（ここでは、１が代入されている）を、Ｓ８７で生成された第１インスタンス２３３ａに送信する（Ｓ８８）。
【００８１】
端末１１のプロセッサ２０は、第１インスタンス２３３ａを実行して、renderAメッセージと共に変数data、onEdit関数、変数idを受信した場合、ストレージ２４に記憶する（Ｓ８９）。図３に示すように、変数dataはアプリデータ２４７ａとして、onEdit関数はonEdit関数２４５ａとして、変数idはＩＤ２４６ａとして記憶される。
【００８２】
端末１１のプロセッサ２０は、第１インスタンス２３３ａを実行して、アプリ画像を生成して、プレビュー画面１５２に表示する（Ｓ９０）。図１１には、プレビュー画面１５２に表示されるアプリ画像ＡＧ１（KPT(Keep-Problem-Try)の表）の例が示されている。
【００８３】
端末１１のプロセッサ２０は、Rendererプログラム２３２ｄを実行して、renderPメッセージと共に<p>ノードN4（属性も含む）及びその配下のノードN5を受信した場合、<p>ノードN4（属性も含む）及びその配下のノードN5に基づいてエディタ画像を生成して、プレビュー画面１５２に表示する（Ｓ９２）。図１１には、プレビュー画面１５２に表示されるエディタ画像ＥＧの例が示されている。
【００８４】
図９に進んで、端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、２つ目のrenderCメッセージと共に、<pre>ノードN6（属性も含む）及びその配下のノードN7、N8を受信した場合、次の処理を実行する。すなわち、アプリケーション対応表２４４を参照して、<pre>ノードN6の属性info stringであるkptが対応づけられたコンストラクタ関数を調べ、そのコンストラクタ関数（ここでは、kptアプリケーションプログラムのコンストラクタ関数）を実行して、kptアプリケーションプログラム２３３を起動させる。これにより、kptアプリケーションプログラム２３３の第２インスタンス２３３ｂを生成する（Ｓ９４）。
【００８５】
端末１１のプロセッサ２０は、Brokerプログラム２３２ｅを実行して、renderAメッセージと共に、<pre>ノードN6配下のテキストノードN8が有する文字列（ここでは、空文字列）が代入された変数data、コールバック関数であるonEdit関数、<pre>ノードN6の属性である変数id（ここでは、２が代入されている）を、Ｓ９４で生成された第２インスタンス２３３ｂに送信する（Ｓ９５）。
【００８６】
端末のプロセッサ２０は、第２インスタンス２３３ｂを実行して、renderAメッセージと共に変数data、onEdit関数、変数idを受信した場合、ストレージ２４に記憶する（Ｓ９６）。図３に示すように、変数dataはアプリデータ２４７ｂとして、onEdit関数はonEdit関数２４５ｂとして、変数idはＩＤ２４６ｂとして記憶される。
【００８７】
端末１１のプロセッサ２０は、第２インスタンス２３３ｂを実行して、アプリ画像を生成して、プレビュー画面１５２に表示する（Ｓ９７）。図１１には、プレビュー画面１５２に表示されるアプリ画像ＡＧ２（KPT(Keep-Problem-Try)の表）の例が示されている。
【００８８】
次に、アプリ画像ＡＧ１を変更するユーザー操作が行われた場合の処理について説明する。なお、アプリ画像ＡＧ１を変更するユーザー操作が行われた場合も同様の処理が行われるが、ここでは代表して、アプリ画像ＡＧ１を変更するユーザー操作が行われた場合の処理について説明する。
【００８９】
アプリ画像ＡＧ１を変更するユーザー操作とは、例えば、ユーザーが入力装置１４を介してプレビュー画面１５２に表示されたアプリ画像ＡＧ１であるＫｅｅｐの表中の入力欄ＡＧ１ａに「Keep1」を入力して、AddボタンＡＧ１ｂを押す操作である。
【００９０】
図１０に進んで、アプリ画像ＡＧ１を変更するユーザー操作が行われた場合（Ｓ１００）、端末１１のプロセッサ２０は、第１インスタンス２３３ａを実行して、アプリデータを生成し（Ｓ１０１）、生成されたアプリデータでストレージ２４に記憶されたアプリデータ２４７ａを変更（上書き）し（Ｓ１０２）、変更されたアプリデータ２４７ａに基づいて、アプリ画像をプレビュー画面１５２に表示する（Ｓ１０３）。
【００９１】
具体的には、端末１１のプロセッサ２０は、第１インスタンス２３３ａを実行して、アプリデータを生成し、生成されたアプリデータをストレージ２４に記憶されたアプリデータ２４７ａに記憶（上書き）すると共に、ストレージ２４に記憶されたアプリデータ２４７ａに基づいて、アプリ画像をエディタ画面１５１に表示する。
【００９２】
図１４は、エディタ画面１５１及びプレビュー画面１５２の他の一例である。図１４には、Ｓ１０２で変更されたアプリデータ２４７ａの例、Ｓ１０２で変更されたアプリデータ２４７ａに基づいてプレビュー画面１５２に表示されるアプリ画像ＡＧ１´の例が示されている。アプリ画像ＡＧ１´では、図１１に示すアプリ画像ＡＧ１に対して「Keep1」が追加表示されている。
【００９３】
図１５は、ＡＳＴの他の一例である。図１５には、図１４に示すテキスト２４１に対してテキスト解析を実行した場合に生成されるＡＳＴが示されている。
【００９４】
図１６は、位置情報テーブル２４３の他の一例である。図１６には、図１４に示すテキスト２４１に対してテキスト解析を実行した場合に生成される位置情報テーブル２４３が示されている。
【００９５】
そして、端末１１のプロセッサ２０は、第１インスタンス２３３ａを実行して、Ｓ９６で記憶されたＩＤ２４６ａが代入された変数idとＳ１０２で変更されたアプリデータ２４７ａが代入された変数newTextとを引数とし、Ｓ９６でストレージ２４に記憶されたonEdit関数２４５ａを実行することで、変数id（ＩＤ２４６ａ）と変数newText（Ｓ１０２で変更されたアプリデータ２４７ａ）とをParserプログラム２３２ｂに送信する（Ｓ１０４）。
【００９６】
端末１１のプロセッサ２０は、Parserプログラム２３２ｂを実行して、ＩＤ２４６ａとアプリデータ２４７ａを受信した場合（Ｓ１０５）、位置情報テーブル２４３（図１３）を参照して、受信したＩＤ２４６ａ（ここでは、１が代入されている）が関連づけられた挿入位置を調べ、Ｓ８３で一時的に記憶されたテキストの内、その挿入位置が示す位置に、受信したアプリデータ２４７ａを挿入（上書き）する（Ｓ１０６）。
【００９７】
端末１１のプロセッサ２０は、Parserプログラム２３２ｂを実行して、アプリデータ２４７ａが挿入されたテキストをEditorプログラム２３２ａに送信する（Ｓ１０７）。
【００９８】
端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、アプリデータ２４７ａが挿入されたテキストを受信した場合、受信したテキストに基づいて、エディタ画面１５１を変更する（Ｓ１０８）。具体的には、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、受信されたテキストでストレージ２４に記憶されたテキスト２４１を変更（上書き）すると共に、ストレージ２４に記憶されたテキスト２４１に基づいて、変更されたテキスト２４１をエディタ画面１５１に表示する。図１４には、変更されたテキスト２４１をエディタ画面１５１に表示した例が示されている。
【００９９】
次に、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、テキスト２４１（Ｓ１０６でアプリデータ２４７ａが挿入されたテキスト）をストレージ２４から読み出して、Parserプログラム２３２に送信する（Ｓ１０９）。そして、これに続けて、図示しないが、上記Ｓ８３〜Ｓ９７の処理を実行する。
【０１００】
これにより、図１３に示す位置情報テーブル２４３が図１６に示すように更新される。
【０１０１】
図１６に示す挿入位置（２，１）−（８，２）の内、最初の（２，１）は、図１４に示すテキスト２４１の内、最初の「```」（１行目）の次の行（２行目）の最初の文字の位置を表す。最後の（８，２）は、最後の「```」（９行目）の一つ前の行（８行目）の最後の文字の位置を表す。
【０１０２】
次に、ユーザーが入力装置１４を介して入力する他のテキスト２４１例、そのテキスト２４１が入力された場合の、エディタ画像、アプリ画像の例、ＡＳＴの例、位置情報テーブルの例について、図１８〜図２３を参照して、簡単に説明する。
【０１０３】
図１８は、エディタ画面１５１及びプレビュー画面１５２の他の一例である。図１８には、ユーザーが入力装置１４を介して図１８に示すテキスト２４１を入力することで、プレビュー画面１５２に表示されたエディタ画像ＥＧ１、ＥＧ２、アプリ画像ＡＧが示されている。このエディタ画像ＥＧ１、ＥＧ２、アプリ画像ＡＧは、Ｓ８０〜Ｓ９７の処理が実行されることで表示されたものである。
【０１０４】
図１９は、ＡＳＴの他の一例である。図１９には、図１８に示すテキスト２４１に対してテキスト解析を実行した場合に生成されるＡＳＴが示されている。
【０１０５】
図２０は、位置情報テーブル２４３の他の一例である。図２０には、図１９に示すテキスト２４１に対してテキスト解析を実行した場合に生成される位置情報テーブル２４３が示されている。
【０１０６】
図２１は、エディタ画面１５１及びプレビュー画面１５２の他の一例である。図２１には、ユーザーが入力装置１４を介して図２１に示すテキスト２４１に対して図２１に示す５、６行目を追加入力することで、プレビュー画面１５２に表示されたエディタ画像ＥＧ１、ＥＧ２、ＥＧ３、アプリ画像ＡＧが示されている。このエディタ画像ＥＧ１、ＥＧ２、ＥＧ３、アプリ画像ＡＧは、Ｓ８０〜Ｓ９７の処理が実行されることで表示されたものである。
【０１０７】
図２２は、ＡＳＴの他の一例である。図２２には、図２１に示すテキスト２４１に対してテキスト解析を実行した場合に生成されるＡＳＴが示されている。
【０１０８】
図２３は、位置情報テーブル２４３の他の一例である。図２３には、図２１に示すテキスト２４１に対してテキスト解析を実行した場合に生成される位置情報テーブル２４３が示されている。
【０１０９】
以上説明したように、第１の実施の形態によれば、ユーザーが入力装置１４を介してテキスト（又は、サーバ１３から受信したテキスト）を入力することでテキスト２４１を編集し、プレビュー画面１５２内のエディタ画像ＥＧを変更することができる。また、アプリ画像を変更するユーザー操作が行われた場合、アプリデータが変更され、その変更されたアプリデータがテキスト２４１内の挿入位置（挿入位置情報）が示す適切な位置に挿入される。すなわち、アプリ画像を変更するユーザー操作が行われた場合もテキスト２４１を編集することができる。
【０１１０】
このように、第１の実施の形態によれば、両方向からテキスト２４１を編集（変更）することが可能となる。
【０１１１】
［第２の実施の形態］
第２の実施の形態は、一の端末でのテキストに対する編集内容を、他の端末のテキストに反映させるため、図３に示すように、複数の端末１１、１２間に、ある端末で入力されたテキスト（又は編集前後の差分）を他の端末に転送するサーバ１３を設けている。
【０１１２】
図２４は、サーバ１３の構成例を示す図である。図２４に示すように、サーバ１３は、ＣＰＵ３０（以下、プロセッサ３０とも呼ぶ）と、メインメモリ３１と、ＮＩＣ３２（ネットワークインターフェースカード）と、ストレージ３３、３４と、バス３５とを有する。ストレージ３３内には、ＯＳ（図示せず）と、サーバプログラム３３１と、ＯＴライブラリ３３２とが記憶され、これらのプログラムはメインメモリ３１に展開されＣＰＵ３０により実行される。ストレージ３４内には、編集データ３４１が記憶される。
【０１１３】
図２５は、第２の実施の形態の編集プログラム２３２を構成するプログラム群を示す図である。図２５に示すように、第２の実施の形態の編集プログラム２３２は、第１の実施の形態の編集プログラム２３２に対してClientプログラム２３２fが追加されている。Clientプログラム２３２fは、例えば、JavaScriptで記述されている。
【０１１４】
［Editorプログラム２３２ａの概略処理］
図２６は、第２の実施の形態のEditorプログラム２３２ａの概略処理を説明するフローチャート図である。図２６に示すフローチャート図では、図５に示すフローチャート図に対して、Ｓ１３０〜Ｓ１３１の処理が追加されている。
【０１１５】
端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、ユーザーが入力装置１４を介してテキストを編集したと判定された場合（Ｓ５０：ＹＥＳ）、エディタ画面１５１に表示されるテキスト２４１、及び、プレビュー画面１５２に表示されるエディタ画像ＥＧを変更し（Ｓ５２）、変更後のテキストをParserプログラム２３２ｂに送信する（Ｓ５３）。また、変更後のテキストをClientプログラム２３２ｆにも送信する（Ｓ１３０）。
【０１１６】
端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、アプリケーションプログラム２３３からテキストが編集されたと判定された場合（Ｓ５１：ＹＥＳ）、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１に表示されるテキスト２４１、及び、プレビュー画面１５２に表示されるエディタ画像ＥＧを変更し（Ｓ５４）、変更後のテキストをParserプログラム２３２ｂに送信する（Ｓ５５）。また、変更後のテキストをClientプログラム２３２ｆにも送信する（Ｓ１３１）。
【０１１７】
図２７は、端末１１でのテキストに対する編集内容を、端末１２のテキストに反映（同期）させる処理を説明するシーケンス図である。
【０１１８】
以下、端末１１、１２のプロセッサ２０は、編集プログラム２３２を構成する各プログラム、すなわち、Editorプログラム２３２ａ、Parserプログラム２３２ｂ、Previewerプログラム２３２ｃ、Rendererプログラム２３２ｄ、Brokerプログラム２３２ｅ、Clientプログラム２３２fを実行しているものとして説明する。
【０１１９】
また、アプリケーションプログラム２３３が、アプリ画像としてKPT(Keep-Problem-Try)の表を作成してプレビュー画面１５２に表示するkptアプリケーションプログラムであるものとして説明する。
【０１２０】
まず、ユーザーが端末１１の入力装置１４を介してテキストを編集（ストレージ２４に記憶されているテキスト２４１の変更、又は、新たなテキストの入力等）した場合、第１の実施の形態と同様、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、エディタ画面１５１を変更し、所定のタイミングで（例えば、テキストが１文字入力されるごとに）テキスト２４１をストレージ２４から読み出して、Parserプログラム２３２ｂに送信する（Ｓ１２０）。以後、端末１１において、第１の実施の形態と同様、Ｓ８３〜Ｓ９７の処理が実行される。
【０１２１】
これと共に、端末１１のプロセッサ２０は、Editorプログラム２３２ａを実行して、ストレージ２４から読み出したテキスト２４１を、Clientプログラム２３２ｆに送信する（Ｓ１２１）。
【０１２２】
端末１１のプロセッサ２０は、Clientプログラム２３２ｆを実行して、テキスト２４１を受信した場合、ＯＴライブラリ２３４（JavaScriptで記述された関数群）から所定の関数を呼び出して、前回受信したテキスト２４１と今回受信したテキスト２４１との差分を算出する処理を実行し、その差分を同期データとしてサーバ１３に送信する（Ｓ１２２）。
【０１２３】
図２８は、サーバプログラム３３１の処理を説明するフローチャート図である。図２８に示すように、サーバ１３のプロセッサ３０は、サーバプログラム３３１を実行して、端末１１から送信された同期データを受信したか否かを判定し（Ｓ１４０）、受信したと判定した場合（Ｓ１４０：ＹＥＳ）、ＯＴライブラリ３３２（JavaScriptで記述された関数群）から所定の関数を呼び出して、受信した同期データに基づき、編集データ３４１のテキストを更新する（Ｓ１４１）。これにより、サーバ１３の編集データ３４１と端末１１の編集データ２４１との同一性が保たれる。サーバ１３は、新たにサーバ１３にアクセスしてきた端末に対して編集データ３４１を送信する。
【０１２４】
そして、サーバ１３のプロセッサ３０は、サーバプログラム３３１を実行して、受信した同期データを端末１２（Clientプログラム２３２ｆ）に転送する（Ｓ１４２）。転送先の端末１２のアドレスは、予めサーバ１３に登録されている。
【０１２５】
図２７に戻って、端末１２のプロセッサ２０は、Clientプログラム２３２ｆを実行して、同期データを受信した場合（Ｓ１２３）、同期データに基づいて、テキストを更新する（Ｓ１２４）。
【０１２６】
端末１２のプロセッサ２０は、Clientプログラム２３２ｆを実行して、更新されたテキストをEditorプログラム２３２ａに送信する（Ｓ１２５）。
【０１２７】
端末１２のプロセッサ２０は、Editorプログラム２３２ａを実行して、更新されたテキストを受信した場合、受信したテキストに基づいて、エディタ画面を変更する（Ｓ１２６）。具体的には、端末１２のプロセッサ２０は、Editorプログラム２３２ａを実行して、受信したテキストでストレージ２４に記憶されたテキスト２４１を変更（上書き）すると共に、ストレージ２４に記憶されたテキスト２４１に基づいて、変更されたテキスト２４１をエディタ画面１５１に表示する。これにより、端末１１の編集データ２４１と端末１２の編集データ２４１との同一性が保たれる。
【０１２８】
端末１２のプロセッサ２０は、Editorプログラム２３２ａを実行して、テキスト２４１をストレージ２４から読み出して、Parserプログラム２３２ｂに送信する（Ｓ１２７）。以後、端末１２において、第１の実施の形態と同様、Ｓ８３〜Ｓ９７の処理が実行される。
【０１２９】
以上説明したように、第２の実施の形態によれば、例えば、公知のＯＴを用いて、複数の端末１１、１２間でテキスト２４１を同期させることで、アプリケーションプログラム２３３に同期機能を持たせることなく、一の端末１１でのテキストに対する編集内容を、他の端末１２のテキストに反映させることができる。
【０１３０】
一般に、複数の端末１１、１２間ではテキストしか共有できないが、第２の実施の形態によれば、複数の端末１１、１２間でテキストを共有（同期）するだけで、同一のエディタ画像と共に、同一のアプリ画像を共有する（各々の端末において表示する）ことができる。
【０１３１】
例えば、複数人がそれぞれ複数の端末１１、１２を使用して、複数の端末１１、１２において同一の議事録（テキスト）を表示させて編集している途中で、複数の端末１１、１２においてkptアプリケーションプログラム２３３を起動させてそれぞれの端末１１、１２において同一のアプリ画像（例えば、KPT(Keep-Problem-Try)の表）を表示させて、複数人でＫＰＴ（振り返り）を行うことができる。
【０１３２】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１３３】
（付記１）
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第１のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
処理をコンピュータに実行させる編集プログラム。
【０１３４】
（付記２）
前記処理は、
前記編集データのテキスト内の特定の文字列に基づいて、前記編集データのテキスト内の前記第１のアプリデータが挿入される位置を表す挿入位置を生成する処理と、
前記編集データが変更された場合、前記挿入位置を更新する処理と、を有し、
前記挿入位置情報の挿入位置は、前記挿入位置を生成する処理によって生成された挿入位置、又は、前記挿入位置を更新する処理によって更新された挿入位置である、付記１に記載の編集プログラム。
【０１３５】
（付記３）
前記プレビュー画面に表示させる処理は、前記アプリケーションプログラムを起動し、インスタンスを生成する処理を有し、
前記挿入位置情報は、前記インスタンスを識別する識別情報であり、
前記処理は、
前記編集データのテキスト内の前記第１のアプリデータが挿入される位置を表す挿入位置を生成し、前記インスタンスを識別する識別情報と関連づけて記憶する処理を有し、
前記挿入位置に挿入する処理は、前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報である前記識別情報が関連づけられた挿入位置に挿入する、付記１に記載の編集プログラム。
【０１３６】
（付記４）
前記編集データ内に挿入されたアプリデータは、ユーザーが入力装置を介して入力したアプリデータ又はサーバから受信されたアプリデータである、付記１から３のいずれか１項に記載の編集プログラム。
【０１３７】
（付記５）
前記テキストは、マークアップ言語で記述されたテキストである、付記１から４のいずれか１項に記載の編集プログラム。
【０１３８】
（付記６）
テキストを有する編集データに基づいて生成されるエディタ画像をプレビュー画面に表示する編集プログラムであって、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記プレビュー画面に表示させ、
前記編集データのテキスト内の前記コマンドに対応する位置に基づいて、前記編集データのテキスト内の前記アプリケーションプログラムによって生成されるアプリデータが挿入される位置を表す挿入位置情報を生成し、
前記編集データのテキストが変更され、前記編集データのテキスト内の前記位置が変更された場合、前記挿入位置情報を前記変更された位置を表す挿入位置情報に更新し、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによって生成されたアプリデータを受信し、前記受信されたアプリデータを、前記編集データのテキスト内の前記挿入位置情報が表す位置に挿入する、
処理をコンピュータに実行させる編集プログラム。
【０１３９】
（付記７）
テキストを有する編集データに基づいて生成されるエディタ画像をプレビュー画面に表示する編集プログラムであって、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記プレビュー画面に表示させ、
前記編集データのテキスト内の特定の文字列に基づいて、前記編集データのテキスト内の前記コマンドに対応する位置に基づいて、前記編集データのテキスト内の前記アプリケーションプログラムによって生成されるアプリデータが挿入される位置を表す挿入位置情報を生成し、
前記編集データのテキストが変更され、前記編集データのテキスト内の前記位置が変更された場合、前記挿入位置情報を前記変更された位置を表す挿入位置情報に更新し、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによって生成されたアプリデータを受信し、前記受信されたアプリデータを、前記編集データのテキスト内の前記挿入位置情報が表す位置に挿入する、
処理をコンピュータに実行させる編集プログラム。
【０１４０】
（付記８）
プロセッサと、
前記プロセッサからアクセス可能なメモリとを有し、
前記プロセッサは、
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第２のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
編集装置。
【０１４１】
（付記９）
テキストを有する編集データが変更された場合、変更後の前記編集データのテキストをエディタ画面に表示するとともに、変更後の前記編集データに基づいて生成されるエディタ画像をプレビュー画面に表示し、
アプリケーションプログラムを起動させるコマンドが前記編集データのテキスト内に入力された場合、前記アプリケーションプログラムを起動し、前記アプリケーションプログラムによって生成されるアプリ画像を前記エディタ画像と共に前記プレビュー画面に表示させ、
前記アプリ画像を変更するユーザーの操作が行われた場合、前記アプリケーションプログラムによってアプリ画像と共に変更された第１のアプリデータ及び前記編集データのテキスト内の前記第１のアプリデータの挿入位置情報を受信し、
前記受信に応答して、前記第１のアプリデータを前記編集データのテキスト内の前記挿入位置情報の挿入位置に挿入し、
前記編集データ内に挿入されたアプリデータが変更された場合、前記アプリケーションプログラムに前記変更された第２のアプリデータを前記第１のアプリデータに上書きさせ、前記アプリ画像を前記第２のアプリデータに基づいて変更させるメッセージを前記第２のアプリデータと共に前記アプリケーションプログラムに送信する、
処理を有する編集方法。
【符号の説明】
【０１４２】
１１、１２：端末
１３：サーバ
１５１：エディタ画面
１５２：プレビュー画面
２３１：ブラウザ
２３２：編集プログラム
２３３：アプリケーションプログラム
２３３ａ：第１インスタンス
２３３ｂ：第２インスタンス
２４１：テキスト
２４３：位置情報テーブル
２４４：アプリケーション対応表
２４７：アプリデータ
３３１：サーバプログラム
３４１：編集データ
ＡＧ：アプリ画像
ＥＧ：エディタ画像
【図１】
2019079165.tif 000003
【図２】
2019079165.tif 000004
【図３】
2019079165.tif 000005
【図４】
2019079165.tif 000006
【図５】
2019079165.tif 000007
【図６】
2019079165.tif 000008
【図７】
2019079165.tif 000009
【図８】
2019079165.tif 000010
【図９】
2019079165.tif 000011
【図１０】
2019079165.tif 000012
【図１１】
2019079165.tif 000013
【図１２】
2019079165.tif 000014
【図１３】
2019079165.tif 000015
【図１４】
2019079165.tif 000016
【図１５】
2019079165.tif 000017
【図１６】
2019079165.tif 000018
【図１７】
2019079165.tif 000019
【図１８】
2019079165.tif 000020
【図１９】
2019079165.tif 000021
【図２０】
2019079165.tif 000022
【図２１】
2019079165.tif 000023
【図２２】
2019079165.tif 000024
【図２３】
2019079165.tif 000025
【図２４】
2019079165.tif 000026
【図２５】
2019079165.tif 000027
【図２６】
2019079165.tif 000028
【図２７】
2019079165.tif 000029
【図２８】
2019079165.tif 000030