Tab Separated Value survey structure/ja

=タブ区切り形式によるアンケート構成のインポート・エクスポート=

この機能は、Excel、LibreOffice、Google Docsなどのスプレッドシートソフトウェアを使用してアンケートを作成および編集することを容易にするように設計されています. SGQAコードへの依存を完全に排除します.

この機能は、拡張子が.txtのASCIIまたはUTF-8でエンコードされたタブ区切り（TSV）ファイルからのインポートをサポートします.

=はじめに=

最も簡単な方法は、アンケートからタブ区切り値形式でエクスポートすることです. 通常のアンケート出力ボタンを使用し、.lss形式を選択するのではなく、"タブ区切り形式（* .txt）"を選択します. 適切な書式（タブで区切られたユニコードファイル）でタブ区切り形式ファイルとして保存され、すべての正しい列見出しが付けられます.

タブ区切り形式をられた値をサポートするスプレッドシートソフトウェアなら何でも構いません（OpenOfficeやLibreOfficeなど）. LimeSurveyはスプレッドシート内の書式設定を無視しますが、役立つ場合は自由に追加してください.

エクスポートされたファイルは、最初の3つの隠し文字としてバイトオーダーマーク（BOM）が使われているUTF-8形式であることに注意してください. ExcelがUTF-8形式であることを認識しないため、Excelで.txtをダブルクリックしても直接開くことはできません. このファイルをExcelで開くには、まずExcelを開き、ファイル::開くを選択して.txtファイルを選択し、ExcelにUTF-8エンコーディングを使用していることを伝えます.

グループ、質問、サブ質問、および回答ごとに1つの行で表示されます. グローバルアンケート変数と言語固有のアンケート変数の行もあります. 基本言語が最初にリストされ、続いて追加言語がリストされます. したがって、複数の言語がある場合は、最初に基本言語のすべての内容が表示されます（たとえば、グループ、質問、サブ質問、および回答）. 追加言語の翻訳がこれに続きます（翻訳されたセットの番号と順序または行は同じです）.

行の間の関係は行の近さによって推定されます. したがって、グループに続く質問はそのグループの一部と認識されます. 質問に続くサブ質問はその質問の一部であり、質問に続く回答はその質問の一部です. したがって、質問にはID（gid、qid、sqid）は必要なく、インポート時に自動的に計算されます. 実際、このフォーマットでは、gid、qid、sqid（またはSGQAコード）をまったく使用しません.

=ヒント=

タブ区切り形式のインポート／エクスポートの目的は、スプレッドシートを使用してアンケートをすばやく設計できるようにすることです. シートをインポートし、"アンケートロジックの表示"機能を使用してシートの有効性を確認し、テストしてください. インポートするたびに、新しいアンケートが作られます. 部分的に完成した多くのアンケートができるかもしれませんが、問題ありません. 一番新しいものを対象にするか、新しいものをインポートした後に古いものを削除すればよいのです. タブ区切り形式でSGQAコードを使用することは決してないので、LimeSurveyがアンケート、グループ、質問、回答のキーに割り当てるコードについて心配する必要はありません. ですから、自由にインポート／エクスポートしてください.

