"コンピューティングシステムが、複数のスレッドを使用して表計算アプリケーションのテーブル内の一組のターゲット列のそれぞれの列に対して全体的な最大の列幅を決定する列調整プロセスを実行するステップであって、前記一組のターゲット列は少なくとも1つの列を含む、ステップと、前記一組のターゲット列のそれぞれの列が前記列に対する前記全体的な最大の列幅に基づく幅を有するよう、前記表計算アプリケーションのテーブルをリフローするステップとを含むことを特徴とする方法。前記列調整プロセスを実行するステップは、前記表計算アプリケーションのテーブル内の行を複数のワークユニットに分割するステップであって、前記幅評価スレッドのそれぞれが前記複数のワークユニットから1つまたは複数のワークユニットを選択し、前記1つまたは複数の選択されたワークユニット内のそれぞれの列についてローカルの最大の列幅を決定する、ステップと、前記一組のターゲット列のそれぞれの列について、前記列に対する前記ローカルの最大の列幅のうちの最大値を識別することによって、前記全体的な最大の列幅を識別するステップとを含むことを特徴とする請求項1に記載の方法。前記列調整プロセスを実行するステップは、前記複数のワークユニット内のワークユニットの数に基づき、および処理システム内の処理ユニットの数に基づき幅評価スレッドの適切な数を決定するステップを含み、幅評価スレッドの数は、幅評価スレッドの前記適切な数に等しいことを特徴とする請求項2に記載の方法。前記列調整プロセスを実行するステップは、前記一組のターゲット列内のセルの数が下限を超えるかどうかを判定するステップと、前記一組のターゲット列内のセルの前記数が前記下限を超えない場合、単一のスレッドを使用して、前記全体的な最大の列幅を決定するステップとを含むことを特徴とする請求項1に記載の方法。前記幅評価スレッドのそれぞれは、デバイスコンテキストを作成し、前記幅評価スレッドのそれぞれは、前記幅評価スレッドによって作成された前記デバイスコンテキストを使用して、前記一組のターゲット列内のセル内のテキストの幅を評価することを特徴とする請求項1に記載の方法。前記表計算アプリケーションのテーブルのセル内の値は、1つまたは複数の外部データソース内のデータから導出され、前記方法は、前記表計算アプリケーションのテーブルの前記セル内の前記値が前記1つまたは複数の外部データソースから更新されたときに、前記列調整プロセスを起動するステップをさらに含むことを特徴とする請求項1に記載の方法。前記コンピューティングシステムが、ユーザーから1つまたは複数の列選択入力を受け取るステップをさらに含み、前記1つまたは複数の列選択入力は前記一組のターゲット列の列を示すことを特徴とする請求項1に記載の方法。1つまたは複数の処理ユニットを備える処理システムと、表計算アプリケーションを表現するコンピュータ可読命令を格納するデータストレージシステムであって、前記コンピュータ可読命令は、前記1つまたは複数の処理ユニットによって実行されたときに、前記表計算アプリケーションを実現することを前記コンピューティングシステムに行わせ、前記表計算アプリケーションは、複数のスレッドを使用して表計算アプリケーションのテーブル内の、少なくとも1つの行を含む一組のターゲット行のそれぞれの行について、前記一組のターゲット行内のセルの数が下限を超えたときに、全体的な最大の行の高さを決定する行調整プロセスを実行し、前記一組のターゲット行のそれぞれの列が前記行に対する前記全体的な最大の行の高さに基づく高さを有するよう、前記表計算アプリケーションのテーブルをリフローするように構成される、データストレージシステムとを備えることを特徴とするコンピューティングシステム。前記表計算アプリケーションは、前記行調整プロセスの一部として前記表計算アプリケーションのテーブル内の列を複数のワークユニットに分割し、前記高さ評価スレッドのそれぞれが前記複数のワークユニットから1つまたは複数のワークユニットを選択し、前記1つまたは複数の選択されたワークユニット内のそれぞれの行についてローカルの最大の行の高さを決定し、前記ワークユニットのそれぞれは、余りのワークユニットを除いて、同じ数の列を含み、さらに前記一組のターゲット行のそれぞれの行について、前記行に対する前記ローカルの最大の行の高さのうちの最大値を識別することによって、前記全体的な最大の行の高さを識別することを特徴とする請求項8に記載のコンピューティングシステム。前記表計算アプリケーションは、前記行調整プロセスの一部として前記複数のワークユニット内のワークユニットの数に基づき、および前記処理システム内の前記処理ユニットの数に基づき高さ評価スレッドの適切な数を決定し、高さ評価スレッドの数は、高さ評価スレッドの前記適切な数に等しいことを特徴とする請求項9に記載のコンピューティングシステム。前記表計算アプリケーションは、前記行調整プロセスの一部として前記一組のターゲット行内のセルの数が下限を超えるかどうかを判定し、前記一組のターゲット行内のセルの数が前記下限を超えない場合、単一のスレッドを使用して、前記全体的な最大の行の高さを決定することを特徴とする請求項8に記載のコンピューティングシステム。前記高さ評価スレッドのそれぞれは、デバイスコンテキストを作成し、前記デバイスコンテキストを使用して前記一組のターゲット行内のセル内のテキストの高さを評価することを特徴とする請求項8に記載のコンピューティングシステム。前記表計算アプリケーションは、表示システムを使用して、前記表計算アプリケーションのユーザーに対して前記表計算アプリケーションのテーブルを表示することを特徴とする請求項8に記載のコンピューティングシステム。前記一組のターゲット行は、前記表計算アプリケーションのテーブル内の行の全部ではなく一部を含むことを特徴とする請求項8に記載のコンピューティングシステム。コンピュータ可読命令を格納するコンピュータ可読データ記憶媒体であって、前記コンピュータ可読命令は、コンピューティングシステムの処理システム内の1つまたは複数の処理ユニットによって実行されたときに、前記コンピューティングシステムにグラフィカルユーザーインターフェースに表計算アプリケーションのテーブルを表示させるステップと、前記表計算アプリケーションのユーザーから1つまたは複数の列選択入力を受け取るステップであって、前記1つまたは複数の列選択入力は前記表計算アプリケーションのテーブル内の一組のターゲット列を示し、前記一組のターゲット列は前記表計算アプリケーションのテーブル内の1つまたは複数の列を示す、ステップと、前記一組のターゲット列内のセルの数が下限を超えるかどうかを判定するステップと、前記一組のターゲット列内のセルの前記数が前記下限を超えない場合、単一のスレッドを使用して、前記ターゲット列に対する全体的な最大の列幅を決定するステップと、前記一組のターゲット列内のセルの前記数が前記下限を超える場合、前記表計算アプリケーションのテーブル内の行を複数のワークユニットに分割するアクションであって、前記ワークユニットのそれぞれは、余りのワークユニットを除いて、場合により同じ数の行を含む、アクションと、前記複数のワークユニット内のワークユニットの数に基づき、および前記処理システム内の前記処理ユニットの数に基づき幅評価スレッドの適切な数を決定するアクションと、複数の幅評価スレッドを起こすアクションであって、前記複数の幅評価スレッド内の幅評価スレッドの数は幅評価スレッドの前記適切な数に等しく、前記複数の幅評価スレッド内のそれぞれの幅評価スレッドは前記複数のワークユニット内の残りのワークユニットがなくなるまでデバイスコンテキストを作成するアクションと、前記複数のワークユニットのうちの1つまたは複数のワークユニットを選択するアクションと、前記デバイスコンテキストのうちの1つを使用して前記1つまたは複数の選択されたワークユニット内のセル内のテキストの幅を計算するアクションと、前記1つまたは複数の選択されたワークユニット内の前記セル内のテキストの前記幅を使用して、前記一組のターゲット列のそれぞれの列のローカルの最大の列幅を決定するアクションと、を実行するアクションと、前記幅評価スレッドによって決定された前記ローカルの最大の列幅を使用して、前記一組のターゲット列に対する前記全体的な最大の列幅を決定するアクションとを実行するステップと、前記一組のターゲット列のそれぞれの列が前記列に対する前記全体的な最大の列幅に基づく幅を有するよう、前記表計算アプリケーションのテーブルをリフローし、それにより、前記表計算アプリケーションのテーブルを前記表計算アプリケーションのユーザーに対して表示させるステップとを実行するように構成された表計算アプリケーションを実現させることを特徴とするコンピュータ可読データ記憶媒体。図1は、例示的なコンピューティングシステム100を示すブロック図である。コンピューティングシステム100は、1つまたは複数のコンピューティングデバイスを備えるシステムである。本明細書で使用されているように、コンピューティングデバイスは、情報処理する物理的な有形のデバイスである。さまざまな実施形態において、コンピューティングシステム100は、さまざまな種類のコンピューティングデバイスを備える。例えば、コンピューティングシステム100は、1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピューティングデバイス、スマートフォン、スタンドアロンのサーバーデバイス、ブレードサーバーデバイス、メインフレームコンピュータ、スーパーコンピュータ、および/または他の種類のコンピューティングデバイスを備えることができる。コンピューティングシステム100が複数のコンピューティングデバイスを備える実施形態では、コンピューティングシステム100内のコンピューティングデバイスは、インターネットまたはローカルエリアネットワークなどの通信ネットワークを介してさまざまなロケーションに分散させることができる。図1の例に示されているように、コンピューティングシステム100は、データストレージシステム102、処理システム104、および表示システム106を備える。他の実施形態では、コンピューティングシステム100は、図1の例に示されているよりも多い、または少ないコンポーネントを備えることは理解されるであろう。さらに、図1は、簡単に考察できるようにコンピューティングシステム100を簡略化された形態で示していることも理解されるであろう。データストレージシステム102は、1つまたは複数のコンピュータ可読データ記憶媒体を備えるシステムである。コンピュータ可読データ記憶媒体は、揮発性または不揮発性の形態でデータを格納することができる物理的デバイスまたは製造品である。いくつかの実施形態では、データストレージシステム102は、非一時的である1つまたは複数のコンピュータ可読データ記憶媒体を備える。コンピュータ可読データ記憶媒体のいくつかの種類の例として、RAMランダムアクセスメモリ、ROMリードオンリーメモリ、光ディスク例えば、CD-ROM、DVD、BluRayディスク、HDDVDディスクなど、磁気ディスク例えば、ハードディスクドライブ、フロッピィディスクなど、ソリッドステートメモリデバイス例えば、フラッシュメモリドライブ、EEPROM、フィールドプログラマブルゲートアレイ、ならびに他の種類の非一時的デバイスおよび製造品が挙げられる。データストレージシステム102が複数のコンピュータ可読データ記憶媒体を備えるいくつかの実施形態では、コンピュータ可読データ記憶媒体は、さまざまな地理的位置にわたって分散される。データストレージシステム102は、表計算アプリケーション108を表現するコンピュータ可読命令を格納する。いくつかの実施形態では、これらのコンピュータ可読命令は、表計算アプリケーションであるMICROSOFT登録商標EXCEL登録商標または別の表計算アプリケーションの一バージョンを表現する。データストレージシステム102が複数のコンピュータ可読データ記憶媒体を備えるいくつかの実施形態では、表計算アプリケーション108を表現するコンピュータ可読命令は、コンピュータ可読データ記憶媒体の2つまたはそれ以上に分散される。データストレージシステム102が複数のコンピュータ可読データ記憶媒体を備える他の実施形態では、表計算アプリケーション108を表現するコンピュータ可読命令は、コンピュータ可読データ記憶媒体の1つのみに格納される。処理システム104は、複数の処理ユニット110Aから110N処理ユニット110と総称するを備えるシステムである。さまざまな実施形態において、処理システム104は、さまざまな数の処理ユニットを備える。例えば、処理システム104は、2個、4個、8個、16個、32個、64個、または他の個数の処理ユニットを備えることができる。処理ユニット110のそれぞれは、物理的集積回路である。処理ユニット110のそれぞれは、他の処理ユニット110と非同期にコンピュータ可読命令を実行することができる。その結果、これらの処理ユニット110は、コンピュータ可読命令を互いに並列に独立して実行することができる。表示システム106は、ユーザーに対して情報を表示するために処理システム104によって使用されるシステムである。さまざまな実施形態では、表示システム106は、ユーザーに対してさまざまな形で情報を表示する。例えば、いくつかの実施形態では、表示システム106は、グラフィックスインターフェースおよびモニターを備える。処理システム104内の処理ユニット110は、表計算アプリケーション108を表現するコンピュータ可読命令を実行する。表計算アプリケーション108を表現するコンピュータ可読命令は、処理ユニット110によって実行されたときに、表計算アプリケーション108を実現することをコンピューティングシステム100に行わせる。表計算アプリケーション108を使用することで、ユーザーは計算アプリケーションのテーブルを表示し、操作することができる。表計算アプリケーションのテーブルは、1つまたは複数の行および1つまたは複数の列に編成された表形式のデータセットである。例えば、表計算アプリケーションのテーブルは、表計算アプリケーション内の完全なテーブル、テーブルの一部、ピボットテーブル、または表計算アプリケーションの別の種類のテーブルとすることができる。表計算アプリケーションのテーブルは、さまざまな種類のデータを収めることができる。例えば、表計算アプリケーションのテーブルは、売上高データ、在庫品目データ、軍事データ、課金データ、統計データ、人口データ、人口統計データ、財務データ、医療データ、スポーツデータ、科学データ、または表の形で提示することができる他の種類のデータを収めることができる。表計算アプリケーションのテーブル内のそれぞれのセルは、値を有することができる。セル内の値は、さまざまなデータ型を有することができる。例えば、特定の列または特定の行内のすべてのセルは、整数、実数、浮動小数点数、英数字テキスト文字列、日付、金額、論理値、などであってよい。ユーザーが表計算アプリケーション108を操作しているときに、表計算アプリケーション108は、表示システム106を使用している表計算アプリケーション108のユーザーに対して表計算アプリケーションのテーブルをグラフィカルユーザーインターフェースに表示させる。表計算アプリケーション108は、1つまたは複数の異なる種類のイベントに応答して、調整プロセスを実行し、表計算アプリケーションのテーブル内の一組のターゲット列のそれぞれの列に対する全体的な最大の列幅を決定する。列調整プロセスでは、いくつかの表計算アプリケーションのテーブル内の列に対する全体的な最大の列幅を決定するために複数の幅評価スレッドを使用する。列調整プロセスでは、他の表計算アプリケーションのテーブル内の列に対する全体的な最大の列幅を決定するために単一の幅評価スレッドを使用する。列に対する全体的な最大の列幅は、列内の任意のセル内の値の最も広いテキスト表現の幅である。表計算アプリケーション108は、その一組のターゲット列のそれぞれの列がその列に対する全体的な最大の列幅に基づく幅を有するよう、表計算アプリケーションのテーブルをリフローする。表計算アプリケーション108が、表計算アプリケーションのテーブルをリフローするときに、表計算アプリケーション108は、表示システム106に、リフローされた表計算アプリケーションのテーブルを表示させる。ターゲット列は、表計算アプリケーション108が列調整プロセスを実行する表計算アプリケーションのテーブル内の列である。この一組のターゲット列は、表計算アプリケーションのテーブル内の少なくとも1つの列を含む。つまり、この一組のターゲット列は、表計算アプリケーションのテーブル内の単一列を含むことができるか、または表計算アプリケーションのテーブル内の複数の列を含むことができる。さらに、いくつかの場合において、この一組のターゲット列は、表計算アプリケーションのテーブル内の列のすべてを含むことができる。さらに、いくつかの実施形態において、表計算アプリケーション108のユーザーは、その一組のターゲット列の列を選択することができる。言い換えると、表計算アプリケーション108は、ユーザーから1つまたは複数の列選択入力を受け取るということである。列選択入力は、ターゲット列を示す。例えば、表計算アプリケーションのテーブルは、列AからFまでを備える。この例では、ユーザーは、列調整プロセスを列A、C、およびDに関して実行すべきであることを示す1つまたは複数の列選択入力を表計算アプリケーション108に送る。いくつかの実施形態では、この一組のターゲット列は、ユーザーによってその幅が手動で設定された列を含まない。さまざまな実施形態では、列の幅は、さまざまな形で列に対する全体的な最大の列幅に基づくものとしてよい。例えば、いくつかの実施形態では、列の幅は、列に対する全体的な最大の列幅に等しい。他の実施形態では、列の幅は、列に対する全体的な最大の列幅にバッファの幅を加えた値に等しい。バッファは、隣接する列のセル内の値の間を視覚的に仕切る、セル内の値のいずれかの側に関するスペースを備える。バッファは、列のヘッダ内の制御要素をレンダリングするのに必要なスペースを含むこともできる。このようなコントロール要素としては、例えばオートフィルタードロップダウンボタンが挙げられる。バッファの幅は、典型的には小さい例えば、いずれかのサイズ上で5ピクセル未満。以下の例は、列調整プロセスの効果を示す。この例では、表計算アプリケーションのテーブル内の1つの列は、3つのセルを備える。この例では、第1のセルは、幅54ピクセルのテキストを含み、第2のセルは、幅63ピクセルのテキストを含み、第3のセルは、幅34ピクセルのテキストを含む。この例では、列は、最初に幅50ピクセルである。列調整プロセスは、列の幅が、63ピクセルにバッファの幅が加えられた値となるように列の幅を調整する。したがって、列調整プロセスを実行した結果、ユーザーは第2のセル内において完全な値を見ることができる。前段落の例では、3つのセルを含む単一の列のみを備える非常に単純な表計算アプリケーションのテーブルを説明している。多くの状況において、実際の表計算アプリケーションのテーブルは、数千行、数千列、および数百万セルを備えうる。その結果、セルのそれぞれにおけるテキストの幅を順次評価する作業は、時間およびリソースを多量に消費する可能性がある。複数の幅評価スレッドを使用することによって、大きな表計算アプリケーションのテーブル上で列調整プロセスを実行するのに要する時間は、幅評価スレッドの数に比例して短縮されうる。本明細書の大部分においてセル内のテキストの列幅の調整およびテキストの幅の評価を説明しているが、行調整プロセスも、説明されている列調整プロセスと類似の方法で動作しうる。本明細書の説明は、列の説明が行の説明に置き換えられ、幅の説明が高さの説明に置き換えられる場合に行調整プロセスにも当てはまる。表計算アプリケーション108は、行調整プロセスを使用して、表計算アプリケーションのテーブル内のそれぞれの行がその行に対する全体的な最大の行の高さに基づく高さを有するよう、表計算アプリケーションのテーブルをリフローする。行調整プロセスでは、表計算アプリケーションのテーブル内のそれぞれの行に対する全体的な最大の行の高さを決定するために複数の高さ評価スレッドを使用する。行に対する全体的な最大の行の高さは、行内の任意のセル内の最も高いテキストの高さである。図2は、コンピューティングシステム100の例示的な代替的実施形態を示すブロック図である。図2の例に示されているように、コンピューティングシステム100は、図1に示されている例示的な実施形態のように、データストレージシステム102および処理システム104を備える。しかし、図1に示されている例示的な実施形態とは異なり、図2に示されているコンピューティングシステム100の例示的な代替的実施形態は、表示システム106の代わりにネットワークインターフェース200を有する。ネットワークインターフェース200を使用することで、コンピューティングシステム100はネットワーク204を介してクライアントデバイス202からデータを送受信することができる。ネットワーク204は、コンピューティングデバイスならびにコンピューティングシステム100およびクライアントデバイス202の間の通信を円滑にするリンクを備える通信ネットワークである。さまざまな実施形態において、ネットワーク204は、さまざまな種類のコンピューティングデバイスを備える。例えば、ネットワーク204は、ルーター、スイッチ、モバイルアクセスポイント、ブリッジ、ハブ、侵入検出デバイス、ストレージデバイス、スタンドアロンのサーバーデバイス、ブレードサーバーデバイス、センサー、デスクトップコンピュータ、ファイアウォールデバイス、ラップトップコンピュータ、ハンドヘルドコンピュータ、携帯電話、および他の種類のコンピューティングデバイスを備えることができる。さまざまな実施形態において、ネットワーク204は、さまざまな種類のリンクを備える。例えば、ネットワーク204は、有線および/またはワイヤレスリンクを備えることができる。さらに、さまざまな実施形態において、ネットワーク204は、さまざまなスケールで実装される。例えば、ネットワーク204は、1つまたは複数のローカルエリアネットワークLAN、メトロポリタンエリアネットワーク、サブネット、ワイドエリアネットワークインターネットなどとして実装されうるか、または別のスケールで実装されうる。クライアントデバイス202は、コンピューティングデバイスである。例えば、クライアントデバイス202は、ユーザーによって使用されるパーソナルコンピュータであってよい。ユーザーは、クライアントデバイス202を使用して、ネットワーク204を介して、要求をコンピューティングシステム100に送信し、コンピューティングシステム100からデータを受信する。このようにして、ユーザーは、クライアントデバイス202を使用し、表計算アプリケーション108を使用することで表形式データを表示し操作することができる。例えば、コンピューティングシステム100は、ネットワーク204を介して、データをクライアントデバイス202に送信することができる。この例では、クライアントデバイス202は、表計算アプリケーション108から受け取ったデータを処理してクライアントデバイス202のユーザーに対して提示するように構成される。例えば、クライアントデバイス202は、表計算アプリケーションのテーブルを含むウェブページをレンダリングするか、またはクライアントアプリケーションと相互にやり取りして表計算アプリケーションのテーブルを表示することができる。図3は、表計算アプリケーション108が列幅を調整する例示的なオペレーション300を示す流れ図である。表計算アプリケーション108は、さまざまなイベントに応答してオペレーション300を起動することができる。例えば、いくつかの実施形態では、表計算アプリケーションのテーブル内のデータを1つまたは複数の外部データソース内のデータから導出する。外部データソースは、リレーショナルデータベース、他の表計算アプリケーションのテーブル、ログファイル、XMLファイル、ディレクトリ、および/または他の種類のデータソースとすることができる。この例では、表計算アプリケーション108は、表計算アプリケーションのテーブルのセル内の値が1つまたは複数の外部データソースから更新されたときにオペレーション300を起動する。別の例では、表計算アプリケーションのテーブルはピボットテーブルである。ピボットテーブル内のデータは、1つまたは複数の他の表計算アプリケーションのテーブルから導出される。この例では、表計算アプリケーション108は、ピボットテーブル内のセル内の値が1つまたは複数の他の表計算アプリケーションのテーブルから更新されたときにオペレーション300を起動する。さらに別の例では、表計算アプリケーション108は、表計算アプリケーション108のユーザーが表計算アプリケーションのテーブルのセル内に1つまたは複数の値を入力したときにオペレーション300を起動する。さらに別の例では、表計算アプリケーション108は、表計算アプリケーション108のユーザーから列調整プロセスを実行する命令を受け取ったことに応答してオペレーション300を起動する。さらに別の例では、表計算アプリケーション108は、表計算アプリケーション108のユーザーが表計算アプリケーションのテーブル内のデータの書式を変更するときにオペレーション300を起動する。起動した後、表計算アプリケーション108は、一組のターゲット列内のセルの総数が下限を超えるかどうかを判定する302。この一組のターゲット列は、表計算アプリケーションのテーブルの列のうちの少なくとも1つの列を含む。さまざまな実施形態において、この一組のターゲット列は、さまざまな方法で決定される。例えば、いくつかの実施形態では、表計算アプリケーション108は、ユーザーから列選択入力を受け取る。列選択入力は、ターゲット列を示す。別の例では、表計算アプリケーション108は、表計算アプリケーションのテーブル内の列のすべてをその一組のターゲット列として自動的に使用する。さらに別の例では、表計算アプリケーションのテーブル内のセルの値が外部データソースから更新される場合、その一組のターゲット列は更新された値を持つセルが入っている列を含む。さまざまな実施形態において、表計算をアプリケーション108は、さまざまな下限を使用する。例えば、いくつかの実施形態では、下限は2056セルである。他の実施形態では、他の下限が使用される例えば、1028セル、4112セルなど。ターゲット列内のセルの総数が、この下限を超えない場合302のいいえ、表計算アプリケーション108は、単一の幅評価スレッドを使用して、その一組のターゲット列に対する全体的な最大の列幅を識別する。単一の幅評価スレッドは、ターゲット列内のそれぞれのセル内のテキストの幅を計算することによって、その一組のターゲット列のそれぞれの列に対する全体的な最大の列幅を識別する。いくつかの実施形態では、単一の幅評価スレッドは、オペレーション300を実行する表計算アプリケーション108の1つのスレッドである。他の実施形態では、単一の幅評価スレッドは、オペレーション300を実行する表計算アプリケーション108のスレッドと異なる1つのスレッドである。一組のターゲット列内のセルの総数が、この下限を超える場合302のはい、表計算アプリケーション108は、表計算アプリケーションのテーブルの行を複数のワークユニットworkunitに分割する306。さまざまな実施形態において、これらのワークユニットは、さまざまな数の行を含む。いくつかの実施形態では、これらのワークユニットのそれぞれは、場合によっては余りのワークユニットを除いて、同じ数の行を含む。例えば、すべてのワークユニットは、余りのワークユニットを除いて、256個の行を含みうる。そのような実施形態では、余りのワークユニットは、256より少ない行を含みうる。例えば、表計算アプリケーションのテーブルが1100個の行を備えている場合、256個の行を含む4つのワークユニットと、76個の行を含む余りのワークユニットとがある。他の実施形態では、ワークユニットは、256個より多い、または少ない数の行を含むことができる。例えば、いくつかの実施形態では、これらのワークユニットのそれぞれは512個の行を含む。さらに、いくつかの実施形態では、表計算アプリケーション108は、管理者ユーザーがそれらのワークユニット内の行の数を設定することを可能にするユーザーインターフェースを提示する。それに加えて、表計算アプリケーション108は、適切な数の幅評価スレッドを決定する308。さまざまな実施形態において、表計算アプリケーション108は、さまざまな方法で幅評価スレッドの適切な数を決定する308。例えば、いくつかの実施形態では、表計算アプリケーション108は、ワークユニットの数に基づき、また処理システム104内の処理ユニットの数に基づき幅評価スレッドの適切な数を決定する。例えば、4で割ったワークユニットの数が、処理システム104内の処理ユニット110の数以下である場合、表計算アプリケーション108は、幅評価スレッドの適切な数は、端数切り捨ての、4で割ったワークユニットの数であると決定する。4で割ったワークユニットの数が、処理システム104内の処理ユニット110の数より大きい場合、表計算アプリケーション108は、幅評価スレッドの適切な数は、処理システム104内の処理ユニット110の数に等しいと決定する。次に、表計算アプリケーション108は、複数の幅評価スレッドを起こす310。複数の幅評価スレッド内の幅評価スレッドの数は、幅評価スレッドの適切な数に等しい。さまざまな実施形態において、表計算アプリケーション108は、複数の幅評価スレッドを起こすさまざまなアクションを実行する。例えば、いくつかの実施形態では、表計算アプリケーション108は、幅評価スレッドを動作させるために利用可能である、中断しているsleepingスレッドのプールを保持する。この例では、表計算アプリケーション108は、この中断しているスレッドのプール内のスレッドを起こす。他の実施形態では、表計算アプリケーション108は、幅評価スレッドとして機能するように新しいスレッドをインスタンス化し、起こす。幅評価スレッドによって実行される例示的なオペレーションは、図4に関して示されている。幅評価スレッドを起こした後、表計算アプリケーション108は、幅評価スレッドからローカルの最大の列幅を受け取るのを待つ312。いくつかの実施形態では、表計算アプリケーション108は、表計算アプリケーション108が幅評価スレッドからローカルの最大の列幅を受け取るのを待っている間、他のアクションを実行することができる。その後、表計算アプリケーション108は、幅評価スレッドからターゲット列のローカルの最大の列幅を受け取る314。ローカルの最大の列幅は、幅評価スレッドによって決定される、ターゲット列のセル内の最も広いテキストの幅である。表計算アプリケーション108は、幅評価スレッドのそれぞれからそれぞれの列のローカルの最大の列幅を受け取る。例えば、表計算アプリケーションのテーブルが3つの列を有し、幅評価スレッドが2つある場合、表計算アプリケーション108は、第1の幅評価スレッドから3つのローカルの最大の列幅を、第2の幅評価スレッドから3つのローカルの最大の列幅を受け取る。第1の幅評価スレッドおよび第2の幅評価スレッドは、表計算アプリケーションのテーブル内の異なる行を評価するので、第1の幅評価スレッドおよび第2の幅評価スレッドは、同じ列に対して異なるローカルの最大の列幅を返すことができる。次いで、表計算アプリケーション108は、ローカルの最大の列幅を使用して、ターゲット列に対する全体的な最も広い列幅を決定する316。言い換えると、その一組のターゲット列のそれぞれの列について、表計算アプリケーション108は、その列に対するローカルの最大の列幅のうちの最大値を識別することによって、その列に対する全体的な最大の列幅を識別する。例えば、幅評価スレッドが2つあり、表計算アプリケーション108が一方の幅評価スレッドから1つの列に対して50のローカルの最大の列幅を受け取り、他方の幅評価スレッドからその列に対して60のローカルの最大の列幅を受け取る場合、表計算アプリケーション108は、その列に対する全体的な最も広い列幅が60であると判定する。ターゲット列に対する全体的な最大の列幅を識別した後、表計算アプリケーション108は、その一組のターゲット列のそれぞれの列がその列に対する全体的な最大の列幅に基づく幅を有するよう、表計算アプリケーションのテーブルをリフローする318。言い換えると、表計算アプリケーション108は、表計算アプリケーションのテーブルのそれぞれの列がその列に対する全体的な最大の列幅に基づく幅を有するよう、表計算アプリケーションのテーブルをグラフィカルユーザーインターフェースに表示させる。さまざまな実施形態において、表計算アプリケーション108は、さまざまな方法でリフローされた表計算アプリケーションのテーブルをグラフィカルユーザーインターフェースに表示させることができる。例えば、いくつかの実施形態では、表計算アプリケーション108は、データをクライアントデバイス202に送信することができる。クライアントデバイス202は、リフローされた表計算アプリケーションのテーブルを表示するように構成される。別の例では、表計算アプリケーション108は、いくつかの実施形態において、表示システム106を使用して、リフローされた表計算アプリケーションのテーブルを表示することができる。図4は、幅評価スレッドの例示的なオペレーション400を示す流れ図である。オペレーション400は、幅評価スレッドが表計算アプリケーション108によって起こされたときに開始する402。表計算アプリケーション108が幅評価スレッドを起こしたときに、表計算アプリケーション108は、その一組のターゲット列への参照およびワークユニットのプールを提供する。幅評価スレッドは、幅評価スレッドが起きたときにさまざまなアクションを実行することができる。例えば、いくつかの実施形態では、幅評価スレッドは、一組の最大の列幅を初期化する。この一組の最大の列幅は、その一組のターゲット列のそれぞれの列に対する最大の列幅を含む。最初は、最大の列幅のそれぞれはゼロに等しい。起きた後、表計算アプリケーション108は、デバイスコンテキストを作成する404。デバイスコンテキストは、画面またはプリンタに出力されるテキストおよび画像の属性を定義するために使用されるデータ構造体である。デバイスコンテキストは、さまざまな属性を含む。例えば、デバイスコンテキストは、ウィンドウ用のデフォルトのフォント、ウィンドウ用のデフォルトのフォントサイズ、ウィンドウのコンテキストなどを指定する属性を含むことができる。次いで、幅評価スレッドは、ワークユニットのプール内に利用可能なワークユニットがあるかどうかを判定する406。ワークユニットは、現在ワークユニットの最大の列幅を計算している幅評価スレッドがなく、および、現在の列調整プロセスでワークユニットの最大の列幅をすでに計算してしまっている幅評価スレッドがない場合、利用可能なワークユニットである。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で利用可能なワークユニットがあるかどうかを判定する。例えば、いくつかの実施形態では、表計算アプリケーション108は、それぞれのワークユニットに対応するフラグを含むデータ構造体を保持する。特定のワークユニットに対応するフラグは、特定のワークユニットが利用可能なときに一方の値を、特定のワークユニットが利用可能でないときに他方の値をとる。別の例では、表計算アプリケーション108は、ワークユニットへの参照を含むスタックデータ構造体を生成する。スタックデータ構造体が空である場合、ワークユニットのプール内に利用可能なワークユニットはない。1つまたは複数の残りのワークユニットがある場合406のはい、幅評価スレッドは、利用可能なワークユニットのプールからワークユニットを1つ選択する408。列調整プロセスに関わる幅評価スレッドのそれぞれは、利用可能なワークユニットの同じプールからワークユニットを選択する。例えば、幅評価スレッドAおよび幅評価スレッドBは、列調整プロセスに関わっており、利用可能なワークユニットのプールは、ワークユニットX、Y、およびZを含む。この例では、幅評価スレッドAと幅評価スレッドBは両方とも、ワークユニットX、Y、およびZのうちから利用可能なワークユニットを選択する。幅評価スレッドが利用可能なワークユニットのうちの1つを選択するときに、幅評価スレッドは、その幅評価スレッドによって選択されたワークユニットを他の幅評価スレッドのどれもが選択できないよう、選択されたワークユニットをロックする。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で利用可能なワークユニットを選択する。例えば、いくつかの実施形態では、幅評価スレッドは、利用可能なワークユニットのうちの1つを疑似ランダムに選択する。他の実施形態では、幅評価スレッドは、ワークユニットに割り当てられた順序に基づき、利用可能なワークユニットのうちの1つを選択する。さらに他の実施形態では、幅評価スレッドは、利用可能なワークユニットへの参照を含むスタックデータ構造体から、一番上の参照を取り出す。スタックデータ構造体から取り出された参照によって参照されているワークユニットが、選択されたワークユニットである。次いで、幅評価スレッドは、一組のターゲット列に残りの列があるかどうかを判定する410。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で一組のターゲット列に残りの列があるかどうかを判定する。例えば、いくつかの実施形態では、幅評価スレッドは、ターゲット列のそれぞれへの参照を含むスタックデータ構造体を生成する。そこでスタックデータ構造体が空でない場合、幅評価スレッドは、その一組のターゲット列に残りの列があると判定する。他の実施形態では、幅評価スレッドは、ターゲット列のそれぞれに対応するフラグを含むデータ構造体を保持する。フラグは、列が評価されたときに一方の値を、列が評価されていないときに他方の値をとる。幅評価スレッドは、これらのフラグを使用して列が残っているかどうかを判定する。その一組のターゲット列に1つまたは複数の残りの列がある場合410のはい、幅評価スレッドは、その一組のターゲット列の残りの列を1つ選択する412。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で残っている列のうちの1つを選択する。例えば、いくつかの実施形態では、幅評価スレッドは、ターゲット列のそれぞれへの参照を最初に含んでいたスタックデータ構造体から選択された列への参照を取り出す。他の実施形態では、幅評価スレッドは、その一組のターゲット列の一番右の残っている列を選択する。さらに他の実施形態では、幅評価スレッドは、別の基準に従って、残っている列を選択する。次いで、幅評価スレッドは、選択されたワークユニット内の選択された列に、残りのセルがあるかどうかを判定する414。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で選択されたワークユニット内の選択された列に残りのセルがあるかどうかを判定する。例えば、いくつかの実施形態では、幅評価スレッドは、行インデックスを保持するする。行インデックスは、選択されたワークユニット内の行を示す。幅評価スレッドが、選択された列を選択すると、行インデックスは、選択されたワークユニット内の最も低い行番号を有する行を示す。この例では、行インデックスが選択されたワークユニット内で最も高い行番号を超える行番号を有する行を示す場合、幅評価スレッドは、選択された列内にセルが残っていないと判定する。選択されたワークユニット内の選択された列に1つまたは複数の残りのセルがある場合414、幅評価スレッドは、選択されたワークユニット内の選択された列にある残りのセルを1つ選択する416。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で選択されたワークユニット内の選択された列の残っているセルのうちの1つを選択する。例えば、いくつかの実施形態では、幅評価スレッドは、上で説明されているように行インデックスを保持する。この例では、幅評価スレッドは、行インデックスによって示される行内のセルを選択する。次いで、幅評価スレッドは行インデックスをインクリメントする。セルを選択した後、幅評価スレッドは、選択されたセルに対するセル幅を計算する418。さまざまな実施形態において、幅評価スレッドは、さまざまな方法で選択されたセルに対するセル幅を計算する。例えば、いくつかの実施形態では、幅評価スレッドは、グラフィックスアプリケーションプログラミングインターフェースAPIのテキストエクステントメソッドtextextentmethodを呼び出す。幅評価スレッドがテキストエクステントメソッドを呼び出した場合、幅評価スレッドは、選択されたセル内のテキストと幅評価スレッドによって作成されたデバイスコンテキストとをテキストエクステントメソッドに送る。次いで、テキストエクステントメソッドは、デバイスコンテキストの属性を使用して、選択されたセル内のテキストの幅を決定する。テキストエクステントメソッドは、選択されたセル内のテキストの幅を幅評価スレッドに返す。いくつかの実施形態では、テキストエクステントメソッドは、MICROSOFT登録商標WINDOWS登録商標オペレーティングシステムのグラフィックスデバイスインターフェースGDIAPIまたはGDIAPIの一部である。テキストエクステントメソッドが選択されたセルの幅を決定するときに、テキストエクステントメソッドは、他のプロセスまたは幅評価スレッドがデバイスコンテキストの読み込みまたは書き出しを行えないよう、デバイスコンテキストをロックする。幅評価スレッドのすべてが、同じデバイスコンテキストをテキストエクステントメソッドに送ろうとしていた場合、幅評価スレッドは、他の幅評価スレッドがデバイスコンテキストを使用するのを終了するまで待たなければならない。デバイスコンテキストに対するこの競合を低減するために、幅評価スレッドのそれぞれが、別々のデバイスコンテキストを作成する。選択されたセルに対するセル幅を計算した後、幅評価スレッドは、選択されたセルに対するセル幅が選択された列に対するローカルの最大の列幅より大きいかどうかを判定する420。選択されたセルに対するセル幅が選択された列に対するローカルの最大の列幅より大きい場合420のはい、幅評価スレッドは、選択された列に対するローカルの最大の列幅を更新する422。例えば、選択された列に対するローカルの最大の列幅が、30ピクセルであり、選択されたセルのセル幅が、40ピクセルである場合、幅評価スレッドは、選択された列に対するローカルの最大の列幅が40ピクセルとなるよう、選択された列に対するローカルの最大の列幅を更新する。一方、選択された列に対するローカルの最大の列幅が、30ピクセルであり、選択されたセルに対するセル幅が、20ピクセルである場合、幅評価スレッドは、ローカルの最大の列幅を更新しない。選択された列に対するローカルの最大の列幅を更新した後、または選択されたセルに対するセル幅が選択された列に対するローカルの最大の列幅以下であると判定した後420のいいえ、幅評価スレッドは、再び、選択されたワークユニット内の選択された列に残りのセルがあるかどうかを判定する。選択されたワークユニット内の選択された列に1つまたは複数の残りのセルがある場合、幅評価スレッドは、選択された列内の別の残りのセルに関してステップ416、418、420を、また場合によってはステップ422を繰り返す。一方、選択されたワークユニット内の選択された列に残りのセルがない場合414のいいえ、幅評価スレッドは、再び、その一組のターゲット列に残りの列があるかどうかを判定する410。その一組のターゲット列に1つまたは複数の残りの列がある場合、幅評価スレッドは、その一組のターゲット列の別の残りの列に関してステップ412、ならびに場合によってはステップ414、416、418、420、および422を繰り返す。選択されたワークユニット内に残りの列がない場合410のいいえ、幅評価スレッドは、再び、残りのワークユニットがあるかどうかを判定する406。1つまたは複数の残りのワークユニットがある場合、幅評価スレッドは、別の残りのワークユニットに関してステップ408、ならびに場合によってはステップ410、412、414、416、418、420、および422を繰り返す。残りのワークユニットがない場合406のいいえ、幅評価スレッドは、ローカルの最大の列幅を表計算アプリケーション108に与える424。表計算アプリケーション108にローカルの最大の列幅を与えた後、幅評価スレッドは中断する426。図5は、例示的なコンピューティングデバイス500を示すブロック図である。いくつかの実施形態では、コンピューティングシステム100は、コンピューティングデバイス500に似た1つまたは複数のコンピューティングデバイスを使用して実装される。他の実施形態では、コンピューティングシステム100は、図5の例に示されているのとは別のハードウェアコンポーネントを有するコンピューティングデバイスを使用して実装されることは理解されるであろう。異なる実施形態において、コンピューティングデバイスは異なる方法で実装される。例えば、図5の例において、コンピューティングデバイス500は、メモリ502、処理システム504、二次ストレージデバイス506、ネットワークインターフェースカード508、ビデオインターフェース510、表示デバイス512、外部コンポーネントインターフェース514、外部ストレージデバイス516、入力デバイス518、プリンタ520、通信メディア522を備える。他の実施形態では、コンピューティングデバイスは、実装に使用するハードウェアコンポーネントの数を増やして、または減らして実装される。例えば、別の例示的な実施形態では、コンピューティングデバイスは、ビデオインターフェース、表示デバイス、外部ストレージデバイス、または入力デバイスを備えていない。メモリ502は、データおよび/または命令を格納することができる1つまたは複数のコンピュータ可読データ記憶媒体を備える。本明細書で使用されているように、コンピュータ可読データ記憶媒体は、コンピューティングデバイスによって読み出せるデータおよび/またはソフトウェア命令を格納するデバイスまたは製造品である。異なる実施形態では、メモリ502は異なる方法で実装される。例えば、さまざまな実施形態において、メモリ502は、さまざまな種類のコンピュータ可読データ記憶媒体を使用して実装される。コンピュータ可読データ記憶媒体の種類の例として、限定はしないが、DRAMダイナミックランダムアクセスメモリ、DDRSDRAMダブルデータレート同期型ダイナミックランダムアクセスメモリ、reducedlatencyDRAM、DDR2SDRAM、DDR3SDRAM、RambusRAM、ソリッドステートメモリ、フラッシュメモリ、ROMリードオンリーメモリ、電気的消去可能プログラマブルROM、ならびにデータを格納する他の種類のデバイスおよび/または製造品が挙げられる。処理システム504は、ソフトウェア命令を選択的に実行する1つまたは複数の物理的集積回路を備える。さまざまな実施形態において、処理システム504はさまざまな方法で実装される。例えば、例示的な一実施形態では、処理システム504は、1つまたは複数の処理コアとして実装される。例えば、この例示的な実施形態では、処理システム504は、1つまたは複数のIntelCore2マイクロプロセッサとして実装される。別の例示的な実施形態では、処理システム504は、1つまたは複数の個別のマイクロプロセッサとして実装される。さらに別の例示的な実施形態では、処理システム504は、特定の機能を実現するASICとして実装される。さらに別の例示的な実施形態では、処理システム504は、ASICを使用し、ソフトウェア命令を実行することによって特定の機能を実現する。異なる実施形態では、処理システム504は、異なる命令セットのソフトウェア命令を実行する。例えば、さまざまな実施形態において、処理システム504は、x86命令セット、POWER命令セット、RISC命令セット、SPARC命令セット、IA-64命令セット、MIPS命令セット、および/または他の命令セットなどの命令セットに含まれるソフトウェア命令を実行する。二次ストレージデバイス506は、1つまたは複数のコンピュータ可読データ記憶媒体を備える。二次ストレージデバイス506は、処理システム504によって直接的にはアクセス可能でないデータおよびソフトウェア命令を格納する。言い換えると、処理システム504は、I/Oオペレーションを実行して、二次ストレージデバイス506からデータおよび/またはソフトウェア命令を取り出すということである。さまざまな実施形態において、二次ストレージデバイス506は、さまざまな種類のコンピュータ可読データ記憶媒体によって実装される。例えば、二次ストレージデバイス506は、1つまたは複数の磁気ディスク、磁気テープドライブ、CD-ROMディスク、DVD-ROMディスク、Blu-Rayディスク、ソリッドステートメモリデバイス、ベルヌーイカートリッジ、および/または他の種類のコンピュータ可読データ記憶媒体によって実装することができる。ネットワークインターフェースカード508を使用することで、コンピューティングシステム500はコンピュータ通信ネットワークにデータを送信しコンピュータ通信ネットワークからデータを受信することができる。異なる実施形態では、ネットワークインターフェースカード508は異なる方法で実装される。例えば、さまざまな実施形態において、ネットワークインターフェースカード508は、イーサネット登録商標インターフェース、トークンリングネットワークインターフェース、光ファイバーネットワークインターフェース、ワイヤレスネットワークインターフェース例えば、WiFi、WiMaxなど、または他の種類のネットワークインターフェースとして実装される。ビデオインターフェース510を使用することで、コンピューティングデバイス500はビデオ情報を表示デバイス512に出力することができる。異なる実施形態では、ビデオインターフェース510は異なる方法で実装される。例えば、例示的な一実施形態では、ビデオインターフェース510は、コンピューティングデバイス500のマザーボード内に一体化される。別の例示的な実施形態では、ビデオインターフェース510はビデオ拡張カードである。ビデオ拡張カードの種類の例として、ATITechnologies,Inc.社オンタリオ州マーカム所在が製造するRadeonグラフィックスカード、NvidiaCorporation社カリフォルニア州サンタクララ所在が製造するGeforceグラフィックスカード、および他の種類のグラフィックスカードが挙げられる。さまざまな実施形態において、表示デバイス512は、さまざまな種類の表示デバイスとして実装される。表示デバイスの種類の例として、限定はしないが、陰極線管ディスプレイ、LCDディスプレイパネル、プラズマスクリーンディスプレイパネル、タッチセンサー式ディスプレイパネル、LEDスクリーン、プロジェクタ、および他の種類の表示デバイスが挙げられる。さまざまな実施形態において、ビデオインターフェース510は、さまざまな方法で表示デバイス512と通信する。例えば、さまざまな実施形態において、ビデオインターフェース510は、USBユニバーサルシリアルバスコネクタ、VGAコネクタ、DVIデジタルビジュアルインターフェースコネクタ、S-ビデオコネクタ、HDMI高精細度マルチメディアインターフェースインターフェース、DisplayPortコネクタ、または他の種類のコネクタを介して表示デバイス512と通信する。外部コンポーネントインターフェース514を使用することで、コンピューティングデバイス500は外部デバイスと通信することができる。さまざまな実施形態において、外部コンポーネントインターフェース514は異なる方法で実装される。例えば、例示的な一実施形態では、外部コンポーネントインターフェース514は、USBインターフェースである。他の例示的な実施形態では、コンピューティングデバイス500は、FireWireインターフェース、シリアルポートインターフェース、パラレルポートインターフェース、PS/2インターフェース、および/またはコンピューティングデバイス500を外部コンポーネントと通信させることができる別の種類のインターフェースである。異なる実施形態では、外部コンポーネントインターフェース514を使用することで、コンピューティングデバイス500は異なる外部コンポーネントと通信することができる。例えば、図5の例では、外部コンポーネントインターフェース514を使用することで、コンピューティングデバイス500は、外部ストレージデバイス516、入力デバイス518、およびプリンタ520と通信することができる。他の実施形態では、外部コンポーネントインターフェース514を使用することで、コンピューティングデバイス500は、より多くの、またはより少ない外部コンポーネントと通信することができる。外部コンポーネントの他の種類の例として、限定はしないが、スピーカー、電話機充電ジャック、モデム、メディアプレーヤードック、他のコンピューティングデバイス、スキャナ、デジタルカメラ、指紋読取装置、およびコンピューティングデバイス500に接続することができる他のデバイスが挙げられる。外部ストレージデバイス516は、1つまたは複数のコンピュータ可読データ記憶媒体を備える外部コンポーネントである。コンピューティングデバイス500の異なる実装は、異なる種類の外部ストレージデバイスとインターフェースする。外部ストレージデバイスの種類の例として、限定はしないが、磁気テープドライブ、フラッシュメモリモジュール、磁気ディスクドライブ、光ディスクドライブ、フラッシュメモリユニット、zipディスクドライブ、光ジュークボックス、および1つまたは複数のコンピュータ可読データ記憶媒体を備える他の種類のデバイスが挙げられる。入力デバイス518は、ユーザー入力をコンピューティングデバイス500に供給する外部コンポーネントである。コンピューティングデバイス500の異なる実装は、異なる種類の入力デバイスとインターフェースする。入力デバイスの種類の例として、限定はしないが、キーボード、マウス、トラックボール、スタイラス入力デバイス、キーパッド、マイクロホン、ジョイスティック、タッチセンサー式ディスプレイ画面、およびユーザー入力をコンピューティングデバイス500に供給する他の種類のデバイスが挙げられる。プリンタ520は、データを紙に印刷する外部デバイスである。コンピューティングデバイス500の異なる実装は、異なる種類のプリンタとインターフェースする。プリンタの種類の例として、限定はしないが、レーザープリンタ、インクジェットプリンタ、写真印刷機、複写機、ファクス機、領収書プリンタ、ドットマトリックスプリンタ、またはデータを紙に印刷する他の種類のデバイスが挙げられる。通信メディア522は、コンピューティングデバイス500のハードウェアコンポーネント間の通信を円滑にするものである。異なる実施形態では、通信メディア522は、コンピューティングデバイス500の異なるコンポーネント間の通信を円滑にする。例えば、図5の例では、通信メディア522は、メモリ502、処理システム504、二次ストレージデバイス506、ネットワークインターフェースカード508、ビデオインターフェース510、および外部コンポーネントインターフェース514の間の通信を円滑にする。コンピューティングデバイス500の異なる実装では、通信メディア522は、異なる方法で実装される。例えば、コンピューティングデバイス500の異なる実装では、通信メディア522は、PCIバス、PCIExpressバス、およびAGPアクセラレイティッドグラフィックスポートバス、Infinibandインターコネクト、シリアルATAアドバンストテクノロジーアタッチメントインターコネクト、パラレルATAインターコネクト、FiberChannelインターコネクト、USBバス、SCSISmallComputingsystemInterfaceインターフェース、または別の種類の通信メディアとして実装されうる。メモリ502は、さまざまな種類のデータおよび/またはソフトウェア命令を格納する。例えば、図5の例では、メモリ502は、BIOS基本入出力システム524、オペレーティングシステム526、アプリケーションソフトウェア528、およびプログラムデータ530を格納する。BIOS524には、処理システム504によって実行されたときに、コンピューティングデバイス500を起動させる一組のソフトウェア命令が収められている。オペレーティングシステム526は、処理システム504によって実行されたときに、コンピューティングデバイス500に、コンピューティングデバイス500のリソースの活動および共有を調整するオペレーティングシステムを実現させる一組のソフトウェア命令を備える。オペレーティングシステムの種類の例として、限定はしないが、MicrosoftWindows登録商標、Linux登録商標、Unix登録商標、AppleOSX、AppleOSXiPhone、PalmwebOS、PalmOS、GoogleChromeOS、GoogleAndroidOSなどが挙げられる。アプリケーションソフトウェア528は、処理システム504によって実行されたときに、コンピューティングデバイス500に、コンピューティングデバイス500のユーザーに対してアプリケーションを提供することを行わせる一組のソフトウェア命令を備える。プログラムデータ530は、アプリケーションソフトウェア528によって生成され、および/または使用されるデータである。上で説明されているさまざまな実施形態は、例示のみによって提示されており、制限として解釈すべきでない。当業者であれば、本明細書で図示され、説明されている例示的な実施形態およびアプリケーションに従うことなくさまざまな修正および変更を加えることができることを容易に理解するであろう。例えば、図に示されているオペレーションは、単なる例にすぎない。さまざまな実施形態において、類似のオペレーションは、図に示されているものよりも多い、または少ないステップを含みうる。さらに、他の実施形態では、類似のオペレーションは、異なる順序で図に示されているオペレーションのステップを含みうる。"