(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-13
(45)【発行日】2024-06-21
(54)【発明の名称】プログラム、端末装置及び方法
(51)【国際特許分類】
G06F 8/33 20180101AFI20240614BHJP
【FI】
G06F8/33
(21)【出願番号】P 2020046367
(22)【出願日】2020-03-17
【審査請求日】2023-01-24
(73)【特許権者】
【識別番号】500033117
【氏名又は名称】株式会社MIXI
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】田那辺 輝
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2004-258848(JP,A)
【文献】特開2005-018458(JP,A)
【文献】特開平04-287122(JP,A)
【文献】特開昭55-129835(JP,A)
【文献】大竹 智也,Atom実践入門,第1版,日本,株式会社技術評論社,2016年08月25日,pp.85-87
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
(57)【特許請求の範囲】
【請求項1】
ユーザが操作する端末装置を制御するプログラムであって、
前記ユーザによって編集されるプログラムコードを表示部に表示し、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付け、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入し、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記プログラムコードに対する前記特定のコードの挿入後の前記カーソルの位置を移動させ
、
前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別に基づいて、前記特定のコードの挿入前の前記カーソルの位置を含む行、前記行の1以上前の行、及び、前記行の1以上後の行のいずれかにおける所定の位置に、前記特定のコードが挿入されるように、前記特定のコードの挿入位置を制御する、
プログラム。
【請求項2】
前記特定のコードは、前記指定情報を含み、
前記特定のコードから前記指定情報を削除したコードを、前記表示部に表示する
請求項1に記載のプログラム。
【請求項3】
前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別の少なくとも一つに基づいて、前記位置を含む行の先頭又は末尾で改行して前記特定のコードを挿入する、前記位置に前記特定のコードを挿入する、前記位置を含む関数の先頭、末尾又は引数の入力位置で改行して前記特定のコードを挿入する、又は、前記位置を含む関数の引数の入力位置に前記特定のコードを挿入する、
請求項
1又は請求項2に記載のプログラム。
【請求項4】
ユーザが操作する端末装置であって、
前記ユーザによって編集されるプログラムコードを表示する表示部と、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付ける入力受付部と、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入する挿入制御部と、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記特定のコードの挿入後の前記プログラムコード内の前記カーソルの位置を移動させるカーソル
制御部と、を備え
、
前記制御部は、前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別に基づいて、前記特定のコードの挿入前の前記カーソルの位置を含む行、前記行の1以上前の行、及び、前記行の1以上後の行のいずれかにおける所定の位置に、前記特定のコードが挿入されるように、前記特定のコードの挿入位置を制御する、
端末装置。
【請求項5】
ユーザが操作する端末装置において、
前記ユーザによって編集されるプログラムコードを表示するステップと、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付けるステップと、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入するステップと、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記特定のコードの挿入後の前記プログラムコード内の前記カーソルの位置を移動させるステップ
と、
前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別に基づいて、前記特定のコードの挿入前の前記カーソルの位置を含む行、前記行の1以上前の行、及び、前記行の1以上後の行のいずれかにおける所定の位置に、前記特定のコードが挿入されるように、前記特定のコードの挿入位置を制御するステップと、
を有する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、端末装置及び方法に関する。
【背景技術】
【0002】
近年、初等中等教育段階におけるプログラミング教育の推進について検討が進められている。また、このようなプログラミング教育を支援するシステムの検討も進められている。例えば、特許文献1では、ユーザが作成したプログラムコードの分析結果に基づいて、ユーザが間違いやすいソースコードに対するアドバイスを提示するシステムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、端末装置(例えば、パーソナルコンピュータ、キーボード、タブレット端末等)の操作等に対するユーザの習熟度は様々であるため、習熟度の低いユーザによる端末装置の操作負担が大きいという問題点がある。例えば、プログラミング教育を行う場合、端末装置に対する習熟度が低いユーザは、端末装置の表示画面においてカーソルを適切なプログラムコード内の位置に移動させるのに困難が伴う場合が多い。
【0005】
そこで、本発明は、ユーザによる端末装置の操作負担を軽減可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様に係るプログラムは、ユーザが操作する端末装置を制御するプログラムであって、前記ユーザによって編集されるプログラムコードを表示部に表示し、前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付け、前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入し、前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記プログラムコードに対する前記特定のコードの挿入後の前記カーソルの位置を移動させる。
【発明の効果】
【0007】
本発明によれば、ユーザによる端末装置の操作負担を軽減可能な技術を提供することを目的とする。
【図面の簡単な説明】
【0008】
【
図1】本実施形態に係る情報処理システムの構成の一例を示す図である。
【
図2】本実施形態に係る情報処理システムにおけるプログラムの編集画面の一例を示す図である。
【
図3】本実施形態に係る端末及びサーバのハードウェア構成例を示す図である。
【
図4】本実施形態に係る端末の機能ブロック構成例を示す図である。
【
図5】本実施形態に係るカーソル位置の制御の一例を示す図である。
【
図6】本実施形態に係る特定のコードの挿入制御の一例を示す図である。
【
図7】本実施形態に係る特定のコードの挿入制御の他の例を示す図である。
【
図8】本実施形態に係るカーソル位置の制御手順の一例を示すフローチャートである。
【
図9】本実施形態に係る挿入位置の制御手順の一例を示すフローチャートである。
【
図10】本実施形態に係る特定のコードの挿入制御の変更例を示す図である。
【発明を実施するための形態】
【0009】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0010】
(システム構成)
図1は、本実施形態に係る情報処理システムの構成の一例を示す図である。
図1に示す情報処理システム1は、1以上の端末10と、サーバ20とを備える。端末10及びサーバ20は、インターネットやイントラネット、無線LAN、移動通信等の通信ネットワークNを介して互いに通信可能に接続されている。端末10は、端末装置と呼ばれてもよく、サーバ20は、情報処理装置と呼ばれてもよい。
【0011】
端末10は、ユーザが利用する端末である。端末10のユーザは、例えば、プログラミング教育を受ける生徒、及び/又は、プログラミング教育を行う教師である。ユーザは、端末10を操作することで、プログラミング等の授業を受けたり、授業を行ったりことができる。端末10は、例えば、携帯電話(スマートフォンを含む)、タブレット端末、パーソナルコンピュータ等である。このように、端末10は、教育(例えば、プログラミング教育)用の端末であってもよい。
【0012】
サーバ20は、端末10に対して、プログラミング用の各コード(例えば、関数、引数等)を提供する。サーバ20は、1又は複数の物理的なサーバ等から構成されていてもよいし、ハイパーバイザー(hypervisor)上で動作する仮想的なサーバを用いて構成されていてもよいし、クラウドサーバを用いて構成されていてもよい。サーバ20は、プログラミング用の各コードを記憶する記憶部を有していてもよい。
【0013】
図1において、端末10は、プログラムコードに対する特定のコードの挿入要求を受け付けると、当該特定のコードをサーバ20から取得してもよい。例えば、端末10は、当該挿入要求を受け付けると、当該特定のコードの取得要求をサーバ20に送信し、サーバ20は、当該取得要求に応じて記憶部から検索された特定のコードを端末10に送信してもよい。当該特定のコードの取得要求は、当該特定のコードの識別情報を含んでもよい。
【0014】
なお、端末10は、プログラミング用の複数のコードのセットであるコードセットを予めサーバ20から受信し、後述する記憶装置12(記憶部と呼ばれてもよい)等に記憶させておいてもよい。この場合、端末10は、プログラムコードに対する特定のコードの挿入要求を受け付けると、記憶装置12に記憶された上記コードセットから、当該挿入要求に対応する特定のコードを選択してもよい。
【0015】
図2は、本実施形態に係る情報処理システムにおけるプログラムの編集画面(editor)の一例を示す図である。
図2に示すように、各端末10には、プログラムコードの編集用の画面(編集画面)と、当該プログラムコードに対して挿入される特定のコードの候補(ここでは、例えば、ExtensionCode関数、Extension2関数及び引数red)に対応するボタンが表示されてもよい。このように、特定のコードは、所定のプログラミング言語による定型文(例えば、予め定められた関数又は引数)等であってもよい。
【0016】
図2において、ユーザが、所定のボタンをタップする場合、当該所定のボタンに対応する特定のコードがプログラムコードの編集画面内のカーソルの現在位置に挿入されてもよい。例えば、ユーザが、ExtensionCode関数に対応するボタンをタップする場合、編集画面のカーソル位置(ここでは、3行目の最初)に、ExtensionCode関数を示す特定のコード(例えば、「ExtensionCode()」)が挿入されてもよい。なお、
図2は、例示にすぎず、各端末10のユーザがキーボードを用いて当該プログラムコードを編集することを妨げるものではない。また、本明細書において、タップは、押下、タッチ、クリック等と言い換えられてもよい。また、所定のボタンは、物理的なボタンであってもよいし、表示部101に表示された仮想的なボタンであってもよく、所定の領域等と呼ばれてもよい。
【0017】
このように、本実施形態に係る情報処理システム1では、各端末10は、ユーザによる所定の操作(例えば、所定のボタンのタップ)により、各端末10の編集画面上のプログラムコードに対する特定のコードの挿入要求を受け付け、当該挿入要求に応答して、当該特定のコードを所定位置に挿入してもよい。これにより、ユーザ自身がキーボートを用いてプログラムコードの全てを入力する必要がなく、スペルミス等を防止することができる。したがって、習熟度の低いユーザもプログラミングに親しむことができる。
【0018】
また、本実施形態に係る情報処理システム1では、各端末10は、特定のコードの挿入後のカーソルの位置(以下、「カーソル位置」ともいう)を指定する指定情報(例えば、後述する文字列「[CURSOR]」等)に基づいて、編集画面における特定のコードの挿入後のカーソル位置を移動させてもよい。これにより、端末10のユーザ自身が操作しなくとも、特定のコードの挿入後のカーソル位置を適切に移動させることができるので、ユーザによる端末10の操作負担を軽減できる。また、教育現場において、端末10の画面上の適切なカーソル位置をユーザに移動させる必要がないので、習熟度の低いユーザを指導する教師の指導負担を軽減できる。
【0019】
また、一般的な端末において特定のコードを挿入する場合、当該特定のコードの挿入前のカーソル位置(例えば、
図2では、3行目の最初)に特定のコードが挿入される。一方、挿入前のカーソル位置が適切ではない場合(例えば、
図2の2行目のSampleProgram2の途中等)、当該カーソル位置における特定のコードの挿入によりプログラムコード全体が破壊され、実行できなくなる恐れがある。
【0020】
そこで、本実施形態に係る情報処理システム1では、各端末10は、特定のコードの挿入前のカーソル位置及び当該特定のコードの種別(例えば、関数又は引数等)の少なくとも一つに基づいて、当該特定のコードの挿入位置を制御してもよい。これにより、当該特定のコードの挿入位置を制御できるので、誤った位置に特定のコードが挿入されるのを防止でき、習熟度の低いユーザを指導する教師の指導負担を軽減できる。
【0021】
(ハードウェア構成)
図3は、本実施形態に係る端末及びサーバのハードウェア構成例を示す図である。端末10及びサーバ20は、それぞれ、CPU(Central Processing Unit)、GPU(Graphical processing unit)等のプロセッサ11、メモリ、HDD(Hard Disk Drive)及び/又はSSD(Solid State Drive)等の記憶装置12、有線又は無線通信を行う通信IF(Interface)13、入力操作を受け付ける入力デバイス14、及び情報の出力を行う出力デバイス15を有する。入力デバイス14は、例えば、キーボード、タッチパネル、マウス及び/又はマイク等である。出力デバイス15は、例えば、ディスプレイ及び/又はスピーカ等である。
【0022】
後述する表示部101は、出力デバイス15により実現されてもよいし、出力デバイス15に加えてプロセッサ11が記憶装置12に記憶されたプログラムを実行することにより実現されてもよい。また、後述する入力受付部102は、入力デバイス14により実現されてもよいし、入力デバイス14に加えてプロセッサ11が記憶装置12に記憶されたプログラムを実行することにより実現されてもよい。また、後述する送受信部103は、通信IF13により実現されてもよいし、通信IF13に加えてプロセッサ11が記憶装置12に記憶されたプログラムを実行することにより実現されてもよい。
【0023】
また、後述する制御部104は、端末10のプロセッサ11が、記憶装置12に記憶されたプログラムを実行することにより実現することができる。また、当該プログラムは、記憶媒体に格納することができる。当該プログラムを格納した記憶媒体は、コンピュータ読み取り可能な非一時的な記憶媒体(Non-transitory computer readable medium)であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、USB(Universal Serial Bus)メモリ、又はCD-ROM(Compact Disc ROM)等の記憶媒体であってもよい。
【0024】
(機能ブロック構成)
図4は、本実施形態に係る端末の機能ブロック構成例を示す図である。
図4に示すように、端末10は、表示部101と、入力受付部102と、送受信部103と、制御部104と、を含む。
【0025】
表示部101は、後述する制御部104の制御に従い、プログラムの編集画面を表示する。具体的には、表示部101は、ユーザよって編集されるプログラムコードを表示してもよい。また、表示部101は、編集画面上の所定位置にカーソルを表示させてもよい。
【0026】
入力受付部102は、端末10のユーザからの入力を受け付ける。具体的には、入力受付部102は、表示部101に表示されたプログラムコードに対する特定のコードの挿入要求をユーザから受け付けてもよい。例えば、入力受付部102は、ユーザによる所定の操作(例えば、表示部101に表示された所定ボタンのタップ等)を検出すると、当該所定の操作に対応する特定のコードの挿入要求を受け付けてもよい。
【0027】
送受信部103は、後述する制御部104の制御に従い、サーバ20との通信を行う。具体的には、送受信部103は、入力受付部102により特定のコードの挿入要求が受け付けられる場合、当該特定のコードの取得要求をサーバ20に送信し、当該サーバ20から当該特定のコードを受信してもよい。又は、送受信部103は、プログラミング用の上記コードセットを、予めサーバ20から受信してもよい。当該サーバ20から受信されたコードセットは、記憶装置12に記憶されてもよい。入力受付部102により特定のコードの挿入要求が受け付けられる場合、記憶装置12に記憶されたコードセットの中から当該特定のコードが後述する制御部104の制御等によって参照されてもよい。
【0028】
制御部104は、端末10における種々の処理(例えば、表示部101による表示、送受信部103による送信、受信等)を制御する。制御部104は、カーソル制御部104A及び挿入制御部104Bの少なくとも一つを備えてもよい。
【0029】
カーソル制御部104Aは、表示部101に表示されるカーソルの位置を制御する。具体的には、カーソル制御部104Aは、特定のコードの挿入後のカーソル位置を指定する情報(以下、「指定情報」ともいう)に基づいて、当該特定のコードの挿入後のカーソル位置を移動させる。
【0030】
ここで、指定情報は、特定のコードの挿入後のカーソルの相対位置又は絶対位置を指定してもよい。当該指定情報は、挿入対象の特定のコードに埋め込まれてもよいし、当該特定のコードに付加されてもよいし、又は、当該特定のコードとは別に管理されてもよい。
【0031】
例えば、上記相対位置を指定する指定情報は、当該特定のコード内の埋め込まれた所定の要素であってもよく、当該所定の要素の位置が上記挿入後のカーソル位置と等しくともよい。当該所定の要素は、文字列、数字等どのような要素であってもよい。当該相対位置を指定する指定情報は、特定のコード内の何行目及び/又は何列目(何文字目)かを示す情報であってもよい。一方、上記絶対値を指定する指定情報は、例えば、編集画面における何行目及び/又は何列目(何文字目)かを示す情報であってもよい。
【0032】
図5は、本実施形態に係るカーソル位置の制御の一例を示す図である。
図5(a)及び(b)では、上記指定情報は、例えば、挿入対象の特定のコード内に埋め込まれた文字列「[CURSOR]」であるものとするが、上記の通りこれに限られない。また、
図5(a)及び(b)では、特定のコードの挿入前のカーソル位置に特定のコードが挿入されるものとするが、後述するように、特定のコードの挿入位置はこれに限られない。
【0033】
図5(a)及び(b)に示すように、カーソル制御部104Aは、指定情報が示す位置(すなわち、当該特定のコードに埋め込まれた文字列「[CURSOR]」の位置)に特定のコードの挿入後のカーソルを移動させてもよい。このとき、挿入制御部104Bは、当該指定情報(すなわち、特定のコードに埋め込まれた文字列「[CURSOR]」)を削除したコードを、表示部101に表示させてもよい。
【0034】
例えば、
図5(a)では、ExtensionCode関数の引数の入力位置に文字列「[CURSOR]」が埋め込まれている。このため、カーソル制御部104Aは、当該ExtensionCode関数を挿入後のカーソル位置を、当該文字列「[CURSOR]」の埋め込み位置に移動させてもよい。また、挿入制御部104Bは、当該ExtensionCode関数内に埋め込まれた文字列「[CURSOR]」を削除したコード「ExtensionCode()」を表示部101に表示させてもよい。
【0035】
また、
図5(b)では、Extension関数(「function Extension()」)の引数の入力位置内で改行して文字列「[CURSOR]」が埋め込まれている。このため、カーソル制御部104Aは、当該Extension関数を挿入後のカーソル位置を、当該文字列「[CURSOR]」の埋め込み位置に移動させてもよい。また、挿入制御部104Bは、当該Extension関数内に埋め込まれた文字列「[CURSOR]」を削除したコード「function Extension()」を表示部101に表示させてもよい。
【0036】
挿入制御部104Bは、表示部101に表示されたプログラムコードに対する特定のコードの挿入を制御してもよい。具体的には、挿入制御部104Bは、入力受付部102で受け付けられた挿入要求に応答して、表示部101に表示されたプログラムコードに対して特定のコードを挿入してもよい。
【0037】
また、挿入制御部104Bは、当該特定のコードの挿入前のカーソル位置及び当該特定のコードの種別の少なくとも一つに基づいて、当該特定のコードの挿入位置を制御してもよい。具体的には、当該特定のコードの挿入前のカーソル位置及び当該特定のコードの種別の少なくとも一つに基づいて、以下の(1)~(4)の少なくとも一つの方法により、特定のコードを挿入してもよい。
(1)挿入前のカーソル位置を含む行の先頭又は末尾で改行して特定のコードを挿入
(2)挿入前のカーソル位置に特定のコードを挿入
(3)挿入前のカーソル位置を含む関数の先頭、末尾又は引数の入力位置で改行して特定のコードを挿入
(4)挿入前のカーソル位置を含む関数の引数の入力位置に特定のコードを挿入
【0038】
図6は、本実施形態に係る特定のコードの挿入制御の一例を示す図である。
図6(a)及び(b)では、挿入対象の特定のコードの種別が関数(ここでは、ExtensionCode関数及びExtension2関数)である場合の上記方法(1)の一例が示される。一方、
図6(c)では、挿入対象の特定のコードの種別が引数(ここでは、red)である場合の上記方法(2)の一例が示される。
【0039】
図6(a)に示すように、特定のコードの挿入前のカーソル位置が当該挿入前のカーソル位置を含む行の先頭である場合、挿入制御部104Bは、当該先頭で改行して特定のコードを挿入してもよい。例えば、
図6(a)では、挿入前のカーソル位置が1行目の先頭であり、挿入対象の特定のコードがExtensionCode関数及びExtension2関数である。このため、1行目の先頭での改行によりExtensionCode関数及びExtension2関数が1行目及び2行目に挿入され、元の1、2行目のSampleProgram関数が3、4行目に移動される。
【0040】
図6(b)に示すように、特定のコードの挿入前のカーソル位置が当該挿入前のカーソル位置を含む行の先頭以外である(例えば、途中又は末尾である)場合、挿入制御部104Bは、当該特定のコードの種別が関数であるなら、当該行の末尾で改行して当該特定のコードを挿入してもよい。例えば、
図6(b)では、挿入前のカーソル位置が1行目の先頭以外であり、挿入対象の特定のコードがExtensionCode関数及びExtension2関数である。このため、1行目の末尾での改行によりExtensionCode関数及びExtension2関数が2行目及び3行目に挿入され、元の2行目のSampleProgram関数が4行目に移動される。
【0041】
一方、
図6(c)に示すように、特定のコードの挿入前のカーソル位置が当該挿入前のカーソル位置を含む行の先頭以外である(例えば、途中又は末尾である)場合、挿入制御部104Bは、挿入する特定のコードの種別が引数であるなら、改行なしで当該挿入前のカーソル位置に当該特定のコードを挿入してもよい。例えば、
図6(c)では、挿入前のカーソル位置が1行目の先頭以外であり、挿入対象の特定のコードが引数「red」である。このため、挿入前のカーソル位置にそのままredが挿入される。
【0042】
このように、挿入制御部104Bは、当該特定のコードの種別(例えば、関数又は引数等)に基づいて、当該特定のコードを挿入する際に所定位置での改行の有無を判断してもよい。具体的には、挿入制御部104Bは、特定のコードの種別が関数なら所定位置で改行してから当該特定のコードを挿入してもよい(
図6(a)及び(b)参照)。一方、挿入制御部104Bは、特定のコードの種別が引数なら所定位置での改行無しに当該特定のコードを挿入してもよい(
図6(c)参照)。
【0043】
また、挿入制御部104Bは、種別が関数である特定のコードを挿入する場合、当該特定のコードの挿入前のカーソル位置に基づいて、当該改行の位置を決定してもよい。具体的には、挿入制御部104Bは、当該挿入前のカーソル位置が当該カーソル位置を含む行又は関数の先頭であるなら、当該先頭で改行してもよい(
図6(a)参照)。一方、挿入制御部104Bは、当該挿入前のカーソル位置が当該カーソル位置を含む行又は関数の先頭以外であるなら、当該行又は関数の末尾で改行してもよい(
図6(b)参照)。
【0044】
一方、挿入制御部104Bは、種別が引数である特定のコードを挿入する場合、当該特定のコードの挿入前のカーソル位置に基づいて、当該特定のコードの挿入位置を決定してもよい(
図6(c)参照)。
【0045】
図7は、本実施形態に係る端末における特定のコードの挿入制御の他の例を示す図である。
図7(a)では、挿入対象の特定のコードの種別が引数(ここでは、red)である場合の上記方法(3)の一例が示される。
図7(b)では、挿入対象の特定のコードの種別が引数(ここでは、red)である場合の上記方法(4)の一例が示される。
【0046】
図7(a)に示すように、挿入制御部104Bは、種別が引数である特定のコードを挿入する場合であっても、挿入制御部104Bは、改行してから当該特定のコードを挿入してもよい。この場合、挿入制御部104Bは、当該特定のコードの挿入前のカーソル位置に基づいて当該改行の位置を決定してもよいし、又は、挿入前のカーソル位置に関係なく、当該カーソル位置を含む関数の引数の入力位置に、当該特定のコードを入力してもよい。
【0047】
例えば、
図7(a)では、挿入制御部104Bは、種別が引数である特定のコードを挿入する場合、当該特定のコードのカーソル位置がSampleProgram関数の引数の入力位置になくとも、当該引数の入力位置で改行して、当該特定のコードを挿入し、更に改行する。
【0048】
また、
図7(b)に示すように、挿入制御部104Bは、種別が引数である特定のコードを挿入する場合、挿入前のカーソル位置が当該カーソル位置を含む関数の引数の入力位置になくとも、当該引数の入力位置に当該特定のコードを挿入してもよい。このように、挿入制御部104Bは、特定のコードの種別(ここでは、引数)に基づいて、挿入前のカーソル位置が上記関数のどの位置であるかに関係なく、当該特定のコードの挿入位置を決定してもよい。
【0049】
以上において、挿入制御部104Bは、当該特定のコードの挿入前のカーソル位置及び当該特定のコードの種別の少なくとも一つに基づいて、当該特定のコードの挿入位置を制御するものとしたが、これに限られない。例えば、挿入制御部104Bは、挿入対象の特定のコードが特定の関数であるか否かに基づいて、当該特定のコードの挿入位置を制御してもよい。
【0050】
以上説明した端末10の各機能ブロックは、サーバ20に実装されることとしてもよい。つまり、本実施形態で端末10が行う各種処理は、端末10に代えてサーバ20で実行されることとしてもよい。
【0051】
(処理手順)
次に、情報処理システム1における処理手順について説明する。
【0052】
<カーソル位置の制御手順>
図8は、本実施形態に係るカーソル位置の制御手順の一例を示すフローチャートである。ステップS101で、入力受付部102は、表示部101に表示されたプログラムコードに対する特定のコードの挿入要求をユーザから受け付ける。
【0053】
ステップS102で、カーソル制御部104Aは、ステップS101で挿入要求が受け付けられた特定のコードの挿入後のカーソル位置を指定する指定情報(例えば、
図5(a)及び(b)では、当該特定のコードに埋め込まれた文字列「[CURSOR]」)を検出する。
【0054】
ステップS103で、カーソル制御部104Aは、上記挿入要求に応答して、表示部101に表示されたプログラムコードに対して特定のコードを挿入する。ステップS102で検出された指定情報が当該特定のコードに埋め込まれている場合、カーソル制御部104Aは、当該特定のコードから当該指定情報を削除して、上記プログラムコードに挿入してもよい。
【0055】
ステップS104で、カーソル制御部104Aは、ステップS102で検出された指定情報に基づいて、表示部101に表示されたプログラムコードに対する特定のコードの挿入後のカーソル位置を移動させる。
【0056】
ステップS105で、制御部104は、プログラムの編集処理を終了するか否かを判定する。編集処理を終了しない場合(ステップS105:No)、本動作は、ステップS101に戻る。
【0057】
図8に示すカーソル位置の制御手順によれば、端末10のユーザ自身が操作しなくとも、特定のコードの挿入後のカーソル位置を予め設定された適切な位置に移動させることができるので、ユーザによる端末10の操作負担を軽減できる。また、教育現場において、端末10の画面上の適切なカーソル位置をユーザに移動させる必要がないので、習熟度の低いユーザを指導する教師の指導負担を軽減できる。
【0058】
<挿入位置の制御手順>
図9は、本実施形態に係る挿入位置の制御手順の一例を示すフローチャートである。なお、また、
図9では、入力受付部102は、表示部101に表示されたプログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付けているものとする。
【0059】
ステップS201で、挿入制御部104Bは、当該特定のコードの挿入前のカーソル位置を検出する。
【0060】
ステップS202で、挿入制御部104Bは、ステップS201で検出された挿入前のカーソル位置が当該カーソル位置を含む行又は関数の先頭であるか否かを判定する。当該挿入前のカーソル位置が当該行又は関数の先頭である場合(ステップS202:Yes)、ステップS203で、挿入制御部104Bは、当該先頭で改行して特定のコードを挿入する(例えば、
図6(a))。
【0061】
一方、当該挿入前のカーソル位置が当該行又は関数の先頭ではない場合(ステップS202:No)、ステップS204で、挿入制御部104Bは、当該特定のコードの種別を判定する。当該特定のコードの種別が関数である場合(ステップS204:関数)、ステップS205で、挿入制御部104Bは、当該挿入前のカーソル位置を含む当該行又は関数の末尾で改行して当該特定のコードを挿入する(例えば、
図6(b))。
【0062】
当該特定のコードの種別が引数である場合(ステップS204:引数)、ステップS206で、挿入制御部104Bは、当該挿入前のカーソル位置に当該特定のコードを挿入する(例えば、
図6(c))。なお、ステップS206において、挿入制御部104Bは、当該挿入前のカーソル位置を含む行又は関数の所定位置(例えば、引数の入力位置)で改行して当該特定のコードを挿入してもよい(例えば、
図7(a))。或いは、ステップS206において、挿入制御部104Bは、当該挿入前のカーソル位置を含む行又は関数の所定位置(例えば、引数の入力位置)で該特定のコードを挿入してもよい(例えば、
図7(b))。
【0063】
図9に示す挿入位置の制御手順によれば、端末10のユーザ自身が操作しなくとも、特定のコードを適切な位置に挿入することができるので、ユーザによる端末10の操作負担を軽減できる。また、教育現場において、特定のコードの挿入時に適切な挿入位置にカーソルを移動させる必要がないので、習熟度の低いユーザを指導する教師の指導負担を軽減できる。
【0064】
なお、上記挿入位置の制御手順では、所定位置(例えば、行の先頭又は末尾、引数の入力位置等で)改行して特定のコードを挿入する場合、当該特定のコードは、挿入行の先頭から開始される例を説明した。例えば、
図6(a)、
図6(b)、
図7(a)では、挿入コードは、いずれも挿入行の先頭(1文字目)から開始されている。しかしながら、特定のコードの挿入行における開始位置は、1文字目に限られず、2文字目以降であってもよい。このような、ある行におけるあるコードの開始位置は、インデントと呼ばれてもよい。特定のコードの挿入行におけるインデントは、挿入前のカーソル位置を含む行(以下、改行対象行ともいう)と同様に合わせられてもよいし、又は、予め指定されてもよい。
【0065】
図10は、本実施形態に係る端末における特定のコードの挿入制御の変更例を示す図である。
図10では、特定のコードの挿入行における開始位置の制御について説明する。なお、
図10では、挿入前のカーソル位置が改行対象行の末尾である一例を示すが、これに限られず、どのような位置で改行をする場合にも適用可能である。
【0066】
図10に示すように、改行対象行におけるコード(ここでは、3行目の「Example()」)の開始位置は、インデントにより、当該行の先頭ではなく所定数の文字(ここでは、2文字)を空白又はタブスペースを用いてずらした位置(ここでは、3文字目)となっている。このため、挿入制御部104Bは、当該改行対象行における開始位置に倣って、特定のコードの挿入行(ここでは、4行目及び5行目)における特定のコードの開始位置を先頭から所定数の文字だけずらした位置(ここでは、3文字目)に決定してもよい。例えば、挿入制御部104Bは、空白又はタブスペースを用いて、特定のコードの挿入行における開始位置をずらすことができる。
【0067】
図10に示すように、改行対象行(例えば、3行目)に倣って、特定のコードの挿入行(例えば、4及び5行目)の開始位置を制御することにより、プログラムの縦列を自動的に調整できる。このため、ユーザの操作負担を軽減しながら、プログラムを見やすくすることができる。
【0068】
なお、
図10では、挿入制御部104Bは、特定のコードの挿入行における開始位置を、改行対象行のコードの開始位置に基づいて調整するが、これに限られない。挿入制御部104Bは、特定のコードの挿入行における開始位置を予め指定してもよい。例えば、挿入制御部104Bは、コード挿入定型文における開始位置を予めずらしておく(例えば、所定数の文字だけ空白又はタブスペースによりずらしておく)ことにより、特定のコードの挿入行における開始位置を指定してもよい。
【0069】
(まとめ)
以上説明した実施形態によれば、ユーザによる所定の操作(例えば、ボタンの押下又はタップ)により、編集画面上のプログラムコードに対する特定のコードの挿入要求を受け付ける端末10において、当該特定のコードの挿入後のカーソル位置及び当該特定のコードの挿入位置の少なくとも一つを適切に制御できる。したがって、ユーザによる端末10の操作負担を軽減できる。
【0070】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態で説明したフローチャート、シーケンス、実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【0071】
<付記>
<付記1>
ユーザ(生徒)が操作する端末装置を制御するプログラムであって、
前記ユーザによって編集されるプログラムコードを表示部に表示し、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付け、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入し、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記プログラムコードに対する前記特定のコードの挿入後の前記カーソルの位置を移動させる、
プログラム。
【0072】
付記1によれば、プログラムコードに対する特定のコードの挿入後のカーソルの位置を適切に移動させることができるので、ユーザによる端末装置の操作負担を軽減できる。
【0073】
<付記2>
前記特定のコードは、前記指定情報を含み、
前記特定のコードから前記指定情報を削除したコードを、前記表示部に表示する
付記1に記載のプログラム。
【0074】
付記2によれば、挿入対象の特定のコード内に埋め込まれた位置情報に基づいて、当該特定のコード挿入後のカーソルの位置を簡易に指定することができる。
【0075】
<付記3>
前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別の少なくとも一つに基づいて、前記特定のコードの挿入位置を制御する、
付記1又は付記2に記載のプログラム。
【0076】
付記3によれば、特定のコードの挿入前のカーソルの位置及び特定のコードの種別の少なくとも一つに基づいて、当該特定のコードの挿入位置を制御できるので、誤った位置に特定のコードが挿入されるのを防止でき、ユーザによる端末装置の操作負担を軽減できる。
【0077】
<付記4>
前記特定のコードの挿入前の前記カーソルの位置及び前記特定のコードの種別の少なくとも一つに基づいて、前記位置を含む行の先頭又は末尾で改行して前記特定のコードを挿入する、前記位置に前記特定のコードを挿入する、前記位置を含む関数の先頭、末尾又は引数の入力位置で改行して前記特定のコードを挿入する、又は、前記位置を含む関数の引数の入力位置に前記特定のコードを挿入する、
付記3に記載のプログラム。
【0078】
付記4によれば、挿入前のカーソルの位置及び特定のコードの種別の少なくとも一つに基づいて、特定のコードの挿入時の改行の有無と改行位置を制御できるので、当該挿入位置をより適切に決定でき、ユーザによる端末装置の操作負担を軽減できる。
【0079】
<付記5>
ユーザが操作する端末装置であって、
前記ユーザによって編集されるプログラムコードを表示する表示部と、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付ける入力受付部と、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入する挿入制御部と、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記特定のコードの挿入後の前記プログラムコード内の前記カーソルの位置を移動させるカーソル制御部と、
を備える端末装置。
【0080】
付記5によれば、プログラムコードに対する特定のコードの挿入後のカーソルの位置を適切に移動させることができるので、ユーザによる端末装置の操作負担を軽減できる。
【0081】
<付記6>
ユーザが操作する端末装置において、
前記ユーザによって編集されるプログラムコードを表示するステップと、
前記プログラムコードに対する特定のコードの挿入要求を前記ユーザから受け付けるステップと、
前記挿入要求に応答して、前記プログラムコードに対して前記特定のコードを挿入するステップと、
前記特定のコードの挿入後のカーソルの位置を指定する指定情報に基づいて、前記特定のコードの挿入後の前記プログラムコード内の前記カーソルの位置を移動させるステップと、
を有する方法。
【0082】
付記6によれば、プログラムコードに対する特定のコードの挿入後のカーソルの位置を適切に移動させることができるので、ユーザによる端末装置の操作負担を軽減できる。
【符号の説明】
【0083】
1…情報処理システム、10…端末、20…サーバ、N…通信ネットワーク、11…プロセッサ、12…記憶装置、13…通信IF、14…入力デバイス、15…出力デバイス、20…サーバ、101…表示部、102…入力受付部、103…送受信部、104…制御部、104A…カーソル制御部、104B…挿入制御部