アンケートを作成するうえで便利な方法がいくつかあります.
 * 1) 多くの質問に対して同じ回答を使用する. 'A'の行をコピーし、同じ回答を使用する質問の後に貼り付けます.
 * 2) 多くの質問に対して同じサブ質問を使用する. 'SQ'行をコピーして、それを必要とする質問の後に貼り付けます.
 * 3) "繰り返し" - 同じグループを複数回使用する. 必要な回数だけグループをコピーしてください. Excelのフィルタリングを使用して（グループの）'G'行だけを表示し、Excel列のドラッグ機能を使用して各グループの出現条件の式を更新します（例：国勢調査では、最初の出現条件は"numPeople>1"、次は"numPeople>2"とします. ドラッグ機能により数字を1つずつ増やしていきます）. 'Q'行でフィルタリングし、各質問に固有の値があることを確認します（例：変数g1_q1、g1_q2、g1_qNの名前をつけ、g1をg2に、2番目のグループをg3に、g3を3番目にg3に変換します）.
 * 4) 質問／グループの並べ替え. スプレッドシートファイルの行を並べ替えるだけです.
 * 5) アンケートモジュールのテスト.  長いアンケートでは、モジュールに分割してテストすることができます. モジュールごとに新しいスプレッドシートファイルを作成し、必要のない行を削除するだけです. これにより、アンケートの後の方のセクションをテストする、多くのデータを入力する必要がなくなります.
 * 6) 必須の質問のテスト. 多くの質問を必須にする必要があるものの、テストのために必須機能をオフにしたい場合があります. 必要なものを必須の設定にしてマスタースプレッドシートを作成するだけです. 次に、テストするため、"必須"列を削除し、スプレッドシートのテスト版を保存します. そのバージョンをインポートすれば、質問は必須ではなくなります. テストが終了したら、マスターの方をインポートします.
 * 7) 既定値設定. GUIを使用するのではなく、既定値の列に任意の既定値を入力します. これは、リスト項目の既定値を設定する式（トークン属性からリストを設定するなど）のように、GUIで目的の値を入力できない場合に特に役立ちます.
 * 8) 翻訳. スプレッドシートのコピーを言語ごとに1つ作成します. 基本言語のすべての行を含め、その下にコピー＆ペーストし、ドラッグを使用して言語フィールドを目的の言語に変更します. これらを翻訳者に配布し、完了したら1つのスプレッドシートファイルに再統合します.
 * 9) 高度な質問属性の一括設定. すべての式が表示されるようにし（つまり、データを収集するときにその値を見ることができる）、公開時にこれらをすべて非表示にしたい場合があります. これは、スプレッドシート上でクラス='Q'と質問タイプ='*'（式）でフィルタリングし、質問ごとにalways_hideを1に設定します. 同様に、アンケートを作成した後、公開統計にどの質問を表示するかを決定します. GUIで各質問を編集するのではなく、class='Q'でフィルターをかけ、統計に表示する必要のあるすべての質問に対してpublic_statistics=1を設定します.
 * 10) 検索して置換する. すべての質問の中でいくつかのフレーズを変更する必要がある場合、Excelの検索・置換を使用して変更することができます. 同様に、変数の一括リネームを行う場合も、検索して置き換えれば可能です. 正規表現ベースの検索・置換が必要な場合は、目的の列を選択してテキストエディタにコピーし、検索・置換し、スプレッドシートに列を戻します.
 * 11) 承認を得る. あなたが研究をしている場合、質問のテキストをレビューする委員会があるかもしれません. この目的で簡便に共有することができます. クライアントとの議論の場合も同様に使用できます.
 * 12) チームの同意. チーム内で質問やグループの表現や外見に同意を得る場合は、スプレッドシートをプロトタイプ化／編集し、インポートし、質問やグループのプレビューを行い、これを介してユーザーに提示される内容をチームメンバーに正確に見せることができます. そうすれば、要件を文書化して構築し、会議で承認するようなことは必要がなく、チームメンバーが会議室を後にする前にその場で承認を得ることができます.
 * 13) 他のアンケートフォーマットからのアップグレード. 既存のアンケートがXML、Word、または他の形式である場合は、この形式にマップするための変換プロセスを作成することができます. .lss形式にマッピングすることもできますが、この形式の利点は、グループ、質問、サブ質問、回答、および既定値の間の外部キーの関係を追いかける必要がないことです.

=制限事項=
 * 1) 設計上、SGQAではなくqcode名を使用するアンケートでのみ機能します. この機能では、変数名（質問の識別子）がアンケート内で一意であることを前提としています. サブ質問名は、特定の質問の範囲内で一意である限り、同じものを使うことができます.

=ファイル形式=

概要
複数の目的のため、同じ見出しセットを使用しています. 最初の14列は、エンティティの種類（グループ、質問、回答など）によって異なる目的で使用されます. 残りの列は、高度な質問コードに関するデータベースフィールド名のアルファベット順のリストです. 以下は、各エンティティタイプの構文です.

最初の14列は次のとおりです.
 * id
 * 1) related_id
 * 2) class
 * 3) type/scale
 * 4) name
 * 5) relevance
 * 6) text
 * 7) help
 * 8) language
 * 9) validation
 * 10) mandatory
 * 11) other
 * 12) default
 * 13) same_default

アンケートのグローバルパラメーター
アンケートテーブルには、パラメータごとに1つの行があります.
 * 1) class => 'S'
 * 2) name => データベースフィールド名
 * 3) text => 値

アンケートの言語固有のパラメーター
surveys_languagesettingsテーブルには、言語ごと・フィールドごとに1つの行があります. 言語のすべての項目は、このテーブルに挿入する前に収集されます.
 * 1) class => 'SL'
 * 2) name => データベースフィールド名
 * 3) text => 値
 * 4) language => 言語

グループ
アンケートの言語ごと・グループごとに1行あります（例えば、アンケートに3つの言語がある場合はグループの行が3つになります）.
 * 1) class => 'G'
 * 2) name => グループ名（グループの一意の識別子）
 * 3) relevance => grelevance（中括弧なしのグループレベルの出現条件の式）
 * 4) text => 説明（言語ごとのグループの説明）
 * 5) language => グループの言語（例: 'en'）

質問
アンケートの言語ごとに1行あります（例えば、アンケートに3つの言語がある場合は質問の行が3つになります）. 質問は先行する行のグループに属しているとみなされます.
 * 1) id => 質問に対して一意の数値の識別子. 1から始まり、現在の質問に対応する他の言語の質問に同じIDを使用します.
 * 2) class => 'Q'
 * 3) type/scale => タイプ（通常1文字であらわされる質問タイプ）（例: 複数選択は'M'）
 * 4) name => タイトル（固有の質問名でqcode命名システムで利用）
 * 5) relevance => 出現条件（質問に対する出現条件の式）
 * 6) text => 質問（言語ごとの質問テキスト）
 * 7) help => ヘルプ（言語ごとのヘルプテキスト）
 * 8) language => 言語（グループの言語. 例: 'en'）
 * 9) validation => preg（質問の検証条件として使用する正規表現）
 * 10) mandatory => 回答必須フラグ（必須の時は'Y'）
 * 11) other => その他（一部の質問タイプで"その他"を使用する場合'Y'）
 * 12) default => 既定値（設定した場合は、defaultvaluesテーブルにこの値がセットされます）
 * 13) same_default => 同一の既定値（基本言語に設定した既定値を他の言語にも当てはめる場合は'Y'）

