(57)【要約】【課題】文書共有システムにおける文書中への画像の挿入を支援する。【解決手段】編集装置１０は、ネットワークを介してファイルサーバ３０にフォルダ３１の生成を要求し、撮像部２１および通信部２２を有する端末装置２０宛てにフォルダ３１のフォルダ名を通知させる。編集装置１０は、フォルダ３１を監視し、フォルダ３１にアップロードされた画像ファイル３２を検出する。編集装置１０は、編集中であるテキスト１４に、フォルダ名と関連付けて画像ファイル３２のファイル名を挿入する。【選択図】図１
2019207527.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ネットワークを介してファイルサーバにフォルダの生成を要求し、撮像部および通信部を有し前記コンピュータと異なる端末装置宛てに前記フォルダのフォルダ名を通知させ、
前記フォルダを監視し、前記フォルダにアップロードされた画像ファイルを検出し、
前記コンピュータにおいて編集中であるテキストに、前記フォルダ名と関連付けて前記画像ファイルのファイル名を挿入する、
処理を実行させる編集プログラム。
【請求項２】
前記編集プログラムは、前記テキストに所定のタグが挿入されたことに応じて起動されるアプリケーションプログラムである、
請求項１記載の編集プログラム。
【請求項３】
前記フォルダ名の通知では、前記ネットワークを介して文書共有サーバに前記フォルダ名を送信して、前記文書共有サーバから前記端末装置に前記フォルダ名を通知させる、
請求項１記載の編集プログラム。
【請求項４】
前記コンピュータに更に、
前記フォルダの生成の要求に応じて前記ファイルサーバから前記フォルダ名を受信し、前記フォルダ名を前記テキストに挿入する処理を実行させる、
請求項１記載の編集プログラム。
【請求項５】
前記テキストには、前記フォルダ名と関連付けてフラグが記載され、
前記フォルダの監視は、前記フラグが所定の値であるときのみ実行される、
請求項１記載の編集プログラム。
【請求項６】
前記コンピュータに更に、
前記テキストに複数のフォルダ名が記載されている場合、前記複数のフォルダ名に対応する複数のフォルダのうち高々１つのフォルダの監視のみ有効にする処理を実行させる、
請求項１記載の編集プログラム。
【請求項７】
前記コンピュータに更に、
削除指示の入力に応じて、前記テキストから前記ファイル名を削除し、前記ファイルサーバに前記画像ファイルの削除を要求する処理を実行させる、
請求項１記載の編集プログラム。
【請求項８】
編集中のテキストを記憶する記憶部と、
ネットワークを介してファイルサーバと通信する第１の通信部と、
前記ファイルサーバにフォルダの生成を要求し、撮像部および第２の通信部を有する端末装置宛てに前記フォルダのフォルダ名を通知させ、前記フォルダを監視し、前記フォルダにアップロードされた画像ファイルを検出し、前記テキストに前記フォルダ名と関連付けて前記画像ファイルのファイル名を挿入する処理部と、
を有する編集装置。
【請求項９】
コンピュータが実行する編集方法であって、
ネットワークを介してファイルサーバにフォルダの生成を要求し、撮像部および通信部を有し前記コンピュータと異なる端末装置宛てに前記フォルダのフォルダ名を通知させ、
前記フォルダを監視し、前記フォルダにアップロードされた画像ファイルを検出し、
前記コンピュータにおいて編集中であるテキストに、前記フォルダ名と関連付けて前記画像ファイルのファイル名を挿入する、
編集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は編集プログラム、編集装置および編集方法に関する。
【背景技術】
【０００２】
ネットワーク上で複数のユーザが文書を共有するシステムとして、Ｗｉｋｉなど、Ｗｅｂサーバが公開する文書をＷｅｂブラウザから編集することができるものがある。Ｗｅｂブラウザからの文書の編集には、ＨＴＭＬ（HyperText Markup Language）などＷｅｂブラウザが解釈可能な標準マークアップ言語に代えて、マークダウンなど標準マークアップ言語よりも文法が簡潔な軽量マークアップ言語を使用することがある。
【０００３】
文書共有システムの中には、Ｗｅｂブラウザにエディタ領域とプレビュー領域とを表示させ、エディタ領域に入力されたマークダウンテキストを解析して、マークダウンテキストに対応するＷｅｂページをプレビュー領域に表示するものがある。
【０００４】
なお、文書中の任意の位置に任意の大きさで画像を挿入する情報処理装置が提案されている。提案の情報処理装置は、文書上において対角線の始点と終点を指定したドラッグ操作をユーザから受け付け、ドラッグ操作に続けて所定のメニュー項目の選択をユーザから受け付ける。すると、情報処理装置は、当該情報処理装置に接続された撮像装置から画像を取り込み、ドラッグ操作によって指定された領域に画像を挿入する。
【０００５】
また、親文書の中に子文書を組み込み、親文書と子文書を一括して編集できるようにするＷｅｂページオーサリング装置が提案されている。また、ＸＭＬ（Extensible Markup Language）などの所定のフォーマットで記述されたテキストデータから特定の要素を抽出し、抽出した要素をテンプレートに埋め込むことでＷｅｂページを生成するＷｅｂページ作成支援装置が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２８５１１３号公報
【特許文献２】特開２００６−１６３５３５号公報
【特許文献３】特開２０１１−１２８９７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
文書共有システムにおいて、エディタ領域とプレビュー領域とを含む画面を用いて文書を編集しているときに、スマートフォンなどの携帯端末装置を用いて撮像した画像を文書中に挿入したいことがある。その場合、画像を携帯端末装置からファイルサーバにアップロードし、画像を識別するＵＲＬ（Uniform Resource Locator）などのアドレスをエディタ領域に入力し、プレビュー領域内に画像が正しく表示されていることを確認するという手順が考えられる。しかし、このような手順はユーザにとって煩雑であり、画像が文書中に挿入されるまでに時間がかかるという問題がある。
【０００８】
１つの側面では、本発明は、文書共有システムにおける文書中への画像の挿入を支援する編集プログラム、編集装置および編集方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、コンピュータに以下の処理を実行させる編集プログラムが提供される。ネットワークを介してファイルサーバにフォルダの生成を要求し、撮像部および通信部を有しコンピュータと異なる端末装置宛てにフォルダのフォルダ名を通知させる。フォルダを監視し、フォルダにアップロードされた画像ファイルを検出する。コンピュータにおいて編集中であるテキストに、フォルダ名と関連付けて画像ファイルのファイル名を挿入する。また、１つの態様では、記憶部と通信部と処理部とを有する編集装置が提供される。また、１つの態様では、コンピュータが実行する編集方法が提供される。
【発明の効果】
【００１０】
１つの側面では、文書共有システムにおける文書中への画像の挿入が支援される。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理システムの例を説明する図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】クライアントのハードウェア例を示すブロック図である。
【図４】スマートフォンのハードウェア例を示すブロック図である。
【図５】ブラウザ画面の表示例を示す図である。
【図６】画像挿入時のブラウザ画面の遷移例を示す図である。
【図７】画像挿入時の通信例を示すシーケンス図である。
【図８】情報処理システムの機能例を示すブロック図である。
【図９】Ｗｉｋｉサーバのテーブル例を示す図である。
【図１０】ファイルサーバのテーブル例を示す図である。
【図１１】クライアント処理の手順例を示すフローチャートである。
【図１２】クライアント処理の手順例を示すフローチャート（続き）である。
【図１３】スマートフォン処理の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１３】
図１は、第１の実施の形態の情報処理システムの例を説明する図である。
第１の実施の形態の情報処理システムは、複数のユーザにより共有される文書の編集を支援する。情報処理システムは、編集装置１０、端末装置２０およびファイルサーバ３０を含む。編集装置１０、端末装置２０およびファイルサーバ３０は、ネットワークに接続される。ネットワークは、インターネットなどの広域ネットワークを含んでもよく、有線ＬＡＮ（Local Area Network）や無線ＬＡＮを含んでもよい。
【００１４】
編集装置１０は、ユーザが操作するクライアントコンピュータである。例えば、編集装置１０としてノート型コンピュータが用いられる。情報処理システムは、複数のユーザによって使用される複数の編集装置を含んでもよい。それら複数の編集装置によって共通の文書が編集されてもよい。情報処理システムは、複数のユーザにより共有される文書を管理する文書管理サーバを含んでもよい。端末装置２０は、画像を撮像することができる携帯端末装置である。例えば、端末装置２０としてスマートフォンまたはタブレット端末が用いられる。編集装置１０と端末装置２０とは、例えば、同一ユーザによって使用されている。ファイルサーバ３０は、ファイルを管理するサーバコンピュータである。
【００１５】
編集装置１０は、記憶部１１、通信部１２および処理部１３を有する。
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性半導体メモリでもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性ストレージでもよい。記憶部１１は、編集装置１０のユーザによって編集中の文書を示すテキスト１４を記憶する。テキスト１４は、例えば、マークダウンなどの軽量マークアップ言語で記述されている。通信部１２は、ネットワークを介してファイルサーバ３０と通信する。通信部１２は、ルータやスイッチなどの有線通信装置とケーブルで接続されてもよいし、基地局やアクセスポイントなどの無線通信装置と無線リンクで接続されてもよい。
【００１６】
処理部１３は、テキスト１４の編集を支援する。処理部１３は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。ただし、処理部１３は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途向け電子回路を含んでもよい。
【００１７】
端末装置２０は、撮像部２１および通信部２２を有する。撮像部２１は、端末装置２０を使用するユーザの操作に応じて静止画像を撮像する。ただし、撮像部２１は動画像を撮像してもよい。「画像」には静止画像と動画像が含まれ得る。通信部２２は、ネットワークを介してファイルサーバ３０と通信する。また、通信部２２は、編集装置１０と直接通信するか、または、文書管理サーバなどの他のコンピュータと通信する。
【００１８】
ファイルサーバ３０は、不揮発性ストレージを用いてファイルを記憶する。ファイルサーバ３０上には、フォルダ３１を生成することができる。フォルダを「ディレクトリ」と呼ぶこともある。フォルダ３１はフォルダ名によって識別される。フォルダ３１には、端末装置２０によって撮像された画像を示す画像ファイル３２をアップロードすることができる。画像ファイル３２はフォルダ名およびファイル名によって識別される。例えば、ファイルサーバ３０のサーバ名とフォルダ３１のフォルダ名と画像ファイル３２のファイル名とを含むＵＲＬが識別情報として使用される。
【００１９】
ここで、共有の文書内に画像が表示されるようにしたい場合、画像ファイル３２の識別情報をテキスト１４に挿入することになる。編集装置１０の処理部１３は、以下のようにしてテキスト１４の編集を支援する。以下の処理は、例えば、テキスト１４に所定のタグが記述されたことを契機として起動されるプログラムによって実装される。
【００２０】
処理部１３は、ファイルサーバ３０にフォルダ３１の生成を要求する。ファイルサーバ３０は、編集装置１０からの要求に応じてフォルダ３１を生成する。フォルダ３１のフォルダ名は、ファイルサーバ３０上の他のフォルダと衝突しないようにファイルサーバ３０が決定してもよいし、編集装置１０が指定してもよい。前者の場合、編集装置１０は決定されたフォルダ名をファイルサーバ３０から受信する。フォルダ３１が生成された時点で、処理部１３はテキスト１４にフォルダ名を挿入してもよい。
【００２１】
処理部１３は、端末装置２０宛てにフォルダ３１のフォルダ名を通知させる。例えば、編集装置１０は、文書管理サーバなどのサーバコンピュータにフォルダ名を送信して、当該サーバコンピュータから端末装置２０にフォルダ名を通知させる。ただし、編集装置１０は、近距離無線通信によって端末装置２０に直接フォルダ名を送信してもよいし、アクセスポイントなどの無線通信装置を介して端末装置２０にフォルダ名を送信してもよい。また、処理部１３は、ファイルサーバ３０から端末装置２０にフォルダ名を通知させてもよいし、ファイルサーバ３０から文書管理サーバなどの他のサーバコンピュータを介して端末装置２０にフォルダ名を通知させてもよい。
【００２２】
これにより、端末装置２０は、撮像部２１によって撮像された画像を示す画像ファイル３２を生成し、通知されたフォルダ名が示すフォルダ３１に画像ファイル３２をアップロードする。画像ファイル３２のファイル名は、フォルダ３１内の他のファイルと衝突しないようにファイルサーバ３０が決定してもよいし、端末装置２０が指定してもよい。
【００２３】
処理部１３は、フォルダ３１を監視し、フォルダ３１にアップロードされた画像ファイル３２を検出する。すると、処理部１３は、画像ファイル３２のファイル名をファイルサーバ３０から取得し、フォルダ名と関連付けてファイル名をテキスト１４に挿入する。テキスト１４に既にフォルダ名が記載されている場合、処理部１３はフォルダ名の近くにファイル名を挿入すればよい。処理部１３は、フォルダ３１が生成された時点ではテキスト１４にフォルダ名を挿入せず、画像ファイル３２が検出された時点でフォルダ名とファイル名を組み合わせてテキスト１４に挿入するようにしてもよい。
【００２４】
テキスト１４にフォルダ名とファイル名が記載されると、文書内に画像ファイル３２の画像が表示されることになる。例えば、編集装置１０は、軽量マークアップ言語で記述されたテキスト１４をＨＴＭＬなどの標準マークアップ言語に基づくページに変換し、ファイルサーバ３０から画像ファイル３２をダウンロードしてページ内に埋め込む。編集装置１０は、画像ファイル３２の画像を含むページを表示する。
【００２５】
第１の実施の形態の情報処理システムによれば、ファイルサーバ３０にフォルダ３１が生成され、フォルダ３１のフォルダ名が端末装置２０に通知される。通知されたフォルダ名に基づいて端末装置２０からフォルダ３１に画像ファイル３２がアップロードされる。編集装置１０によってフォルダ３１が監視され、画像ファイル３２がアップロードされると画像ファイル３２のファイル名がテキスト１４に挿入される。
【００２６】
これにより、端末装置２０によって撮像された画像を文書に挿入することが効率化される。例えば、ユーザが、端末装置２０からファイルサーバ３０にアップロードされた画像ファイル３２のＵＲＬを確認し、手作業でテキスト１４にＵＲＬを記述する方法も考えられる。しかし、この方法ではユーザの作業負担が大きく、画像を文書に迅速に挿入することが難しい。これに対し、第１の実施の形態の方法によれば、ユーザの作業負担が軽減され、画像を文書に迅速に挿入することが可能となる。
【００２７】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムの例を示す図である。
【００２８】
第２の実施の形態の情報処理システムは、複数のユーザが文書を閲覧し編集することができる文書共有システムである。文書共有にはＷｉｋｉが利用される。情報処理システムは、クライアント１００，１００−１，１００−２、スマートフォン２００、Ｗｉｋｉサーバ３００およびファイルサーバ４００を含む。また、情報処理システムは、ネットワーク５０、アクセスポイント５１および配信サーバ５２を含む。ネットワーク５０は、インターネットなどの広域ネットワークを含んでもよいし、有線ＬＡＮや無線ＬＡＮを含んでもよい。アクセスポイント５１は、ネットワーク５０に属する無線通信装置である。
【００２９】
クライアント１００は、第１の実施の形態の編集装置１０に対応する。スマートフォン２００は、第１の実施の形態の端末装置２０に対応する。ファイルサーバ４００は、第１の実施の形態のファイルサーバ３０に対応する。
【００３０】
クライアント１００，１００−１，１００−２は、ユーザが操作するクライアントコンピュータである。クライアント１００，１００−１，１００−２は、ノート型コンピュータなど携帯可能であることが好ましく、テキスト編集のためにキーボードを有していることが好ましい。クライアント１００，１００−１，１００−２は、ＨＴＴＰ（Hypertext Transfer Protocol）によりアクセスポイント５１およびネットワーク５０を介してＷｉｋｉサーバ３００およびファイルサーバ４００と通信する。
【００３１】
クライアント１００，１００−１，１００−２は、Ｗｅｂブラウザを実行する。クライアント１００，１００−１，１００−２は、Ｗｅｂブラウザを用いて、Ｗｉｋｉサーバ３００にログインしてＷｉｋｉサーバ３００からテキストを受信し、受信したテキストに基づいてＷｅｂページを表示する。テキストに画像ファイルの識別情報が記載されている場合、クライアント１００，１００−１，１００−２は、ファイルサーバ４００から画像ファイルをダウンロードして画像をＷｅｂページに埋め込む。また、クライアント１００，１００−１，１００−２は、Ｗｅｂブラウザを用いてテキストを編集する。
【００３２】
スマートフォン２００は、撮像機能および通話機能を有する携帯端末装置である。スマートフォン２００は、クライアント１００と同じユーザにより所持される。クライアント１００−１，１００−２のユーザも、それぞれスマートフォンを所持していてよい。スマートフォン２００は、ＨＴＴＰによりアクセスポイント５１およびネットワーク５０を介してＷｉｋｉサーバ３００、ファイルサーバ４００および配信サーバ５２と通信する。スマートフォン２００は、予め配信サーバ５２から撮像支援のアプリケーションソフトウェアをダウンロードしておく。スマートフォン２００は、当該アプリケーションソフトウェアを用いて、画像を撮像して画像ファイルをファイルサーバ４００にアップロードする。
【００３３】
クライアント１００，１００−１，１００−２およびスマートフォン２００は、例えば、複数のユーザが会議室に集まって会議を行うときに使用される。これら複数のユーザは、クライアント１００，１００−１，１００−２を使用して議事録を作成し、Ｗｉｋｉサーバ３００を利用して議事録を共有する。このとき、ホワイトボードの画像など、会議中にスマートフォン２００を用いて撮像した画像の画像ファイルがファイルサーバ４００にアップロードされ、当該画像ファイルが議事録からリンクされる。
【００３４】
Ｗｉｋｉサーバ３００は、Ｗｅｂページを記述したテキストを管理するサーバコンピュータである。Ｗｉｋｉサーバ３００が管理するテキストは、ＨＴＭＬなどの標準マークアップ言語ではなくマークダウンなどの軽量マークアップ言語で記述される。Ｗｉｋｉサーバ３００は、クライアント１００，１００−１，１００−２にテキストを送信する。あるクライアントがテキストを編集すると、Ｗｉｋｉサーバ３００は、当該クライアントから編集内容を受信し、Ｗｉｋｉサーバ３００が保持するテキストを更新すると共に他のクライアントに編集内容を転送する。すなわち、Ｗｉｋｉサーバ３００は、クライアント１００，１００−１，１００−２の間でテキストを同期させる。これにより、クライアント１００，１００−１，１００−２は同一のＷｅｂページを閲覧し編集できる。
【００３５】
ファイルサーバ４００は、画像ファイルを管理するサーバコンピュータであり、画像ファイル管理サーバと言うことができる。Ｗｉｋｉサーバ３００が保持するテキストから、ファイルサーバ４００が保持する画像ファイルがリンクされる。スマートフォン２００からファイルサーバ４００に画像ファイルがアップロードされ、ファイルサーバ４００からクライアント１００，１００−１，１００−２に画像ファイルがダウンロードされる。
【００３６】
配信サーバ５２は、スマートフォン２００にアプリケーションソフトウェアを配信するサーバコンピュータである。配信サーバ５２には、第２の実施の形態で使用する撮像支援のアプリケーションソフトウェアが登録されている。
【００３７】
図３は、クライアントのハードウェア例を示すブロック図である。
クライアント１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、ディスプレイ１０４、キーボード１０５、媒体リーダ１０６および通信インタフェース１０７を有する。上記ユニットはバスに接続されている。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１３に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。通信インタフェース１０７は、第１の実施の形態の通信部１２に対応する。クライアント１００−１，１００−２、Ｗｉｋｉサーバ３００、ファイルサーバ４００および配信サーバ５２も、同様のハードウェアを用いて実装できる。
【００３８】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを有してもよく、クライアント１００は複数のプロセッサを有してもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００３９】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性半導体メモリである。なお、クライアント１００は、ＲＡＭ以外の種類のメモリを有してもよく、複数個のメモリを有してもよい。
【００４０】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムおよびデータを記憶する不揮発性ストレージである。なお、クライアント１００は、フラッシュメモリやＳＳＤ（Solid State Drive）など他の種類のストレージを有してもよく、複数の不揮発性ストレージを有してもよい。
【００４１】
ディスプレイ１０４は、ＣＰＵ１０１からの命令に従って画面を表示する。ディスプレイ１０４としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００４２】
キーボード１０５は、ユーザから入力操作を受け付けて入力信号をＣＰＵ１０１に出力する。なお、クライアント１００は、マウスやタッチパネルやタッチパッドなど他の種類の入力デバイスを有してもよく、複数個の入力デバイスを有してもよい。
【００４３】
媒体リーダ１０６は、記録媒体１０８に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１０８として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、記録媒体１０８から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４４】
通信インタフェース１０７は、アクセスポイント５１に接続し、ネットワーク５０を介してＷｉｋｉサーバ３００およびファイルサーバ４００と通信する。なお、クライアント１００は、有線通信装置に接続する有線通信インタフェースを有してもよい。
【００４５】
図４は、スマートフォンのハードウェア例を示すブロック図である。
スマートフォン２００は、ＣＰＵ２０１、ＲＡＭ２０２、フラッシュメモリ２０３、ディスプレイ２０４、タッチパネル２０５、撮像部２０６、媒体リーダ２０７および通信インタフェース２０８を有する。上記ユニットはバスに接続されている。なお、撮像部２０６は、第１の実施の形態の撮像部２１に対応する。通信インタフェース２０８は、第１の実施の形態の通信部２２に対応する。
【００４６】
ＣＰＵ２０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ２０１は、フラッシュメモリ２０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ２０２にロードし、プログラムを実行する。ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムやＣＰＵ２０１が演算に用いるデータを一時的に記憶する揮発性半導体メモリである。フラッシュメモリ２０３は、ＯＳやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムおよびデータを記憶する不揮発性ストレージである。なお、スマートフォン２００は、他の種類の不揮発性ストレージを有してもよい。
【００４７】
ディスプレイ２０４は、ＣＰＵ２０１からの命令に従って画面を表示する。タッチパネル２０５は、ディスプレイ２０４に重ねて配置され、ディスプレイ２０４に対するタッチ操作のタッチ位置を検出する。タッチ位置の検出方式としては、抵抗膜方式や静電容量方式などの任意の検出方式を用いることができる。なお、スマートフォン２００は、ボタンスイッチなど他の種類の入力デバイスを有してもよい。
【００４８】
撮像部２０６は、ＣＣＤ（Charge Coupled Device）などの画像センサを有するカメラである。撮像部２０６は、静止画像を生成することができ、動画像を生成してもよい。撮像部２０６は、画像ファイルをＲＡＭ２０２またはフラッシュメモリ２０３に格納する。
【００４９】
媒体リーダ２０７は、記録媒体２０９に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体２０９として、例えば、半導体メモリが使用される。媒体リーダ２０７は、記録媒体２０９から読み取ったプログラムやデータをＲＡＭ２０２またはフラッシュメモリ２０３に格納する。通信インタフェース２０８は、アクセスポイント５１に接続し、ネットワーク５０を介してＷｉｋｉサーバ３００、ファイルサーバ４００および配信サーバ５２と通信する。ただし、通信インタフェース２０８は、広域無線通信用の基地局に接続する無線通信インタフェースであってもよい。
【００５０】
次に、クライアント１００によるテキスト編集について説明する。
図５は、ブラウザ画面の表示例を示す図である。
クライアント１００は、Ｗｉｋｉサーバ３００にログインして編集および閲覧の対象のページを選択すると、Ｗｉｋｉサーバ３００からＨＴＭＬテンプレートとマークダウンテキストとスクリプトを受信する。ＨＴＭＬテンプレートは、ページの編集および閲覧をＷｅｂブラウザ上で可能にするための画面構成を規定するＨＴＭＬテキストである。マークダウンテキストは、軽量マークアップ言語であるマークダウンを用いてページを記述したテキストである。スクリプトは、Ｗｅｂブラウザ上で実行可能なプログラムであり、マークダウンテキストの編集、Ｗｉｋｉサーバ３００との間のマークダウンテキストの同期、マークダウンテキストから視覚的ページへの変換などの処理を規定する。
【００５１】
例えば、クライアント１００のＷｅｂブラウザ上にブラウザ画面６０が表示される。ブラウザ画面６０は、エディタ領域６１およびプレビュー領域６２を含む。エディタ領域６１は左側に配置され、プレビュー領域６２は右側に配置される。
【００５２】
エディタ領域６１は、マークダウンテキストを表示する。ユーザは、キーボード１０５などの入力デバイスを用いて、エディタ領域６１に表示されたマークダウンテキストを編集することができる。例えば、ユーザはマークダウンテキストに文字列を挿入し、また、マークダウンテキストから文字列を削除する。プレビュー領域６２は、エディタ領域６１の現在のマークダウンテキストに対応するページを表示する。マークダウンテキストからページへの変換は、クライアント１００に予めダウンロードされたスクリプトを用いてクライアント１００においてリアルタイムに実行される。よって、エディタ領域６１のマークダウンテキストが書き換えられる毎にプレビュー領域６２のページも更新される。
【００５３】
マークダウンテキストは、ページ上の視覚的表現方法を簡易的な文法によって規定することができる。例えば、行頭の「#」は第１レベルの見出しを意味し、行頭および行末の「**」は文字列の強調表示を意味する。「```」から「```」までの範囲はFenced Code Block（フェンストコードブロック）である。先頭の「```」の後ろにタグとしてプログラミング言語名を記載すると、先頭の「```」の次の行から末尾の「```」の前の行までの文字列がサンプルプログラムと解釈される。すると、プログラミング言語で定義された予約語が特定の色で表示されるなど、プログラミング言語に応じた視覚的表現方法によってサンプルプログラムがページ上に表示される。
【００５４】
また、マークダウンテキストは、「![画像名](画像ファイルのＵＲＬ)」という形式で画像の挿入を規定することができる。この文字列を含むマークダウンテキストは、画像ファイルへのハイパーリンクを含むＨＴＭＬテキストに相当する。よって、このマークダウンテキストに対応するページを表示する際には、Ｗｅｂブラウザはファイルサーバ４００から画像ファイルをダウンロードして画像をページに埋め込むことになる。
【００５５】
また、マークダウンテキストは、Fenced Code Blockを利用して、特別の視覚的インタフェースをもつアプリケーションソフトウェアの起動を規定することができる。先頭の「```」の後ろにタグとしてアプリケーション名を記載すると、予めダウンロードされたスクリプトの中から当該アプリケーション名をもつアプリケーションプログラムが実行される。そして、アプリケーションプログラムによって定義された特別の視覚的インタフェースがプレビュー領域６２に表示される。先頭の「```」の次の行から末尾の「```」の前の行までの文字列が、アプリケーションソフトウェアが処理するデータと解釈される。Fenced Code Blockに記載すべきデータの形式は、起動するアプリケーションソフトウェアに依存する。プレビュー領域６２に表示された特別の視覚的インタフェースがデータ操作を許容している場合、プレビュー領域６２上での操作がマークダウンテキストにも反映される。すなわち、エディタ領域６１とプレビュー領域６２が双方向に同期する。
【００５６】
例えば、「kpt」タグを含むFenced Code Blockがマークダウンテキストに記載されているとする。すると、ＫＰＴアプリケーションが起動され、ＫＰＴ（Keep-Problem-Try）分析に有用な視覚的インタフェースがプレビュー領域６２に表示される。この視覚的インタフェースは、Keep項目を示す文字列の入力と、Problem項目を示す文字列の入力と、Try項目を示す文字列の入力を可能とする。プレビュー領域６２上で文字列が入力されると、その文字列がマークダウンテキストのFenced Code Blockに挿入される。これにより、複雑なデータ構造をもつデータの入力を支援することができる。
【００５７】
ここで、ユーザがスマートフォン２００を用いて撮像した画像をページに挿入する編集作業について考える。単純な方法としては、ユーザがスマートフォン２００を用いて画像を撮像し、手作業で画像ファイルをファイルサーバ４００にアップロードする。そして、ユーザがフォルダ名やファイル名を含む画像ファイルのＵＲＬを確認し、手作業でＵＲＬをマークダウンテキストに挿入することが考えられる。しかし、この原則的方法はユーザの作業負担が大きく画像挿入に要する時間が長くなるという問題がある。また、スマートフォン２００からファイルサーバ４００に画像ファイルをアップロードする際に、ユーザがフォルダ名やファイル名を指定するようにしても、ユーザが手作業でＵＲＬをマークダウンテキストに挿入する作業負担は軽減されない。
【００５８】
画像挿入を支援する１つの案としては、ユーザがマークダウンテキストに「!image()」のような特別な文字列を記載すると、Ｗｉｋｉサーバ３００がファイルサーバ４００を監視して、スマートフォン２００からアップロードされた画像ファイルを検出する。そして、マークダウンテキストの中の特別な文字列を、検出した画像ファイルのＵＲＬに置換することが考えられる。しかし、この代替的方法は、異なるユーザが異なるページを同時に編集している場合に、ファイルサーバ４００にアップロードされた画像ファイルが何れのユーザの編集中ページに関連するものか判断することが難しいという問題がある。そのため、意図しない画像がページに挿入されてしまうおそれがある。
【００５９】
また、この代替的方法は、１つのページに複数の画像を連続的に挿入することが難しいという問題がある。例えば、ユーザがマークダウンテキストに２つの「!image()」を記載した場合、１つ目の画像ファイルがファイルサーバ４００にアップロードされたときに、２つの「!image()」が同一のＵＲＬに置換されてしまうおそれがある。すなわち、異なる複数の画像をページに挿入したいというユーザの意図を理解することが難しい。
【００６０】
そこで、第２の実施の形態の情報処理システムは、Fenced Code Blockを利用して画像挿入アプリケーションをＷｅｂブラウザ上で起動することで、画像の撮像およびページへの挿入を支援してユーザの作業負担を軽減する。
【００６１】
図６は、画像挿入時のブラウザ画面の遷移例を示す図である。
ブラウザ画面７０は、エディタ領域７１およびプレビュー領域７２を含む。ユーザは、エディタ領域７１に表示されたマークダウンテキストにFenced Code Blockを書き込む。このFenced Code Blockは、画像挿入アプリケーションを示す「image」タグを含む。すると、クライアント１００のＷｅｂブラウザは、予めクライアント１００にダウンロードされた画像挿入アプリケーションのプログラム（スクリプト）を実行する。
【００６２】
Ｗｅｂブラウザは、プレビュー領域７２にスタートボタンを含む視覚的インタフェースを表示し、また、Fenced Code Block内のデータを初期化する。Fenced Code Block内のデータは、フォルダ名の項目とファイル名の項目とフラグの項目を含む。
【００６３】
フォルダ名は、ファイルサーバ４００に生成されたフォルダを示す。フォルダ名の項目は空に初期化され、その後に１つのフォルダ名が記載される。ファイル名は、ファイルサーバ４００にアップロードされた画像ファイルを示す。ファイル名の項目は空に初期化され、その後に１以上のファイル名が記載される。フラグは、画像挿入モードか否かを示す。フラグがtrueであるときは画像挿入モードであり、フラグがfalseであるときは画像挿入モードでない。画像挿入モードでは、Ｗｅｂブラウザはファイルサーバ４００のフォルダを監視し、スマートフォン２００からフォルダにアップロードされた画像ファイルを自動的に検出する。フラグの項目はfalseに初期化される。
【００６４】
ユーザがプレビュー領域７２のスタートボタンを押下すると、Ｗｅｂブラウザはファイルサーバ４００にフォルダ生成要求を送信し、生成されたフォルダのフォルダ名をファイルサーバ４００から受信する。Ｗｅｂブラウザは、フォルダ名をマークダウンテキストに書き込み、フラグをfalseからtrueに書き換える。Ｗｅｂブラウザは、プレビュー領域７２のスタートボタンをストップボタンに変更する。また、Ｗｅｂブラウザは、ファイルサーバ４００に生成されたフォルダの監視を開始する。例えば、Ｗｅｂブラウザは、フォルダに格納されているファイルのリストを定期的にファイルサーバ４００に要求し、受信したリストに基づいて新たな画像ファイルが存在するか判定する。
【００６５】
また、Ｗｅｂブラウザは、フォルダ名を含む撮像開始通知をＷｉｋｉサーバ３００に送信する。すると、クライアント１００と同じユーザが使用しているスマートフォン２００にＷｉｋｉサーバ３００から撮像開始通知が転送される。スマートフォン２００には撮像支援アプリケーションが予めインストールされており、スマートフォン２００がＷｉｋｉサーバ３００にログインしておく。これにより、Ｗｉｋｉサーバ３００がスマートフォン２００に撮像開始通知を転送できる。例えば、スマートフォン２００が定期的にＷｉｋｉサーバ３００にアクセスし、転送すべき撮像開始通知をＷｉｋｉサーバ３００が保持している場合に、Ｗｉｋｉサーバ３００がスマートフォン２００に撮像開始通知を送信する。
【００６６】
スマートフォン２００の撮像支援アプリケーションがＷｉｋｉサーバ３００にログインすると、スマートフォン２００は待機状態になる。撮像支援アプリケーションがＷｉｋｉサーバ３００から撮像開始通知を受信すると、スマートフォン２００は撮像可能状態に遷移する。撮像支援アプリケーションは、撮像可能状態ではタッチ操作により撮像部２０６を利用した撮像を可能とし、撮像開始通知に含まれていたフォルダ名が示すフォルダに画像ファイルを自動的にアップロードする。連続的に複数枚の画像が撮像された場合、撮像支援アプリケーションは、連続的に複数の画像ファイルをアップロードする。
【００６７】
クライアント１００のＷｅｂブラウザは、フォルダにアップロードされた１以上の画像ファイルを検出する。すると、Ｗｅｂブラウザは、検出した１以上の画像ファイルのファイル名をマークダウンテキストに書き込む。Ｗｅｂブラウザは、マークダウンテキストに記載されたフォルダ名およびファイル名に基づいてファイルサーバ４００から画像ファイルをダウンロードし、プレビュー領域７２に画像を表示する。
【００６８】
ユーザがプレビュー領域７２のストップボタンを押下すると、Ｗｅｂブラウザはマークダウンテキストのフラグをtrueからfalseに書き換える。Ｗｅｂブラウザは、プレビュー領域７２のストップボタンをスタートボタンに変更する。また、Ｗｅｂブラウザは、ファイルサーバ４００のフォルダの監視を終了する。また、Ｗｅｂブラウザは、撮像終了通知をＷｉｋｉサーバ３００に送信する。すると、Ｗｉｋｉサーバ３００からスマートフォン２００に撮像終了通知が転送され、スマートフォン２００が待機状態になる。
【００６９】
クライアント１００によるマークダウンテキストの編集は、Ｗｉｋｉサーバ３００を介して同じページを閲覧しているクライアント１００−１，１００−２にも伝達される。よって、クライアント１００−１，１００−２のＷｅｂブラウザでも、クライアント１００が編集したマークダウンテキストがエディタ領域に表示され、そのマークダウンテキストから生成された視覚的インタフェースや画像がプレビュー領域に表示される。
【００７０】
図７は、画像挿入時の通信例を示すシーケンス図である。
クライアント１００は、ユーザＩＤとパスワードを用いてＷｉｋｉサーバ３００にログインする（Ｓ１０）。クライアント１００は、エディタ領域７１およびプレビュー領域７２を含むブラウザ画面７０の画面構成を示すＨＴＭＬテンプレートを受信し、画像挿入アプリケーションのプログラムを含む各種のスクリプトを受信する。クライアント１００は、編集および閲覧の対象とするページを選択し、ページのデータとしてマークダウンテキストをＷｉｋｉサーバ３００から受信する（Ｓ１１）。
【００７１】
スマートフォン２００は、ユーザＩＤとパスワードを用いてＷｉｋｉサーバ３００にログインする（Ｓ１２）。クライアント１００が使用するユーザＩＤとスマートフォン２００が使用するユーザＩＤは同一とする。クライアント１００が使用するパスワードとスマートフォン２００が使用するパスワードは同一でもよいし異なってもよい。
【００７２】
クライアント１００は、画像挿入アプリケーションを起動し、フォルダ生成要求をファイルサーバ４００に送信する（Ｓ１３）。ファイルサーバ４００は、ファイルサーバ４００が有する不揮発性ストレージ上にフォルダを生成し、フォルダ名をクライアント１００に通知する（Ｓ１４）。フォルダ名は、既存のフォルダ名と重複しないようにファイルサーバ４００が決定する。ただし、クライアント１００が、フォルダ生成要求においてフォルダ名の少なくとも一部分を指定するようにしてもよい。クライアント１００は、ファイルサーバ４００に生成されたフォルダの監視を開始する（Ｓ１５）。
【００７３】
クライアント１００は、監視中のフォルダのフォルダ名を含む撮像開始通知をＷｉｋｉサーバ３００に送信する（Ｓ１６）。Ｗｉｋｉサーバ３００は、クライアント１００と同じユーザＩＤでログインしているスマートフォン２００を検索し、撮像開始通知をスマートフォン２００に転送する（Ｓ１７）。スマートフォン２００は、ユーザ操作に応じて生成された画像ファイルを、撮像開始通知で指定されたファイルサーバ４００のフォルダにアップロードする（Ｓ１８）。アップロードされた画像ファイルのファイル名は、画像ファイル間で重複しないようにファイルサーバ４００が決定する。ただし、スマートフォン２００が、ファイル名の少なくとも一部分を指定するようにしてもよい。
【００７４】
クライアント１００は、アップロードされた画像ファイルを検出し、ファイルサーバ４００から画像ファイルをダウンロードする（Ｓ１９）。クライアント１００は、撮像終了通知をＷｉｋｉサーバ３００に送信する（Ｓ２０）。Ｗｉｋｉサーバ３００は、クライアント１００と同じユーザＩＤでログインしているスマートフォン２００を検索し、撮像終了通知をスマートフォン２００に転送する（Ｓ２１）。なお、第２の実施の形態ではクライアント１００からＷｉｋｉサーバ３００にフォルダ名を含む撮像開始通知を送信しているが、ファイルサーバ４００からＷｉｋｉサーバ３００に送信するようにしてもよい。
【００７５】
次に、クライアント１００、スマートフォン２００、Ｗｉｋｉサーバ３００およびファイルサーバ４００の機能について説明する。
図８は、情報処理システムの機能例を示すブロック図である。
【００７６】
クライアント１００は、Ｗｅｂブラウザ１１１、マークダウンエディタ１１２、マークダウン解析部１１３、プレビューア１１４および画像挿入制御部１１５を有する。Ｗｅｂブラウザ１１１は、クライアント１００に予めインストールされたソフトウェアである。マークダウンエディタ１１２、マークダウン解析部１１３、プレビューア１１４および画像挿入制御部１１５は、Ｗｉｋｉサーバ３００から配信されるスクリプトにより実装される。
【００７７】
Ｗｅｂブラウザ１１１は、ユーザ入力を受け付け、サーバコンピュータとＨＴＴＰ通信を行い、サーバコンピュータから受信したデータに基づいてブラウザ画面を表示する。Ｗｅｂブラウザ１１１は、サーバコンピュータから受信したスクリプトを実行することがある。具体的には、Ｗｅｂブラウザ１１１は、マークダウンエディタ１１２、マークダウン解析部１１３、プレビューア１１４および画像挿入制御部１１５を適宜呼び出す。
【００７８】
マークダウンエディタ１１２は、Ｗｉｋｉサーバ３００から受信したマークダウンテキストを保持し、マークダウンテキストをエディタ領域に表示する。また、マークダウンエディタ１１２は、ユーザからマークダウンテキストの編集入力を受け付け、保持するマークダウンテキストを更新すると共に、編集内容をＷｉｋｉサーバ３００に送信する。また、マークダウンエディタ１１２は、Ｗｉｋｉサーバ３００から他クライアントの編集内容を受信し、保持するマークダウンテキストを更新する。
【００７９】
マークダウン解析部１１３は、マークダウンエディタ１１２が保持するマークダウンテキストが更新されると、マークダウンテキストの構文解析（パース）を行い、マークダウンテキストをハイパーテキスト抽象構文木（ＨＡＳＴ：Hypertext Abstract Syntax Tree）に変換する。マークダウン解析部１１３を「パーザー」と言うこともある。ＨＡＳＴは、ＨＴＭＬデータ構造を示すツリーであり、複数のノードとノード間のリンクとを含む。１つのFenced Code Blockに含まれる文字列は、通常のＨＴＭＬテキストとは解釈されないため、ＨＡＳＴでは単一のノードに収容される。
【００８０】
プレビューア１１４は、マークダウン解析部１１３からＨＡＳＴを取得し、ＨＡＳＴに基づいてページを生成し、ページをプレビュー領域に表示する。ＨＡＳＴの中にFenced Code Blockを示すノードが含まれている場合、プレビューア１１４は、Fenced Code Blockがもつタグに応じたアプリケーションソフトウェアを呼び出す。特に、ＨＡＳＴの中に「image」タグをもつFenced Code Blockを示すノードが含まれている場合、プレビューア１１４は、画像挿入アプリケーションである画像挿入制御部１１５を呼び出す。このとき、画像挿入アプリケーションのプログラム（スクリプト）が実行される。
【００８１】
画像挿入制御部１１５は、Ｗｉｋｉサーバ３００およびファイルサーバ４００と連携して、マークダウンテキストへのフォルダ名およびファイル名の入力を自動化し、スマートフォン２００によって撮像された画像をページに挿入する作業を支援する。
【００８２】
前述のように、画像挿入制御部１１５は、ファイルサーバ４００にフォルダ生成要求を送信し、ファイルサーバ４００からフォルダ名を受信する。画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴにフォルダ名を挿入させ、その結果としてマークダウンエディタ１１２が保持するマークダウンテキストにフォルダ名を挿入させる。また、画像挿入制御部１１５は、ファイルサーバ４００のフォルダの監視を開始し、Ｗｉｋｉサーバ３００にフォルダ名を含む撮像開始通知を送信する。
【００８３】
フォルダに画像ファイルがアップロードされると、画像挿入制御部１１５は、ファイルサーバ４００から画像ファイルのファイル名を受信する。画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴにファイル名を挿入させ、その結果としてマークダウンエディタ１１２が保持するマークダウンテキストにファイル名を挿入させる。画像挿入制御部１１５は、フォルダ名とファイル名に基づいてファイルサーバ４００から画像ファイルを受信し、画像をプレビュー領域に表示する。最後に、画像挿入制御部１１５は、Ｗｉｋｉサーバ３００に撮像終了通知を送信する。
【００８４】
スマートフォン２００は、状態制御部２１１および撮像制御部２１２を有する。状態制御部２１１および撮像制御部２１２は、配信サーバ５２から配信されスマートフォン２００に予めインストールされた撮像支援アプリケーションに含まれる。
【００８５】
状態制御部２１１は、撮像支援アプリケーションが起動すると、ユーザからユーザＩＤおよびパスワードの入力を受け付け、ユーザＩＤおよびパスワードをＷｉｋｉサーバ３００に送信してＷｉｋｉサーバ３００にログインする。これにより、撮像支援アプリケーションが待機状態になる。状態制御部２１１は、Ｗｉｋｉサーバ３００から撮像開始通知を受信し、受信した撮像開始通知に含まれるフォルダ名を保持する。これにより、撮像支援アプリケーションが待機状態から撮像可能状態に遷移する。
【００８６】
状態制御部２１１は、待機状態では撮像制御部２１２による画像ファイルの生成を制限する一方、撮像可能状態では撮像制御部２１２による画像ファイルの生成を許容する。状態制御部２１１は、撮像制御部２１２から画像ファイルを取得し、保持しているフォルダ名が示すファイルサーバ４００のフォルダに画像ファイルをアップロードする。その後、状態制御部２１１は、Ｗｉｋｉサーバ３００から撮像終了通知を受信する。これにより、撮像支援アプリケーションが撮像可能状態から待機状態に遷移する。状態制御部２１１は、ユーザ操作または時間経過に応じてＷｉｋｉサーバ３００からログオフしてもよい。
【００８７】
撮像制御部２１２は、撮像支援アプリケーションが待機状態であるときは、撮像支援アプリケーション上でタッチ操作などのユーザ入力を行っても撮像部２０６による撮像が行われないようにする。一方、撮像制御部２１２は、撮像支援アプリケーションが撮像可能状態であるときは、撮像支援アプリケーション上でのタッチ操作などのユーザ入力に応じて撮像部２０６に撮像を行わせ、画像ファイルを生成する。撮像制御部２１２は、連続的に複数の画像ファイルを生成することを許容する。なお、画像ファイルは、静止画像のファイルであってもよいし動画像のファイルであってもよい。撮像支援アプリケーション上でユーザが画像種別を選択できるようにしてもよい。
【００８８】
Ｗｉｋｉサーバ３００は、アカウント記憶部３１１、Ｗｉｋｉページ記憶部３１２、プログラム記憶部３１３、ユーザ管理部３１４およびＷｉｋｉページ共有部３１５を有する。アカウント記憶部３１１、Ｗｉｋｉページ記憶部３１２およびプログラム記憶部３１３は、揮発性メモリまたは不揮発性ストレージの記憶領域である。ユーザ管理部３１４およびＷｉｋｉページ共有部３１５は、サーバソフトウェアに含まれる。
【００８９】
アカウント記憶部３１１は、複数のユーザそれぞれのユーザＩＤおよびパスワードを含むアカウント情報を記憶する。アカウント情報は、クライアント１００，１００−１，１００−２のユーザまたは管理者によって予めＷｉｋｉサーバ３００に登録される。
【００９０】
Ｗｉｋｉページ記憶部３１２は、ページを記述したマークダウンテキストを記憶する。マークダウンテキストは、クライアント１００，１００−１，１００−２からアップロードされる。プログラム記憶部３１３は、マークダウンテキストの編集画面を規定するＨＴＭＬテンプレートを記憶する。また、プログラム記憶部３１３は、マークダウンテキストの編集およびページのプレビューを実現する各種スクリプトを記憶する。ＨＴＭＬテンプレートおよびスクリプトは、管理者によって予めＷｉｋｉサーバ３００に登録される。
【００９１】
ユーザ管理部３１４は、クライアント１００，１００−１，１００−２およびスマートフォン２００を使用するユーザを管理する。ユーザ管理部３１４は、クライアント１００からユーザＩＤおよびパスワードを受信する。ユーザ管理部３１４は、受信したユーザＩＤおよびパスワードがアカウント記憶部３１１に記憶されたアカウント情報と一致すればログイン成功と判定し、マークダウンテキストへのアクセスを許容する。一方、ユーザ管理部３１４は、受信したユーザＩＤおよびパスワードがアカウント情報と一致しなければログイン失敗と判定し、マークダウンテキストへのアクセスを拒否する。
【００９２】
また、ユーザ管理部３１４は、スマートフォン２００からユーザＩＤおよびパスワードを受信する。ユーザ管理部３１４は、受信したユーザＩＤおよびパスワードがアカウント情報と一致すればログイン成功と判定し、一致しなければログイン失敗と判定する。
【００９３】
ここで、ユーザ管理部３１４は、同じユーザＩＤでログイン状態を維持しているクライアント１００とスマートフォン２００とを紐付ける。例えば、ユーザ管理部３１４は、クライアント１００とＷｉｋｉサーバ３００との間のセッションまたはコネクションと、スマートフォン２００とＷｉｋｉサーバ３００との間のセッションまたはコネクションとを紐付ける。ユーザ管理部３１４は、クライアント１００から撮像開始通知を受信し、クライアント１００と紐付けられたスマートフォン２００に撮像開始通知を転送する。例えば、ユーザ管理部３１４は、スマートフォン２００から定期的にアクセスを受け付け、転送すべき撮像開始通知が存在する場合に撮像開始通知を送信する。
【００９４】
Ｗｉｋｉページ共有部３１５は、ログインに成功したクライアント１００，１００−１，１００−２に対して、プログラム記憶部３１３に記憶されたＨＴＭＬテンプレートおよびスクリプトを送信する。また、Ｗｉｋｉページ共有部３１５は、クライアント１００，１００−１，１００−２によるページの選択に応じて、Ｗｉｋｉページ記憶部３１２に記憶された当該ページに対応するマークダウンテキストを送信する。
【００９５】
また、Ｗｉｋｉページ共有部３１５は、Ｗｉｋｉページ記憶部３１２のマークダウンテキストおよびクライアント１００，１００−１，１００−２が保持するマークダウンテキストを同期させる。Ｗｉｋｉページ共有部３１５は、クライアント１００から編集内容を受信し、Ｗｉｋｉページ記憶部３１２に記憶されたマークダウンテキストを更新する。
【００９６】
更に、Ｗｉｋｉページ共有部３１５は、ユーザ管理部３１４が保持する情報を参照して、ログイン中でありクライアント１００と同じマークダウンテキストをダウンロードしたクライアント１００−１，１００−２を特定する。そして、Ｗｉｋｉページ共有部３１５は、クライアント１００−１，１００−２に編集内容を転送する。例えば、Ｗｉｋｉページ共有部３１５は、クライアント１００−１，１００−２から定期的にアクセスを受け付け、転送すべき編集内容が存在する場合に編集内容を送信する。
【００９７】
ファイルサーバ４００は、ファイル記憶部４１１、ファイル管理部４１２および名前決定部４１３を有する。ファイル記憶部４１１は、不揮発性ストレージの記憶領域である。ファイル管理部４１２および名前決定部４１３は、サーバソフトウェアに含まれる。
【００９８】
ファイル記憶部４１１は、画像ファイルを記憶する。また、ファイル記憶部４１１は、階層的なフォルダ構造を示すファイルシステム管理情報を記憶する。
ファイル管理部４１２は、クライアント１００からフォルダ生成要求を受信し、名前決定部４１３にフォルダ名を問い合わせる。ファイル管理部４１２は、ファイルシステム管理情報を更新してファイルシステム上に当該決定されたフォルダ名をもつ新規フォルダを追加し、クライアント１００にフォルダ名を送信する。
【００９９】
また、ファイル管理部４１２は、スマートフォン２００からフォルダ名を指定して画像ファイルを受信し、名前決定部４１３にファイル名を問い合わせる。ファイル管理部４１２は、ファイル記憶部４１１の中の指定されたフォルダ名のフォルダに、当該決定されたファイル名をもつ画像ファイルを格納する。また、ファイル管理部４１２は、クライアント１００からフォルダ名を指定して定期的にアクセスを受け付け、指定されたフォルダ名のフォルダに存在するファイルのリストをクライアント１００に送信する。
【０１００】
名前決定部４１３は、ファイル管理部４１２からフォルダ名の問い合わせを受け付け、ファイル記憶部４１１に記憶されたファイルシステム管理情報を参照して、既存のフォルダ名と重複しない新規フォルダ名を決定する。また、名前決定部４１３は、ファイル管理部４１２からファイル名の問い合わせを受け付け、ファイルシステム管理情報を参照して、指定されたフォルダ内で既存のファイル名と重複しない新規ファイル名を決定する。
【０１０１】
図９は、Ｗｉｋｉサーバのテーブル例を示す図である。
Ｗｉｋｉサーバ３００は、アカウントテーブル３２１を保持する。アカウントテーブル３２１は、複数のユーザそれぞれについてユーザＩＤとパスワードを対応付けて記憶する。パスワードは、漏洩防止のためハッシュ値化または暗号化して記憶しておいてもよい。
【０１０２】
また、Ｗｉｋｉサーバ３００は、ページテーブル３２２を保持する。ページテーブル３２２は、複数のページそれぞれについてページＩＤとページ名を対応付けて記憶する。ページＩＤは、ページを識別する内部の識別情報であり、Ｗｉｋｉサーバ３００が付与する。ページ名は、当該ページを作成したユーザが付与したタイトルである。
【０１０３】
図１０は、ファイルサーバのテーブル例を示す図である。
ファイルサーバ４００は、フォルダテーブル４２１を保持する。フォルダテーブル４２１は、複数のフォルダそれぞれについてフォルダＩＤとフォルダ名を対応付けて記憶する。フォルダＩＤは、フォルダを識別する内部の識別情報である。フォルダ名は、ファイルサーバ４００の外部に開示される名称であり、名前決定部４１３で決定される。
【０１０４】
フォルダ名は、編集中のページのページ名を含んでもよい。その場合、例えば、ページ名を含むフォルダ生成要求をクライアント１００からファイルサーバ４００に送信することが考えられる。１つのページのマークダウンテキストに複数のFenced Code Blockが記載され得る場合、フォルダ名はページ名と連番を含んでもよい。ファイルサーバ４００が生成するフォルダは階層構造をもっていてもよい。例えば、複数のページをグループ化し、グループに対して親フォルダを割り当て、グループ内の各ページに子フォルダを割り当てることが考えられる。クライアント１００やスマートフォン２００には、ファイルサーバ４００のホスト名とフォルダ名とを含むＵＲＬが通知されてもよい。
【０１０５】
また、ファイルサーバ４００は、ファイルテーブル４２２を保持する。ファイルテーブル４２２は、複数の画像ファイルそれぞれについてフォルダＩＤとファイル名を対応付けて記憶する。フォルダＩＤは、画像ファイルが格納されているフォルダを示す。ファイル名は、フォルダ内で画像ファイルを識別する名称である。
【０１０６】
ファイル名は、撮像日時またはアップロード日時を含んでもよい。撮像日時は、画像ファイルに属性情報として含まれていてもよいし、画像ファイルとは別にスマートフォン２００からファイルサーバ４００に通知してもよい。また、ファイル名は、フォルダ内でユニークな連番を含んでもよい。異なるフォルダに属する画像ファイルに対して同一のファイル名を付与することは許容される。
【０１０７】
次に、クライアント１００およびスマートフォン２００の処理手順を説明する。
図１１は、クライアント処理の手順例を示すフローチャートである。
（Ｓ３０）マークダウン解析部１１３は、マークダウンエディタ１１２が保持するマークダウンテキストの中からFenced Code Blockを検出し、検出したFenced Code Blockを示すノードを含むＨＡＳＴを生成する。プレビューア１１４は、ＨＡＳＴの中から「image」タグをもつFenced Code Blockを示すノードを検出する。
【０１０８】
（Ｓ３１）プレビューア１１４は、「image」タグをもつFenced Code Blockに基づいて、画像挿入アプリケーションである画像挿入制御部１１５を起動する。このとき、プレビューア１１４は、Fenced Code Block内のデータを画像挿入制御部１１５に渡す。
【０１０９】
（Ｓ３２）画像挿入制御部１１５は、プレビューア１１４から引数として受け付けたデータの中に、フォルダ名とファイル名とフラグの項目が存在するか判断する。ユーザは最初に画像挿入アプリケーションを起動するときにはマークダウンテキストに「```image」「```」とだけ記入すればよく、最初はデータは空であることが多い。フォルダ名とファイル名とフラグの項目が存在する場合はステップＳ３４に進み、フォルダ名とファイル名とフラグの項目の少なくとも１つが存在しない場合はステップＳ３３に進む。
【０１１０】
（Ｓ３３）画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴに含まれるノード内にフォルダ名とファイル名とフラグの項目を作成する。フォルダ名の初期値は空であり、ファイル名の初期値は空であり、フラグの初期値はfalseである。マークダウンエディタ１１２は、ＨＡＳＴに基づいてマークダウンテキストを更新する。すなわち、マークダウンエディタ１１２は、マークダウンテキストの「image」タグをもつFenced Code Blockの中に、フォルダ名とファイル名とフラグの項目を挿入する。
【０１１１】
（Ｓ３４）画像挿入制御部１１５は、ファイル名が空であるか判断する。ファイル名が空の場合はステップＳ３６に進み、ファイル名が空でない場合はステップＳ３５に進む。
（Ｓ３５）画像挿入制御部１１５は、プレビューア１１４から引数として受け付けたデータの中のフォルダ名およびファイル名を用いてファイルサーバ４００にアクセスし、ファイルサーバ４００から画像ファイルをダウンロードする。画像挿入制御部１１５は、画像ファイルが示す画像をプレビュー領域に表示する。
【０１１２】
（Ｓ３６）画像挿入制御部１１５は、フラグがtrueであるか判断する。フラグがtrueである場合、画像挿入制御部１１５はプレビュー領域にストップボタンを表示し、ステップＳ４２に進む。フラグがfalseである場合、画像挿入制御部１１５はプレビュー領域にスタートボタンを表示し、ステップＳ３７に進む。
【０１１３】
（Ｓ３７）画像挿入制御部１１５は、ユーザがスタートボタンを押下するのを待ち、スタートボタンの押下を検出するとステップＳ３８に進む。
（Ｓ３８）画像挿入制御部１１５は、フォルダ名が空であるか判断する。フォルダ名が空の場合はステップＳ３９に進み、フォルダ名が空でない場合はステップＳ４１に進む。
【０１１４】
（Ｓ３９）画像挿入制御部１１５は、ファイルサーバ４００にフォルダ生成要求を送信し、ファイルサーバ４００から生成されたフォルダのフォルダ名を受信する。
（Ｓ４０）画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴに含まれるノード内にフォルダ名を記録する。マークダウンエディタ１１２は、ＨＡＳＴに基づいてマークダウンテキストを更新する。すなわち、マークダウンエディタ１１２は、「image」タグをもつFenced Code Blockの中にフォルダ名を記録する。
【０１１５】
（Ｓ４１）画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴに含まれるノード内のフラグをtrueに更新する。マークダウンエディタ１１２は、ＨＡＳＴに基づいてマークダウンテキストを更新する。すなわち、マークダウンエディタ１１２は、「image」タグをもつFenced Code Blockの中のフラグをtrueに更新する。また、画像挿入制御部１１５は、プレビュー領域のスタートボタンをストップボタンに変更する。
【０１１６】
図１２は、クライアント処理の手順例を示すフローチャート（続き）である。
（Ｓ４２）画像挿入制御部１１５は、ファイルサーバ４００から受信したフォルダ名が示すフォルダを監視することを開始する。例えば、画像挿入制御部１１５は、フォルダ名を指定してファイルサーバ４００に定期的にアクセスし、フォルダに新規画像ファイルがアップロードされたか否かを判断する。
【０１１７】
（Ｓ４３）画像挿入制御部１１５は、Ｗｉｋｉサーバ３００に、ファイルサーバ４００から受信したフォルダ名を含む撮像開始通知を送信する。
（Ｓ４４）画像挿入制御部１１５は、監視しているフォルダ内に新規画像ファイルを検出し、ファイルサーバ４００から画像ファイルのファイル名を受信する。
【０１１８】
（Ｓ４５）画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴに含まれるノード内にファイル名を記録する。マークダウンエディタ１１２は、ＨＡＳＴに基づいてマークダウンテキストを更新する。すなわち、マークダウンエディタ１１２は、「image」タグをもつFenced Code Blockの中にファイル名を記録する。
【０１１９】
（Ｓ４６）画像挿入制御部１１５は、フォルダ名およびファイル名を用いてファイルサーバ４００にアクセスし、ファイルサーバ４００から画像ファイルをダウンロードする。例えば、画像挿入制御部１１５は、ファイルサーバ４００のホスト名とフォルダ名とファイル名とを含むＵＲＬを生成し、ＵＲＬをファイルサーバ４００に送信する。画像挿入制御部１１５は、画像ファイルが示す画像をプレビュー領域に表示する。ステップＳ４４〜Ｓ４６は、ストップボタンが押下されるまで継続される。
【０１２０】
（Ｓ４７）画像挿入制御部１１５は、ユーザがストップボタンを押下するのを待ち、ストップボタンの押下を検出するとステップＳ４８に進む。
（Ｓ４８）画像挿入制御部１１５は、マークダウン解析部１１３が保持するＨＡＳＴに含まれるノード内のフラグをfalseに更新する。マークダウンエディタ１１２は、ＨＡＳＴに基づいてマークダウンテキストを更新する。すなわち、マークダウンエディタ１１２は、「image」タグをもつFenced Code Blockの中のフラグをfalseに更新する。また、画像挿入制御部１１５は、プレビュー領域のストップボタンをスタートボタンに変更する。
【０１２１】
（Ｓ４９）画像挿入制御部１１５は、フォルダの監視を終了する。
（Ｓ５０）画像挿入制御部１１５は、Ｗｉｋｉサーバ３００に撮像終了通知を送信する。再びスタートボタンが押下された場合にはステップＳ３７以降が再実行される。
【０１２２】
なお、１つのページに対応するマークダウンテキストに、「image」タグをもつFenced Code Blockを複数記載することも可能である。その場合、Fenced Code Block毎にフォルダが生成され、Fenced Code Block毎にフォルダが監視される。Fenced Code Block毎にフラグを定義することで、スマートフォン２００がアップロード先のフォルダを切り替えることが容易となる。画像挿入制御部１１５は、同一ページに関する複数のFenced Code Blockのうち、高々１つのFenced Code Blockのフラグのみtrueにすることを許容し、２以上のFenced Code Blockのフラグを同時にtrueにしないようにしてもよい。また、画像挿入制御部１１５は、１つのFenced Code Blockのフラグがtrueである場合、他のFenced Code Blockのスタートボタンを押下してもフラグがtrueにならないようにしてもよいし、他のFenced Code Blockのスタートボタンを押下できないようにしてもよい。
【０１２３】
図１３は、スマートフォン処理の手順例を示すフローチャートである。
（Ｓ６０）状態制御部２１１は、ユーザからユーザＩＤとパスワードの入力を受け付け、ユーザＩＤとパスワードを用いてＷｉｋｉサーバ３００にログインする。ログインに失敗した場合、状態制御部２１１はログインに成功するまでステップＳ６０を繰り返す。ログインに成功すると、状態制御部２１１は待機状態に遷移する。
【０１２４】
（Ｓ６１）状態制御部２１１は、Ｗｉｋｉサーバ３００から撮像開始通知を受信する。
（Ｓ６２）状態制御部２１１は、撮像開始通知からフォルダ名を抽出する。撮像開始通知はフォルダのＵＲＬを含んでもよく、その場合にはＵＲＬを抽出してもよい。状態制御部２１１は、撮像終了通知を受信するまでの間、抽出したフォルダ名を保持しておく。
【０１２５】
（Ｓ６３）状態制御部２１１は、待機状態から撮像可能状態に遷移する。
（Ｓ６４）撮像制御部２１２は、ユーザ操作に応じて撮像部２０６を用いて静止画像または動画像を撮像し、静止画像または動画像を示す画像ファイルを生成する。
【０１２６】
（Ｓ６５）状態制御部２１１は、ステップＳ６２で抽出したフォルダ名が示すファイルサーバ４００のフォルダに画像ファイルをアップロードする。例えば、状態制御部２１１は、フォルダのＵＲＬを指定して画像ファイルをファイルサーバ４００に送信する。状態制御部２１１は、画像ファイルのファイル名を指定しなくてもよい。
【０１２７】
（Ｓ６６）状態制御部２１１は、Ｗｉｋｉサーバ３００から撮像終了通知を受信する。
（Ｓ６７）状態制御部２１１は、撮像可能状態から待機状態に遷移する。状態制御部２１１は保持しているフォルダ名を破棄してよい。状態制御部２１１がＷｉｋｉサーバ３００から再び撮像開始通知を受信した場合、ステップＳ６１以降が再実行される。次の撮像開始通知に含まれるフォルダ名は、前の撮像開始通知に含まれるフォルダ名と異なる可能性がある。状態制御部２１１は、ユーザ操作または時間経過に応じて、Ｗｉｋｉサーバ３００とのセッションを破棄するなどＷｉｋｉサーバ３００からログアウトしてもよい。
【０１２８】
第２の実施の形態の情報処理システムによれば、マークダウンテキストに所定のタグをもつFenced Code Blockを記載すると、クライアント１００のＷｅｂブラウザ上で画像挿入アプリケーションが起動される。すると、ファイルサーバ４００に専用のフォルダが用意され、フォルダ名が自動的にマークダウンテキストに挿入される。また、Ｗｉｋｉサーバ３００を介してクライアント１００と同じユーザが使用するスマートフォン２００にフォルダ名が通知され、スマートフォン２００の画像ファイルのアップロード先が自動的に設定される。スマートフォン２００からフォルダに画像ファイルがアップロードされると、ファイル名が自動的にマークダウンテキストに挿入され、クライアント１００のプレビュー領域に画像が表示される。よって、マークダウンテキストを編集するユーザの作業負担が軽減され、画像をページに迅速に挿入することが可能となる。
【０１２９】
また、マークダウンテキストはクライアント１００，１００−１，１００−２の間で同期されるため、クライアント１００によるマークダウンテキストの編集によって、クライアント１００−１，１００−２のプレビュー領域にも迅速に画像が表示される。
【０１３０】
なお、クライアント１００がFenced Code Blockのフラグをtrueに更新すると、クライアント１００−１，１００−２でもFenced Code Blockのフラグがtrueになり、クライアント１００−１，１００−２のユーザが所持するスマートフォンでも画像を撮像できる。ただし、クライアント１００−１，１００−２のユーザが画像を撮像しなくてもよい場合、Fenced Code BlockにユーザＩＤを記載することで、スタートボタンを押下したユーザなど特定のユーザのスマートフォンのみが画像を撮像できるようにすることもできる。
【符号の説明】
【０１３１】
１０  編集装置
１１  記憶部
１２，２２  通信部
１３  処理部
１４  テキスト
２０  端末装置
２１  撮像部
３０  ファイルサーバ
３１  フォルダ
３２  画像ファイル
【図１】
2019207527.tif 000003
【図２】
2019207527.tif 000004
【図３】
2019207527.tif 000005
【図４】
2019207527.tif 000006
【図５】
2019207527.tif 000007
【図６】
2019207527.tif 000008
【図７】
2019207527.tif 000009
【図８】
2019207527.tif 000010
【図９】
2019207527.tif 000011
【図１０】
2019207527.tif 000012
【図１１】
2019207527.tif 000013
【図１２】
2019207527.tif 000014
【図１３】
2019207527.tif 000015