(57)【要約】【課題】ユーザに対して請求される通信料を抑える。【解決手段】端末装置（１）の制御部（１０）は、ソフトウェアプログラム（１１１）を所定の単位で区切った部分プログラムごとに算出されたハッシュ値列を送信し、基準符号値列（２１２）と一致していないハッシュ値列がある場合、該ハッシュ値列に対応する部分プログラムと、ソフトウェアプログラム（１１１）の破損した部分を示すメモリブロック番号とを受信する。【選択図】図１
2018197993.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つの通信部と、少なくとも一つの制御部と、少なくとも一つの記憶部と、を備えた、ソフトウェアプログラムを実行する端末装置であって、
上記制御部は、
上記記憶部に記憶された上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、
上記誤り検出符号値列を、基準となる誤り検出符号値列である基準符号値列と一致するか否か判定させるために、上記通信部を介して、上記ソフトウェアプログラムを管理するサーバ装置へ送信し、
上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムと、上記ソフトウェアプログラムの破損した部分を示す区切り情報とを、上記サーバ装置から、上記通信部を介して受信し、
上記区切り情報に基づいて特定した部分を、上記部分プログラムに書き換えることを特徴とする端末装置。
【請求項２】
上記制御部は、
上記区切り情報に基づいて特定された部分が上記部分プログラムに書き換えられたとき、上記部分ごとに誤り検出符号値列を算出し、
該誤り検出符号値列を、基準となる誤り検出符号値列である基準符号値列と一致するか否か判定させるために、上記通信部を介して、上記サーバ装置へ送信することを特徴とする請求項１に記載の端末装置。
【請求項３】
少なくとも一つの通信部と、少なくとも一つの制御部と、少なくとも一つの記憶部と、を備えた、端末装置が実行するソフトウェアプログラムを管理するサーバ装置であって、
上記制御部は、
上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を、上記通信部を介して受信し、
基準となる上記誤り検出符号値列である基準符号値列を、上記記憶部から読み出し、
上記誤り検出符号値列に、上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを、上記通信部を介して、上記端末装置へ送信することを特徴とするサーバ装置。
【請求項４】
上記制御部は、上記誤り検出符号値列のすべてが、比較された上記基準符号値列と一致している場合、更新前後のソフトウェアプログラムの間の差分データを、上記通信部を介して、上記端末装置へ送信することを特徴とする請求項３に記載のサーバ装置。
【請求項５】
上記制御部は、上記部分プログラムとともに、該部分プログラムを示す区切り情報を、上記通信部を介して送信することを特徴とする請求項３または４に記載のサーバ装置。
【請求項６】
請求項１に記載の端末装置としてコンピュータを機能させるための制御プログラムであって、上記制御部としてコンピュータを機能させるための制御プログラム。
【請求項７】
端末装置が実行するソフトウェアプログラムを管理するサーバ装置の制御方法であって、
上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を受信する受信ステップと、
上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信する送信ステップと、を含むことを特徴とするサーバ装置の制御方法。
【請求項８】
ソフトウェアプログラムを実行する端末装置と、上記ソフトウェアプログラムを管理するサーバ装置とを含むシステムであって、
上記端末装置は、
上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、
上記誤り検出符号値列を上記サーバ装置へ送信し、
上記サーバ装置は、
上記端末装置から受信した上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信することを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアプログラムの実行と、該ソフトウェアプログラムの更新とを行う端末装置、および、端末装置が実行するソフトウェアプログラムを管理するサーバ装置に関する。
【背景技術】
【０００２】
近年、通信機能を有する端末装置（スマートフォンなど）において、通信機能を用いてソフトウェアプログラムを更新する技術がある。具体的には、端末装置は、通信機能を用いてソフトウェアプログラムの更新前後の差分データを受信し、ソフトウェアプログラムを更新する。これにより、ユーザや端末装置の販売店などに負担をかけることなく、ソフトウェアプログラムの更新を行うことができる。
【０００３】
上述のように差分データを用いてソフトウェアプログラムを更新する場合、更新前のソフトウェアプログラムが破損していると、ソフトウェアプログラムの更新は失敗してしまう。この問題を解決するために、下記特許文献１に記載の発明では、端末装置にて算出されたチェックサム値と、サーバにて保持している基準のチェックサム値とを比較して、これらが不一致である場合には、サーバから端末装置へファイルシステム全体を送信する。これにより、破損しているソフトウェアプログラムを書き換えることができるので、更新を確実に行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１５３１６０号公報（２０１５年８月２４日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のような従来技術では、端末装置にてソフトウェアプログラムが破損している場合、容量の大きいソフトウェアプログラムをサーバから端末装置へ送信しなければならない。例えば、スマートフォンのファイルシステムのソフトウェアプログラムの場合、容量は１ＧＢ以上になる場合がある。このため、端末装置のユーザに対して請求される通信料が高額になってしまうという問題がある。また、容量の大きなデータを送信することにより、サーバの負荷が増大するという問題がある。
【０００６】
本発明の一態様は、上記の問題を鑑みてなされたものであり、ユーザに対して請求される通信料を抑える端末装置、および、自装置への負荷を抑えるサーバ装置を実現することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様に係る端末装置は、少なくとも一つの通信部と、少なくとも一つの制御部と、少なくとも一つの記憶部と、を備えた、ソフトウェアプログラムを実行する端末装置であって、上記制御部は、上記記憶部に記憶された上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、上記誤り検出符号値列を、基準となる誤り検出符号値列である基準符号値列と一致するか否か判定させるために、上記通信部を介して、上記ソフトウェアプログラムを管理するサーバ装置へ送信し、上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムと、上記ソフトウェアプログラムの破損した部分を示す区切り情報とを、上記サーバ装置から、上記通信部を介して受信し、上記区切り情報に基づいて特定した部分を、上記部分プログラムに書き換える。
【０００８】
また、上記の課題を解決するために、本発明の一態様に係るサーバ装置は、少なくとも一つの通信部と、少なくとも一つの制御部と、少なくとも一つの記憶部と、を備えた、端末装置が実行するソフトウェアプログラムを管理するサーバ装置であって、上記制御部は、上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を、上記通信部を介して受信し、基準となる上記誤り検出符号値列である基準符号値列を、上記記憶部から読み出し、上記誤り検出符号値列に、上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを、上記通信部を介して、上記端末装置へ送信する。
【０００９】
また、上記の課題を解決するために、本発明の一態様に係るサーバ装置の制御方法は、端末装置が実行するソフトウェアプログラムを管理するサーバ装置の制御方法であって、上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を受信する受信ステップと、上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信する送信ステップと、を含む。
【００１０】
また、上記の課題を解決するために、本発明の一態様に係るシステムは、ソフトウェアプログラムを実行する端末装置と、上記ソフトウェアプログラムを管理するサーバ装置とを含むシステムであって、上記端末装置は、上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、上記誤り検出符号値列を上記サーバ装置へ送信し、上記サーバ装置は、上記端末装置から受信した上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信する。
【発明の効果】
【００１１】
本発明の一態様によれば、ユーザに対して請求される通信料を抑えることができるという効果を奏する。
【００１２】
また、本発明の一態様によれば、サーバ装置の負荷を抑えることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係る更新システムに含まれる端末装置およびサーバ装置の要部構成の一例を示すブロック図である。
【図２】図１に示す更新システムの概要を示す図である。
【図３】図１に示す更新システムが実行する更新処理の一態様を示す図である。
【図４】図１に示す更新システムが実行する更新処理の一態様を示す図であり、図３とは別の態様を示す図である。
【図５】図１に示す更新システムが実行する更新処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
〔実施形態１〕
以下、本発明の実施形態１について、図１から図５に基づいて詳細に説明する。
【００１５】
（更新システム１００の概要）
まず、図２に基づいて、本実施形態に係る更新システム１００（システム）の概要について説明する。図２は、更新システム１００の概要を示す図である。
【００１６】
本実施形態に係る更新システム１００は、図示のように、端末装置１およびサーバ２（サーバ装置）を含む。また、図示のように、端末装置１とサーバ２とは、通信ネットワーク３を介して通信可能となっている。本実施形態では、端末装置１は、図示のようにスマートフォンであるものとして説明するが、端末装置１はスマートフォンに限定されない。例えば、端末装置１は、フィーチャーフォン、タブレット端末、パーソナルコンピュータ、ゲーム機などであってもよい。通信ネットワーク３は、例えばインターネットであってもよいし、基地局を介した電話網であってもよい。
【００１７】
更新システム１００は、端末装置１が実行するソフトウェアプログラムを更新する更新処理を行う。このソフトウェアプログラムは、例えば、ファイルシステムのソフトウェアプログラムであり、該ファイルシステムは端末装置１のＮＡＮＤ型ＦｌａｓｈＲＯＭ（Read Only Memory）に構成されている。端末装置１は、ソフトウェアプログラムを更新するために、ソフトウェアプログラムを管理するサーバ２から、更新前後のソフトウェアプログラムの差分データを受信する。更新システム１００は差分データを送受信することにより、更新後のソフトウェアプログラム自体を送受信する場合と比べてデータのサイズを抑えることができる。
【００１８】
（更新処理の詳細）
次に、図３および図４を参照して、更新処理の詳細について説明する。図３は、更新処理の一態様を示す図であり、図４は、更新処理について、図３とは別の態様を示す図である。
【００１９】
端末装置１は、更新処理を開始すると、自装置に記憶しているソフトウェアプログラムの誤り検出符号値列を算出する。具体的には、端末装置１は、ソフトウェアプログラムを所定の単位（例えば４キロバイトごと）で区切り、各部分ごとに誤り検出符号値列を算出する。以降、各部分をメモリブロックと称する。なお、本実施形態の端末装置１は、誤り検出符号値列としてハッシュ値列を算出するものとして説明するが、誤り検出符号値列はこの例に限定されない。
【００２０】
端末装置１は、図３に示すように、算出した各ハッシュ値列に、算出元のメモリブロックを示すメモリブロック番号を対応付ける。また、端末装置１は、算出したハッシュ値列に、ソフトウェアプログラムのバージョン情報を対応付ける。そして、端末装置１は算出したハッシュ値列をサーバ２へ送信する。
【００２１】
サーバ２は、端末装置１からハッシュ値列を受信すると、該ハッシュ値列の基準（比較対象）である基準符号値列を読み出す。具体的には、サーバ２は、受信したハッシュ値列とバージョン情報が一致する基準符号値列を読み出す。基準符号値列は、ソフトウェアプログラムが作成（または更新）されたとき、ソフトウェアプログラムの作成者のコンピュータにて算出された誤り検出符号値列（ハッシュ値列）である。換言すれば、基準符号値列は、破損していないソフトウェアプログラムから算出された誤り検出符号値列である。
【００２２】
サーバ２は、受信したハッシュ値列と基準符号値列とを比較する。図３の例は、受信したハッシュ値列と基準符号値列とがすべて一致している例である。換言すれば、端末装置１に記憶されているソフトウェアプログラムが破損していない例である。この場合、端末装置１は差分データを用いてソフトウェアプログラムを更新することができる。このため、サーバ２は、図３に示すように、差分データを端末装置１へ送信する。
【００２３】
一方、図４の例は、受信したハッシュ値列に、基準符号値列と一致しないものがある例である。具体的には、図４に示すように、メモリブロック番号として「００２」が対応付けられているハッシュ値列と基準符号値列とが不一致となっている。換言すれば、端末装置１に記憶されているソフトウェアプログラムは、メモリブロック番号が００２である部分が破損している。この場合、端末装置１は差分データを用いてソフトウェアプログラムを更新することができない。この場合、サーバ２は、図４に示すように、メモリブロック番号が００２であるソフトウェアプログラムの部分（図示の部分プログラム）と、メモリブロック番号「００２」とを端末装置１へ送信する。換言すれば、サーバ２は、基準符号値列と一致しない誤り検出符号値列に対応する部分プログラムを端末装置１へ送信する。
【００２４】
これにより、端末装置１は、ソフトウェアプログラムの破損している部分を修復することができる。この修復により、端末装置１に記憶されているソフトウェアプログラムは、破損していない更新前のソフトウェアプログラムとなる。換言すれば、端末装置１に記憶されているソフトウェアプログラムは、差分データを用いた更新処理が可能なソフトウェアプログラムとなる。なお、ＮＡＮＤ型ＦｌａｓｈＲＯＭにファイルシステムが構成されている場合、経時変化によってソフトウェアプログラムが破損することが知られているため、ハッシュ値列と基準符号値列とを比較して、ソフトウェアプログラムの破損の有無を特定する上記の構成は、特に有効である。
【００２５】
（端末装置１の要部構成）
次に、図１を参照して、端末装置１の要部構成について説明する。図１は、更新システム１００に含まれる端末装置１およびサーバ２の要部構成の一例を示すブロック図である。なお、端末装置１およびサーバ２において、本発明との関連が薄い部材については、図示を省略している。本発明との関連が薄い部材とは、例えば、端末装置１において通話機能を実現するための部材などである。また、図示を省略した部材については、ここでの説明を省略する。
【００２６】
端末装置１は、図示のように、制御部１０、記憶部１１、通信部１２、および操作受付部１３を備えている。制御部１０は、端末装置１の各部を統括して制御する。また、制御部１０は、更新実行部１０１、符号値列算出部１０２、通信制御部１０３、処理判定部１０４、および修復実行部１０５を含んでいる。これらの部材の詳細については後述する。記憶部１１は、端末装置１が使用する各種データを記憶する。記憶部１１は、少なくとも、ソフトウェアプログラム１１１と、ソフトウェアプログラム１１１のバージョンを示すバージョン情報１１２とを対応付けて記憶している。通信部１２は、外部装置との情報の送受信を行う。外部装置は例えばサーバ２であるが、通信部１２はサーバ２以外の装置と情報の送受信を行ってもよい。操作受付部１３はユーザの操作を受け付ける。操作受付部１３の典型例は、表示部（不図示）と一体となったタッチパネルであるが、この例に限定されない。操作受付部１３は例えば、ユーザの押下操作を受け付けるボタンであってもよいし、表示部と別体のタッチパネルであってもよい。また、操作受付部１３は、端末装置１と着脱可能なマウスやキーボードであってもよい。
【００２７】
更新実行部１０１は、ソフトウェアプログラム１１１の更新処理を実行する。本実施形態に係る更新処理は、操作受付部１３が、ユーザによる更新開始操作を受け付けたときに開始される。なお、更新開始操作とは、例えば、表示部に表示されたＵＩに対するタッチ操作であるが、この例に限定されない。
【００２８】
更新実行部１０１は、通信制御部１０３へ指示して、定期的にソフトウェアプログラム１１１の更新の有無をサーバ２へ確認させる。具体的には、更新実行部１０１は、記憶部１１からバージョン情報１１２を読み出し、通信制御部１０３へ出力する。更新実行部１０１は、通信制御部１０３からソフトウェアプログラムの更新がある旨を通知されると、表示部に上記ＵＩを表示させるなどして、ユーザに更新開始操作の入力を促す。
【００２９】
更新実行部１０１は、操作受付部１３から、更新開始操作を受け付けた旨の信号を取得すると、更新処理を開始する。更新実行部１０１は、符号値列算出部１０２へハッシュ値列の算出指示を出力する。また、更新実行部１０１は、処理判定部１０４から差分データを取得すると、差分データを用いてソフトウェアプログラム１１１を更新する。なお、差分データを用いたソフトウェアプログラム１１１の更新については、既存の技術を用いることができるため、ここでの説明を省略する。
【００３０】
符号値列算出部１０２は、ソフトウェアプログラム１１１について、メモリブロックごとのハッシュ値列を算出する。なお、ハッシュ値列の算出については、既存の技術を用いることができるため、ここでの詳細な説明を省略する。符号値列算出部１０２は、更新実行部１０１または修復実行部１０５からの指示に従って、ハッシュ値列を算出する。そして、符号値列算出部１０２は、算出した各ハッシュ値列にメモリブロック番号を対応付ける。符号値列算出部１０２は、算出したハッシュ値列、メモリブロック番号、およびバージョン情報１１２を通信制御部１０３へ出力する。
【００３１】
通信制御部１０３は、外部装置との情報の送受信を制御する。通信制御部１０３は、送信制御部１０３１および受信制御部１０３２を含んでいる。送信制御部１０３１は、外部装置との情報の送信を制御する。具体的には、送信制御部１０３１は、符号値列算出部１０２からハッシュ値列およびメモリブロック番号を取得すると、記憶部１１からバージョン情報１１２を読み出し、ハッシュ値列およびメモリブロック番号に対応付ける。そして、送信制御部１０３１は、通信部１２を制御して、これらの情報をサーバ２へ送信する。また、送信制御部１０３１は、更新実行部１０１からバージョン情報１１２を取得すると、該バージョン情報１１２をサーバ２へ送信し、ソフトウェアプログラム１１１の更新の有無を通知させる。受信制御部１０３２は、外部装置からの情報の受信を制御する。具体的には、受信制御部１０３２は、サーバ２から差分データ、または、サーバ２に記憶されているソフトウェアプログラム２１１の一部である部分プログラムを受信すると、これらの情報を処理判定部１０４へ出力する。また、受信制御部１０３２は、ソフトウェアプログラム１１１の更新の有無を示す通知を受信すると、該通知を更新実行部１０１へ出力する。
【００３２】
処理判定部１０４は、取得した情報に基づいて、ソフトウェアプログラムの更新を行うか、または、ソフトウェアプログラムの修復を行うかを判定する。具体的には、処理判定部１０４は、差分データを取得した場合、ソフトウェアプログラムの更新を行うと判定する。そして、処理判定部１０４は、差分データを更新実行部１０１へ出力する。また、処理判定部１０４は、部分プログラムを取得した場合、ソフトウェアプログラムの修復を行うと判定する。そして、処理判定部１０４は、部分プログラムと、該部分プログラムとともに取得したメモリブロック番号とを修復実行部１０５へ出力する。
【００３３】
修復実行部１０５は、破損したソフトウェアプログラム１１１の修復を行う。具体的には、修復実行部１０５は、部分プログラムおよびメモリブロック番号を取得すると、該メモリブロック番号が示すソフトウェアプログラム１１１の部分を、部分プログラムに書き換える（換言すれば、部分プログラムで上書きする）。そして、修復実行部１０５は、符号値列算出部１０２へハッシュ値列の算出指示を出力する。これにより、端末装置１からサーバ２への算出されたハッシュ値列の送信、および、サーバ２でのハッシュ値列と基準符号値列との比較が、再度行われる。この場合、破損したソフトウェアプログラム１１１は修復されているので、ハッシュ値列と基準符号値列とはすべて一致することとなる。よって、端末装置１は、上記の比較の結果、差分データを取得し、ソフトウェアプログラム１１１の更新処理を行うことができる。よって、端末装置１は、ソフトウェアプログラム１１１を修復した後、自動的にソフトウェアプログラム１１１の更新を行うことができる。
【００３４】
なお、修復実行部１０５は、符号値列算出部１０２へ算出指示を出力しなくてもよい。この場合、修復後のソフトウェアプログラム１１１の更新処理は、例えば、端末装置１がソフトウェアプログラムの更新がある旨の通知をサーバ２から受信したときに行われる。
【００３５】
（サーバ２の要部構成）
次に、図１を参照して、サーバ２の要部構成について説明する。サーバ２は、図示のように、制御部２０、記憶部２１、および通信部２２を備えている。制御部２０は、サーバ２の各部を統括して制御する。また、制御部２０は、通信制御部２０１および送信データ決定部２０２を含んでいる。これらの部材の詳細については後述する。記憶部２１は、サーバ２が使用する各種データを記憶する。記憶部２１は、ソフトウェアプログラム２１１と、ソフトウェアプログラム２１１から算出された基準符号値列２１２と、ソフトウェアプログラム２１１のバージョンを示すバージョン情報２１３とを対応付けて記憶している。また、記憶部２１は、ソフトウェアプログラム２１１における差分データ２１４を記憶している。なお、基準符号値列２１２は、メモリブロックごとに算出された複数の基準符号値列それぞれに、メモリブロック番号を対応付けたものである（図３、４参照）。また、バージョン情報２１３は、端末装置１に記憶されているバージョン情報１１２と同一の情報である。すなわち、ソフトウェアプログラム２１１は、端末装置１に記憶されているソフトウェアプログラム１１１と同じバージョンである。通信部２２は、外部装置との情報の送受信を行う。外部装置は例えば端末装置１であるが、通信部２２は端末装置１以外の装置と情報の送受信を行ってもよい。
【００３６】
なお、記憶部２１は特に限定されないが、ＮＡＮＤ型ＦｌａｓｈＲＯＭなどの、経時変化によってソフトウェアプログラム２１１が破損する可能性がある記憶デバイスを用いないことが好ましい。
【００３７】
通信制御部２０１は、外部装置との情報の送受信を制御する。通信制御部２０１は、送信制御部２０１１および受信制御部２０１２を含んでいる。受信制御部２０１２は、外部装置からの情報の受信を制御する。具体的には、受信制御部２０１２は、端末装置１からハッシュ値列、メモリブロック番号、およびバージョン情報１１２の組み合わせ、または、バージョン情報１１２のみを受信すると、これらの情報を送信データ決定部２０２へ出力する。送信制御部２０１１は、外部装置との情報の送信を制御する。具体的には、送信制御部２０１１は、送信データ決定部２０２から差分データ２１４、または、部分プログラムおよびメモリブロック番号を取得すると、通信部２２を制御して、これらの情報を端末装置１へ送信する。また、送信制御部２０１１は、送信データ決定部２０２から取得した、ソフトウェアプログラム１１１の更新の有無を示す通知を、通信部２２を制御して端末装置１へ送信する。
【００３８】
送信データ決定部２０２は、差分データ２１４および部分プログラムのいずれを端末装置１へ送信するかを決定する。送信データ決定部２０２は、符号値列比較部２０２１を含んでいる。符号値列比較部２０２１は、端末装置１から受信したハッシュ値列と、各ハッシュ値列に対応する基準符号値列とを比較する。具体的には、符号値列比較部２０２１は、ハッシュ値列とともに受信したバージョン情報１１２と一致するバージョン情報２１３を特定し、該バージョン情報２１３に対応付けられている基準符号値列２１２を読み出す。そして、符号値列比較部２０２１は、対応付けられているメモリブロック番号が一致するハッシュ値列と基準符号値列とを比較する。
【００３９】
送信データ決定部２０２は、すべてのハッシュ値列が、メモリブロック番号が一致する基準符号値列と同じである場合、記憶部２１から差分データ２１４を読み出し、通信制御部２０１へ出力する。一方、送信データ決定部２０２は、メモリブロック番号が一致する基準符号値列と異なるハッシュ値列がある場合、記憶部２１のソフトウェアプログラム２１１のうち、該ハッシュ値列に対応付けられたメモリブロック番号が示す部分を読み出す。そして、送信データ決定部２０２は、読み出した部分（部分プログラム）と、該部分プログラムを示すメモリブロック番号とを通信制御部２０１へ出力する。
【００４０】
また、送信データ決定部２０２は、通信制御部２０１からバージョン情報１１２のみを取得すると、記憶部２１に記憶されている最新のバージョン情報が、バージョン情報１１２と一致するか否かを判定する。一致する場合、送信データ決定部２０２は、ソフトウェアプログラム１１１の更新が無い旨の通知を生成し、通信制御部２０１へ出力する。一方、記憶部２１に記憶されている最新のバージョン情報が、バージョン情報１１２と一致しない場合、送信データ決定部２０２は、ソフトウェアプログラム１１１の更新がある旨の通知を生成し、通信制御部２０１へ出力する。
【００４１】
（更新処理の流れ）
次に、図５を参照して、更新システム１００が実行する更新処理の流れについて説明する。図５は、更新処理の流れの一例を示すフローチャートである。
【００４２】
まず、端末装置１の更新実行部１０１は、更新処理の開始を待機している。具体的には、操作受付部１３は、更新開始操作の入力待ちの状態となっている（ステップＳ１、以下、「ステップ」を省略）。操作受付部１３が更新開始操作を受け付けると（Ｓ１でＹＥＳ）、操作受付部１３から更新実行部１０１へ更新開始操作を受け付けた旨の信号が出力され、更新実行部１０１は更新処理を開始する。そして、更新実行部１０１は、符号値列算出部１０２へハッシュ値列の算出指示を出力する。
【００４３】
符号値列算出部１０２は、メモリブロックごとのハッシュ値列を算出する（Ｓ２）。符号値列算出部１０２は、算出した各ハッシュ値列にメモリブロック番号を対応付けて、通信制御部１０３へ出力する。
【００４４】
続いて、通信制御部１０３の送信制御部１０３１は、算出されたハッシュ値列をサーバ２へ送信する（Ｓ３）。具体的には、送信制御部１０３１は、取得したハッシュ値列およびメモリブロック番号に、記憶部１１から読み出したバージョン情報を対応付ける。そして、送信制御部１０３１は、通信部１２を制御してこれらの情報をサーバ２へ送信する。
【００４５】
サーバ２の通信制御部２０１の受信制御部２０１２は、端末装置１から送信されたハッシュ値列の受信を待機している状態となっている（Ｓ１１、受信ステップ）。受信制御部２０１２は、ハッシュ値列を受信すると（Ｓ１１でＹＥＳ）、送信データ決定部２０２へ出力する。
【００４６】
続いて、送信データ決定部２０２の符号値列比較部２０２１は、受信したハッシュ値列と、記憶部２１に記憶されている基準符号値列２１２とを比較する（Ｓ１２）。具体的には、符号値列比較部２０２１は、記憶部２１から基準符号値列２１２を読み出し、受信制御部２０１２から取得した各ハッシュ値列を、メモリブロック番号が一致する基準符号値列と比較する。ハッシュ値列すべてが、比較した基準符号値列と一致する場合（Ｓ１２でＹＥＳ）、送信データ決定部２０２は、記憶部２１から差分データ２１４を読み出し、通信制御部２０１へ出力する。そして、通信制御部２０１の送信制御部２０１１は、取得した差分データ２１４を端末装置１へ送信する（Ｓ１３）。
【００４７】
一方、ハッシュ値列に、比較した基準符号値列と一致しないものがある場合（Ｓ１２でＮＯ）、送信データ決定部２０２は、一致しないハッシュ値列から特定される部分プログラムを記憶部２１から読み出す。具体的には、送信データ決定部２０２は、該ハッシュ値列に対応付けられているメモリブロック番号が示す、ソフトウェアプログラム２１１の部分を読み出す。そして、送信データ決定部２０２は、部分プログラムと、該部分プログラムを示すメモリブロック番号とを通信制御部２０１へ出力する。そして、通信制御部２０１の送信制御部２０１１は、取得した部分プログラムおよびメモリブロック番号を端末装置１へ送信する（Ｓ１４、送信ステップ）。
【００４８】
端末装置１の通信制御部１０３の受信制御部１０３２は、サーバ２から送信された差分データ２１４または部分プログラムの受信を待機している状態となっている（Ｓ４）。受信制御部１０３２は、差分データ２１４または部分プログラムを受信すると（Ｓ４でＹＥＳ）、処理判定部１０４へ出力する。
【００４９】
処理判定部１０４は、受信制御部１０３２が受信したデータが、差分データ２１４であるか否かを判定する（Ｓ５）。差分データ２１４であると判定した場合（Ｓ５でＹＥＳ）、処理判定部１０４は、取得した差分データ２１４を更新実行部１０１へ出力する。更新実行部１０１は、取得した差分データに基づいてソフトウェアプログラム１１１を更新する（Ｓ６）。以上で、更新処理は終了する。
【００５０】
一方、受信制御部１０３２が受信したデータが、差分データ２１４でない、すなわち、部分プログラムであると判定した場合（Ｓ５でＮＯ）、処理判定部１０４は、取得した部分プログラムとメモリブロック番号とを修復実行部１０５へ出力する。修復実行部１０５は、取得した部分プログラムを用いてソフトウェアプログラム１１１を修復する（Ｓ７）。具体的には、修復実行部１０５は、ソフトウェアプログラム１１１のうち、メモリブロック番号が示す部分を、取得した部分プログラムに書き換える。そして、修復実行部１０５は、符号値列算出部１０２へハッシュ値列の算出指示を出力する。これにより、更新処理はＳ２へ戻る。
【００５１】
〔実施形態２〕
本発明の他の実施形態について説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
【００５２】
本実施形態に係る更新実行部１０１は、通信制御部１０３からソフトウェアプログラムの更新がある旨を通知されたとき、更新処理を開始して、符号値列算出部１０２へハッシュ値列の算出指示を出力する。すなわち、本実施形態に係る端末装置１は、ユーザによる更新開始操作を受け付けることなく、自動的に更新処理を開始する。
【００５３】
〔実施形態３〕
端末装置１およびサーバ２の制御ブロック（特に制御部１０および制御部２０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【００５４】
後者の場合、端末装置１およびサーバ２は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭまたは記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００５５】
〔まとめ〕
本発明の態様１に係る端末装置（端末装置１）は、少なくとも一つの通信部（通信部１２）と、少なくとも一つの制御部（制御部１０）と、少なくとも一つの記憶部（記憶部１１）と、を備えた、ソフトウェアプログラム（ソフトウェアプログラム１１１）を実行する端末装置であって、上記制御部は、上記記憶部に記憶された上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、上記誤り検出符号値列を、基準となる誤り検出符号値列である基準符号値列（基準符号値列２１２）と一致するか否か判定させるために、上記通信部を介して、上記ソフトウェアプログラムを管理するサーバ装置へ送信し、上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムと、上記ソフトウェアプログラムの破損した部分を示す区切り情報とを、上記サーバ装置から、上記通信部を介して受信し、上記区切り情報に基づいて特定した部分を、上記部分プログラムに書き換える。
【００５６】
上記の構成によれば、端末装置は、ソフトウェアプログラムの更新処理中に、ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、基準符号値列と一致するか否か判定させるためにサーバ装置へ送信する。そして、基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する部分プログラムと、ソフトウェアプログラムの破損した部分を示す区切り情報とをサーバ装置から受信する。これにより、基準符号値列と一致していない誤り検出符号値列がある場合、ソフトウェアプログラム全体をサーバ装置から受信する端末装置に比べて、受信するデータの容量が小さくなる。よって、端末装置のユーザに対して請求される通信料を抑えることができる。
【００５７】
また、誤り検出符号値列と基準符号値列とが一致しないとは、端末装置が有するソフトウェアプログラムにおいて、該誤り検出符号値列に対応する部分が破損していることを示す。上記の構成によれば、基準符号値列と一致していない誤り検出符号値列に対応する部分プログラム、換言すれば、サーバ装置にて管理されている、破損していないソフトウェアプログラムにおける部分プログラムを受信するので、端末装置は、ソフトウェアプログラムを更新可能な状態に修復することができる。なお、誤り検出符号値列は、例えばハッシュ値列であるがこの例に限定されない。
【００５８】
また、上記の構成によれば、端末装置は、部分プログラムとともに受信した区切り情報が示すソフトウェアプログラムの部分を、受信した部分プログラムに書き換える。これにより、端末装置は、ソフトウェアプログラムにおける破損した部分を適切に修復し、更新が可能な状態とすることができる。
【００５９】
本発明の態様２に係る端末装置は、上記態様１において、上記制御部は、上記区切り情報に基づいて特定された部分が上記部分プログラムに書き換えられたとき、上記部分ごとに誤り検出符号値列を算出し、該誤り検出符号値列を、基準となる誤り検出符号値列である基準符号値列と一致するか否か判定させるために、上記通信部を介して、上記サーバ装置へ送信してもよい。
【００６０】
上記の構成によれば、端末装置は、ソフトウェアプログラムの一部が部分プログラムに書き換えられたとき、再度誤り検出符号値列を算出し、算出した誤り検出符号値列をサーバ装置へ送信する。これにより、端末装置は、プログラムが修復された後、すぐにプログラムの更新処理を行うことができる。
【００６１】
本発明の態様３に係るサーバ装置（サーバ２）は、少なくとも一つの通信部（通信部２２）と、少なくとも一つの制御部（制御部２０）と、少なくとも一つの記憶部（記憶部２１）と、を備えた、端末装置（端末装置１）が実行するソフトウェアプログラム（ソフトウェアプログラム２１１）を管理するサーバ装置であって、上記制御部は、上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を、上記通信部を介して受信し、基準となる上記誤り検出符号値列である基準符号値列を、上記記憶部から読み出し、上記誤り検出符号値列に、上記基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを、上記通信部を介して、上記端末装置へ送信する。
【００６２】
上記の構成によれば、サーバ装置は、端末装置から受信した複数の誤り検出符号値列のうち、対応する基準符号値列と一致しないものがある場合、該一致しない誤り検出符号値列に対応する部分プログラムを端末装置へ送信する。誤り検出符号値列と基準符号値列とが一致しないとはすなわち、端末装置のソフトウェアプログラムにおいて、誤り検出符号値列が示す部分が破損していることを示す。つまりサーバ装置は、端末装置が有する該ソフトウェアプログラムの破損している部分を特定することができ、該部分のみを端末装置に送ることができる。これにより、ソフトウェアプログラム全体を送信するサーバ装置に比べて、容量の小さいデータを送信するので、自装置の負担を抑えることができる。
【００６３】
本発明の態様４に係るサーバ装置は、上記態様３において、上記制御部は、上記誤り検出符号値列のすべてが、対応する上記基準符号値列と一致している場合、更新前後のソフトウェアプログラムの間の差分データを、上記通信部を介して、上記端末装置へ送信してもよい。
【００６４】
上記の構成によれば、サーバ装置は、受信した複数の誤り検出符号値列のすべてが、対応する基準符号値列と一致している場合、差分データを送信する。これにより、サーバ装置は、端末装置のソフトウェアプログラムが破損していない場合、差分データを送信して端末装置にソフトウェアプログラムを更新させることができる。
【００６５】
本発明の態様５に係るサーバ装置は、上記態様３または４において、上記制御部は、上記部分プログラムとともに、該部分プログラムを示す区切り情報を、上記通信部を介して送信してもよい。
【００６６】
上記の構成によれば、サーバ装置は、部分プログラムとともに、該部分プログラムを示す区切り情報を送信する。これにより、サーバ装置は、送信された部分プログラムが、ソフトウェアプログラムのどの部分に相当するのかを端末装置に特定させることができる。
【００６７】
本発明の態様６に係るサーバ装置の制御方法は、端末装置が実行するソフトウェアプログラムを管理するサーバ装置の制御方法であって、上記端末装置にて上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに算出された誤り検出符号値列を受信する受信ステップ（ステップＳ１１）と、上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信する送信ステップ（ステップＳ１４）と、を含む。
【００６８】
上記の構成によれば、サーバ装置の制御方法は、態様３に係るサーバ装置と同様の作用効果を奏する。
【００６９】
本発明の態様７に係るシステム（更新システム１００）は、ソフトウェアプログラムを実行する端末装置（端末装置１）と、上記ソフトウェアプログラムを管理するサーバ装置（サーバ２）とを含むシステムであって、上記端末装置は、上記ソフトウェアプログラムの更新処理が開始されたとき、上記ソフトウェアプログラムを所定の単位で区切ったときの各部分である部分プログラムごとに誤り検出符号値列を算出し、上記誤り検出符号値列を上記サーバ装置へ送信し、上記サーバ装置は、上記端末装置から受信した上記誤り検出符号値列に、基準となる上記誤り検出符号値列である基準符号値列と一致していない誤り検出符号値列がある場合、該一致していない誤り検出符号値列に対応する上記部分プログラムを上記端末装置へ送信する。
【００７０】
上記の構成によれば、システムは、態様１に係る端末装置、および、態様３に係るサーバ装置と同様の作用効果を奏する。
【００７１】
本発明の各態様に係る端末装置およびサーバ装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記端末装置および上記サーバ装置が備える各部（ソフトウェア要素）として動作させることにより上記端末装置および上記サーバ装置をコンピュータにて実現させる端末装置およびサーバ装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【００７２】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。
【符号の説明】
【００７３】
１  端末装置
２  サーバ（サーバ装置）
１０  制御部
１１  記憶部
１２  通信部
２０  制御部
２１  記憶部
２２  通信部
１００  更新システム（システム）
１１１  ソフトウェアプログラム
２１１  ソフトウェアプログラム
２１２  基準符号値列
Ｓ１１  受信ステップ
Ｓ１４  送信ステップ
【図１】
2018197993.tif 000003
【図２】
2018197993.tif 000004
【図３】
2018197993.tif 000005
【図４】
2018197993.tif 000006
【図５】
2018197993.tif 000007