サブ質問
アンケートの言語ごとにサブ質問が1行あります. サブ質問は先行する質問に属しているとみなされます.
 * 1) id => 質問に対して一意の数値識別子. サブ質問は、次に利用可能な値を使用する必要があり、質問とサブ質問のIDは異なるものでなければなりません（例えば、質問1にはID 1、質問1に属するサブ質問にはID 2、3、4が使用されます）. 現在のサブ質問に属する他の言語には、同じサブ質問IDを使用します.
 * 2) class => 'SQ'
 * 3) type/scale => scale_id（質問により0か1. 配列テキストには2つの尺度があります）
 * 4) name => タイトル（サブ質問の"名前"、たとえばexclude_all_othersに使用される名前）
 * 5) relevance => 出現条件（将来の予定機能：サブ質問レベルの出現条件）
 * 6) text => 質問（言語ごとのサブ質問テキスト）
 * 7) help => ヘルプ（将来の予定機能：サブ質問レベルのヘルプ）#language => 言語（サブ質問の言語）
 * 8) validation => preg（将来の予定機能：アドレス欄など、サブ質問レベルの正規表現検証）
 * 9) mandatory => 必須（将来の予定機能：一部のサブ質問だけ必須とするような、サブ質問レベルの必須フラグ）
 * 10) default => 既定値（設定されている場合、サブ質問の既定値となり、defaultvaluesテーブルに挿入されます）
 * 11) same_default => same_default（設定すると、基本言語に設定した既定値を他の言語にも当てはめます）

回答
アンケートの言語ごとに回答が1行あります（例えば、アンケートに3つの言語がある場合は回答の行が3つになります）. 回答は先行する質問に属し、好みの順番に並べられているとみなされます.
 * 1) id => 所属する質問のIDと同じIDを使用する
 * 2) class => 'A'
 * 3) type/scale => scale_id（0または1 - 二元スケール用）
 * 4) name => code（一意の回答識別子）
 * 5) relevance => assessment_value（評価オプションを使用する場合、これが回答の評価値となります）
 * 6) text => answer（言語固有の回答テキスト）
 * 7) language => language（回答の言語. 例: 'en'）

評価
アンケートの言語ごとに1行あります（例えば、アンケートに3つの言語がある場合は評価の行が3つになります）. 評価はファイルの最後に書かれています.
 * 1) id => 評価に対して一意の数値の識別子. 1から始まり、現在の評価に対応する他の言語の評価に同じIDを使用します.
 * 2) related_id => 現在の評価が属するグループのID.
 * 3) class => 'AS'
 * 4) type/scale => 評価のスコープ: Tは全体、Gはグループ.
 * 5) name => 名前
 * 6) text => メッセージ
 * 7) min_num_value => 最小値
 * 8) max_num_value => 最大値
 * 9) language => 言語（回答の言語. 例: 'en'）

クォータ
クォータごとに1行あります. クォータはファイルの最後に書き込まれます.
 * 1) id => クォータに対して一意の数値の識別子. 1から始まります.
 * 2) class => 'QTA'
 * 3) name => クォータの名前
 * 4) mandatory => 上限値
 * 5) other => クォータアクション
 * 6) default => アクティブ
 * 7) same_default => autoload URL

クォータ言語設定
アンケートの言語ごとにクォータが1行あります. クォータ言語設定は、先行するクォータに属すると見なされます.
 * 1) id => クォータ言語に対して一意の数値の識別子. 1から始まります. アンケート言語ごとに異なるIDを持ちます.
 * 2) related_id => この設定が属するクォータのID
 * 3) class => 'QTALS'
 * 4) relevance => メッセージ
 * 5) text => URL
 * 6) help => URLの説明
 * 7) language => 言語（クォータの言語. 例: 'en'）

クォータメンバー
クォータメンバーごとに1行あり、言語には依存しません. クォータメンバーの行は、関係する質問の直後に配置する必要があります. クォータメンバーは、クォータメンバーに先行する質問に属しているとみなされます.
 * 1) id => クォータメンバーに対して一意の数値の識別子. 1から始まります.
 * 2) related_id => メンバーが属するクォータのクォータID.
 * 3) class => 'QTAM'
 * 4) name => 回答コード

条件
条件ごとに1行あり、言語には依存しません. 条件行は、関係する質問の直後に配置する必要があります. 条件はそれらに先行する質問に属していると見なされます.
 * 1) id =>条件に対して一意の数値の識別子. 1から始まります.
 * 2) related_id => 関連する質問の質問ID
 * 3) class => 'C'
 * 4) type/scale => scenario
 * 5) name => 回答のフィールド名
 * 6) relevance => 比較演算子
 * 7) text => 期待する回答