UXガイダンス

このドキュメントのセクションは、pipのユーザーエクスペリエンス(pipのドキュメントを含む)の改善に取り組みたい貢献者を対象としています。

ユーザー中心設計とは?

ユーザー中心設計(UCD)またはヒューマンセンタードデザイン(HCD)は、デザインの意思決定がユーザーとそのニーズの理解に基づいて行われる反復的なプロセスです。このタイプの作業を説明するために使用される用語は多くあります。このドキュメントでは、「ユーザーエクスペリエンス(UX)リサーチとデザイン」を使用します。

pipプロジェクトでは、UXリサーチとデザインを使用して、

  • pipユーザー、彼らがpipを使用するコンテキスト、そして彼らが直面する課題についてのより深い理解を深めます。

  • pipがより使いやすく、アクセスしやすくなるように、新しいまたは既存のpip機能のデザインを支援します。これには、pipの出力(エラーメッセージを含む)、コントロール(コマンドやフラグなど)、およびドキュメントの改善が含まれる場合があります。

  • pipの開発チームがユーザーニーズに基づいて機能要求の優先順位を付けるのを支援します。

高いレベルでは、UXリサーチとデザインのプロセスは、

  1. リサーチ(さまざまな手法(例:アンケートインタビュー)を使用して、ユーザーと彼らが使用するツールから何を望んでいるかを学びます)

  2. デザイン(実施されたリサーチに応答するためにソリューションが提案されます。UXリサーチとデザインは反復的に行われ、デザイン提案やプロトタイプはユーザーによってテストされ、ユーザーのニーズを満たす上で効果的であることが検証されます。多くの場合、効果的なソリューションを見つけるには、リサーチ、デザイン、検証のサイクルを複数回繰り返す必要があります)

Graphic showing an iterative process of Research, Make (Design), Validate, around user goals and needs.

このプロセスがpipプロジェクトにどのように適用されているかについての詳細は、リサーチ結果を参照してください。

参照

pipのためのリサーチの実施

ユーザーリサーチは、いくつかの異なる種類の質問に答えるために使用できます。

  • コンテキストの一般的な理解 — 例:pipは人々によってどのように使用されていますか?pipはどのような異なる環境とコンテキストで使用されていますか?

  • ユーザーのより広範な理解 — 例:誰がpipを使用していますか?彼らは通常、どのくらいの経験を持っていますか?彼らはどのようにpipの使い方を学びますか?pipユーザー間には共通の特徴がありますか?pipユーザーのニーズはどの程度多様ですか?

  • 特定のニーズや課題の評価 — 例:pipユーザーはどのようにして特定の問題に遭遇していますか?いつ発生しますか?pipユーザーはこの問題に定期的に遭遇しますか?新しい機能はこの問題をどのように解決しますか?

リサーチプロセスでは、ユーザーからのインプットを得て、そのフィードバックを意思決定に反映することが重要です。

ユーザーからのインプットとフィードバックは、オープンソースプロジェクトにとってコードの貢献と同じくらい貴重です。エンドユーザーはまだプルリクエストを送信したり、コードに直接修正を加えたりする準備ができていないかもしれませんが、彼らのフィードバックはpipの優先順位と方向性を形作るのに役立ちます。

オープンソースプロジェクトでユーザーを参加させる方法はたくさんあり、コミュニティメンバーからのインプットは圧倒的に感じることもあります!アンケートやインタビューなどの構造を提供することで、フィードバックの収集と理解が容易になります。ユーザーを参加させる方法の例をいくつか示します。

  • アンケート — 特定の問題に関するターゲットを絞ったフィードバック、広範なコミュニティコンテキストと理解に適しています。

  • インタビュー — トピックの理解や探求のための詳細な会話に適しています。

  • テスト — 問題の評価やデザインアイデアの検証に適しています。

  • オープンな問題キュー(例:GitHubの問題)とサポートチケットシステム — 共通の課題を理解するための優れたデータソースです。

  • フォーラムやディスカッションツール — 共通の課題を理解したり、より広範なコミュニティをオープンなディスカッションに参加させるための優れたデータソースです。

  • カンファレンスやイベント — 特定の機能の簡単なインタビューやテストを行う絶好の機会です。

2020年のpipに関するUXリサーチを実施した際、アンケートとインタビューがpipのユーザーとのやり取りに特に役立つツールであることがわかりました。いくつかの一般的なガイドラインと、pip固有の推奨事項を以下に示します。

アンケート

アンケートは、広範で大規模なインプットを収集するのに最適です。例としては、pipのユーザーコミュニティ全体について詳しく知ること、または特定の問題に関するターゲットを絞ったフィードバックを得ることなどがあります。

アンケートは、新しいツールの早期リリースで現場からのフィードバックを得るためにも活用できます。例としては、ユーザーが機能のベータ版を使用している場合にコマンドラインでプロンプトを表示したり、ドキュメントページに関するフィードバックをユーザーに求めることなどがあります。

例として、2020年にpip UXチームは、pipとpipのユーザーについて学ぶためにいくつかのアンケートを発表しました。これには、

  • 「誰がpipを使用しているか」の理解

  • pipのドキュメントに関するフィードバックの収集

  • 2020年依存関係解決機のベータリリースに関するフィードバックの収集

  • pipの2020年依存関係解決機の特定の部分がどのように動作するべきかについてユーザーに質問する

2020年に発表されたアンケートとその結果の完全なリストはこちらにあります

アンケートのデザイン

アンケートをデザインする際には、まず何を学びたいかを明確にすることが重要です。これをresearch-results/indexの質問として書き留めておくと役立つ場合があります。pip research-results/indexの質問の例はこちらにあります

トピックが大きい場合、またはresearch-results/indexの質問が多い場合は、複数の別々のアンケートを発表することを検討してください。長いアンケートは、回答率が低く、離脱率が高くなるリスクがあります。

以下は、pipのアンケートを作成するための簡単なガイドです。

  1. アンケートの紹介
    アンケートの動機を説明するか、(pipの動作に関するアンケートの場合は)シナリオを設定します。
  2. 質問のデザイン
    • 回答率の低下を防ぐために、質問の数を制限します。経験則としては、特定のトピックに関する質問を3〜4個、ユーザーの経験レベル/Pythonやpipを使用する目的に関する質問を2〜3個にすることです。
      経験年数について質問する場合は、次のグループ分けをオプションとして使用します。
      • 1年未満
      • 1〜3年
      • 4〜6年
      • 7〜10年
      • 11〜15年
      • 16年以上
    • 行動、意見、または好みを測定するために、可能な回答数が固定された閉鎖型質問(例:はい/いいえ、複数選択、チェックボックス、またはリッカート尺度)を使用します。
    • 推論について学ぶために開放型質問を使用します。アンケートで多くの閉鎖型質問を使用している場合は、予想外の回答を「探す」ためにいくつかの開放型質問を含めることが役立ちます。例:ユーザーに「なぜ」特定のオプションを選択したのかを尋ねる
  3. アンケートをパイロットテストし、フィードバックに基づいて修正します。
    これは、1〜2人と共有して意味があるかどうかを確認するだけ簡単な場合があります。
  4. アウトリーチを行う場所を決定します。
    誰からの意見を聞きたいか、アンケートをどこで掲載するかを決定します。より多くの人々にリーチするのに役立つコミュニティメンバーやグループはいますか?
    • より広範なコミュニティにリーチするために、アンケートを他の言語に翻訳する必要がありますか?
    • 参加者に時間に対する報酬を提供できますか?
    • 参加者は貢献者として認められることを望んでいますか?
  5. アンケートを開始して宣伝します。
    2020年に行われたUXリサーチに基づいて、pipのアウトリーチ方法に関する推奨事項については、アンケートとインタビューのアウトリーチを参照してください。

調査事例研究

上記のプロセスは、pipが競合する依存関係を持つパッケージをインストールすべきかどうかを判断しようとした2020年に実施されました。

まず、シナリオを用いて調査の目的を説明しました。

survey introduction with scenario with packages that conflict

次に、ユーザーの好みを明らかにするための限定的な質問をしました。

survey question asking whether pip should allow users to install packages when there are conflicting dependencies

その後、開放的な質問で回答を詳細に明らかにしました。

survey question asking respondents why pip should allow users to install packages with conflicting dependencies

続いて、回避策、構文、動作の好みに関するさらなる質問を行いました。

最後に、Pythonの使用経験やPythonの利用目的など、アンケート参加者自身に関する質問をしました。これは、異なるタイプのPythonユーザーが質問にどのように答えるかを調べるためです。

このアンケートはpipチームと共有され、公開および様々なアウトリーチチャネルを使用したプロモーションを行う前に、数回改良されました。

合計で415件の回答を受け取り、明確な結果が得られ、この機能の今後の進め方について強力な推奨事項を立てることができました。

アンケート結果の分析

アンケートは、大量の回答から傾向を迅速に理解するのに特に役立ちます。質問が適切に設計されていれば、データを簡単に集計し、「X% 回答者 オプション B 最良の オプション だと 述べました。」といった記述を行うことができます。

回答の文脈化

アンケートへの回答は、アンケートのアウトリーチ方法によってバイアスがかかることを覚えておくことが重要です。したがって、アンケートに応答した人がすべてのユーザーを代表していると確信できない限り、結果を参加者に関連付ける必要があります。アンケートの回答の中で、ユーザーまたはユーザーコミュニティの様々な側面による回答のばらつきを確認することは役立ちます。例:

  • 経験レベル別 — 回答は経験レベル全体で一貫していますか、それとも異なりますか? 例:経験の浅いユーザーまたはジュニアレベルのユーザーの回答、ニーズ、課題は異なりますか?

  • 背景/文脈別 — 回答は背景または文脈全体で一貫していますか? 例:企業環境のユーザーと趣味/独立系のユーザーの回答は似ていますか? データアナリストとソフトウェアエンジニアの回答は似ていますか?

回答数は何件が十分か?

それは状況によります!このような調査では、これは難しい質問です。従来の統計では、「十分」な数は、調査で表現する必要がある総人口に依存すると示唆されています。UX調査では、回答のばらつきが安定した時点が答えとなる傾向があり、データのシグナルとトレンドの方が重要になります。

データにパターンが見られない場合は、質問が明確ではなかったか、選択肢が多すぎたかのどちらか、あるいはより多くの人に連絡する必要があることを意味する可能性があります。

参照

インタビュー

インタビューは、ユーザーとより詳細な会話をし、トピックをより深く理解したり探ったりするのに最適な方法です。アンケートとは異なり、時間のかかるため多くの人と関わるのが難しいため、全体的なパターンを理解するのに適した方法ではありません。多くのユーザーとより非公式な環境でつながる方法として、会議やイベントを中心に計画することは特に役立ちます。

インタビューの設計

アンケートと同様に、始める前に何を学びたいかを明確にすることが重要です。

多くの場合、インタビューはスクリプトに基づいて行われます。これは、ある程度の構造を提供することにより、インタビューのスムーズな進行に役立ちます。ただし、会話が興味深い方向または洞察力のある方向に進んでいる場合は、「スクリプトから外れる」ことも問題ありません。

以下は、pipのインタビューを実施するための簡単なガイドです。

  1. スクリプトを作成する
    これには、参加者にとっての状況を設定する導入を含める必要があります。インタビューの目的、メモの取り方(またはオブザーバーによるメモの取り方)、所要時間、フィードバックの使用方法(および共有方法)、その他共有したい注意事項などを説明します。
    次に、質問を設計します。主要なポイントをカバーするのに十分な時間を取り、インタビューが長くなりすぎないように、質問の数を制限します。アンケートと同様に、経験レベルとPython/pipの使用方法に関する質問を2~3個、特定のトピックに関する質問を3~4個にするのが良い経験則です。
    4種類の異なるインタビュー質問があります。
    1. 記述型 — このタイプの質問は、具体的な具体的なストーリーと詳細を提供します。また、インタビュー対象者がインタビューに「参加」し、関連する経験や記憶を呼び起こすのにも役立ちます。例:
      • 〜した時のことを教えてください…
      • 初めて〜した時のことを教えてください…
      • 最後に〜した時のことを教えてください…
      • 最悪/最高の〜の時のことを教えてください…
      • どのように〜したかを説明してください…
    2. 省察型 — これらの質問により、インタビュー対象者は自分の経験を見直し、より深く考えることができます。インタビュー対象者に省察させることが、インタビューの中心です。急がないでください—彼らが自分の考えをまとめるための十分な時間を与えてください。
      • 〜についてどう思いますか?
      • 〜についてどう感じますか?
      • なぜ〜するのですか?
      • なぜ〜だと思いますか?
      • 〜した時にどのような影響がありましたか?
      • …は時間の経過とともにどのように変化しましたか?
    3. 明確化型 — このタイプの質問は、インタビュー対象者に重要なポイントについて詳しく説明する機会を与えます。巧みな明確化の質問は、インタビュー対象者のストーリーテリングを、最も興味深く関連性の高い領域に巧みに誘導することもできます。
      • 〜と言ったときは何を意味しますか?
      • つまり…
      • あなたは[… ]と言っているように聞こえます。合っていますか?
      • それについてもっと教えていただけますか?
    4. 探求型 — これらの質問は、インタビュー対象者に自分の状況について創造的に考えるよう促すものであり、インタビューの最後に残しておくのが最善です。ただし、注意が必要です。1人の人の提案は、設計上の問題に対する答えになることはめったになく、現時点ではアイデアを集めているだけであることを明確にする必要があります。
      • どのように〜を変えますか?
      • もし〜したらどうなるでしょうか?
      • 魔法の杖があったら…
  2. 1~2人のパイロットインタビューを行い、フィードバックに基づいて修正する
  3. インタビューのアウトリーチ方法を決定する
    • 誰からの意見を必ず聞きたいですか?インタビューのために連絡する人をどのように探す必要がありますか?特定の人に連絡するのに役立つコミュニティメンバーまたはグループはありますか?
    • より幅広いコミュニティまたは特定のコミュニティにリーチするために、インタビューを他の言語に翻訳する必要がありますか?
    • どのようにしてインタビューに登録してもらいますか?
    • 参加者に時間に対する報酬を提供できますか?
    • 参加者は貢献者として認められることを望んでいますか?
  4. アウトリーチを開始する!
    2020年に実施されたUX調査に基づいてpipのアウトリーチを行う方法については、アンケートとインタビューのアウトリーチを参照してください。

以下は、pipのドキュメントについてユーザーに話すために使用されたユーザーインタビュースクリプトの例です。

導入

  • まず、時間を割いていただき、継続的なご協力に感謝申し上げます。

  • このインタビューの目的は、pipのドキュメントがPythonコミュニティのメンバーによってどのように認識され、使用されているかをよりよく理解することです。

  • インタビューは約30分かかります。質問が理解できない場合は、繰り返し説明するか、言い回しを変えてください。良い答えがない場合は、スキップしても構いません。

  • メモを取ります。これらはGitHubまたはpipのドキュメントで共有されますが、匿名性を保護するために識別情報を削除します。

  • 正直にお話しください—あなたのフィードバックは、pipを改善するのに役立ちます。どのような意見でも不快に思いません :)

  • (オプション) このセッションを録音してもよろしいですか?

導入質問

  • Pythonの使用方法について少し教えていただけますか?

  • pipを使用し始めてからどれくらいになりますか?

問題解決

  • pipを使用中に問題が発生した時のことを教えていただけますか?

    • 何が起こりましたか?

    • どうしましたか?

    • どこに行きましたか?

    • どのように問題を解決しましたか?

  • https://pip.dokyumento.jp/en/stable/にアクセスしてください。

    • このドキュメントを使用したことがありますか?

    • 1~10の尺度で、どのくらい役に立ちましたか?

    • なぜですか?

  • pipのドキュメントの改善を検討する際に見てほしいプロジェクトはありますか?

    • そのドキュメントの良い/便利な点は何ですか?

結論

  • pipチームがユーザーのpipの問題のトラブルシューティングを支援するためにできることは何ですか?

  • ご質問はありますか?

インタビュー数は何件が十分か?

これは、検討している問題の複雑さと、行ったインタビューから十分な洞察を得ているかどうかによって異なります。また、十分な範囲の人々の意見を聞いているかどうかにもよります。たとえば、熟練したpipユーザーと初心者ユーザーの両方からの意見を聞いた後でなければ、インタビューを停止しないようにするかもしれません。

数回のインタビューを実施するだけで、チームに推奨事項を示せるだけの多くの問題が明らかになることがよくあります。

インタビューデータの分析

正式なインタビュー分析では、通常「コーディング」と呼ばれるプロセスが用いられます。複数の研究者がインタビューのトランスクリプトをレビューし、研究内容に合わせて作成されたコードシステムまたは類型に基づいて、さまざまな発言やコメントにラベルを付けます。これは優れた実践であり、研究者のバイアスをプロセスの一部として対処するための優れた方法ですが、ほとんどのチームには、この実践を行うためのスタッフやリソースがありません。

代わりに、多くの小規模なチームは、インタビューの発言をテーマ(ニーズや課題に関する特定のトピックや問題領域など)に分類するという軽量なプロセスを使用しています。インタビューは引用の優れた情報源でもあり、何かが重要な理由、またはユーザーにとって何かがいつどのように発生するかを示す例を示すのに役立ちます。

インタビュー分析は、付箋を使用することが多く、引用、問題、または調査結果を付箋に書き込み、その後、付箋をテーマにラベル付けまたは分類できるクラスタに移動します。リモートでは、MiroMuralなどのデジタル付箋ボードツール、TrelloWekanCryptpadなどのカンバンボードツール、あるいはテキストドキュメントやスプレッドシート、リストやカテゴリを使用して行うことができます。各インタビューの最後にデブリーフィング用のワークシートを使用すると、特定のインタビューからのトピックを忘れる前に、インサイトとテーマをすばやくキャプチャするのに役立ちます。

参照

調査とインタビューへのアウトリーチ

以下は、pipチームが2020年の調査を実施した際に使用したアウトリーチプラットフォームのリストです。成功したプラットフォームとそうでないプラットフォームがありました。

検討価値あり:pipの「ヘルプ」コマンドへのプロンプト/パスを追加する

この機会を検討する機会はありませんでしたが、2020年12月のPypaメンテナとのワークショップでこのアイデアが出ており、ユーザーとエンゲージメントし、貢献の機会を示すのに役立つ優れた方法になる可能性があります。

ユーザーインターフェースデザイン

多くの人が「ユーザーインターフェース」という用語をウェブサイトやアプリケーションと関連付けていますが、CLIもユーザーインターフェースであり、グラフィカルユーザーインターフェースと同じ設計上の考慮事項を必要とすることを覚えておくことが重要です。

pipの設計には以下が含まれます。

  • pipの入力の設計 - 機能をコマンドにグループ化するための最良の方法、およびユーザーにとって意味のあるコマンドの命名方法を確立する

  • pipの出力の作成 - pipがコマンドに応答する方法、およびユーザーに提供する情報を確立します。これには、成功メッセージとエラーメッセージの作成が含まれます。

  • 補足資料の提供 - 例えば、pipの操作方法をユーザーが理解するのに役立つドキュメント

設計原則/ユーザビリティヒューリスティック

デザイナーが優れたエクスペリエンスを設計するのに役立つ多くのインタラクションデザイン原則があります。Nielsen Normanのユーザーインターフェースデザインのための10個のユーザビリティヒューリスティックは、始めるのに最適な場所です。以下は、これらの原則がpipに適用される方法の一部です。

  • システム状態の可視性:すべてのコマンドがユーザーに関連する明確なフィードバックをもたらすようにしますが、ユーザーに過剰な情報を提供しないようにします(「美的でミニマルなデザイン」を参照)。

  • 一貫性と標準:インターフェースを作成する際には、Pythonパッケージングエコシステムの残りの部分と一貫性を保ち、可能な限り他のCLIツールから馴染みのあるパターンを採用するように努めます。

  • 美的でミニマルなデザイン:CLI出力からノイズを除去して、ユーザーが最も重要な情報を見つけられるようにします。

  • ユーザーがエラーを認識、診断、回復できるようにする:エラーに明確にラベルを付け、説明します。何が起こったのか、なぜ起こったのか、そしてユーザーがエラーを修正するためにできることは何か。詳細な説明が必要な場合は、ドキュメントへのリンクを付けます。

  • ヘルプとドキュメント:状況に応じたヘルプを提供し、ドキュメントがタスクに焦点を当てていることを確認します。

追加リソース

設計ツール

設計プロセスで頻繁に使用されるツールには、ペルソナとガイドライン、ワイヤーフレーム、プロトタイピング、テスト、フロー図またはモデルの作成などがあります。

ペルソナ

ペルソナとそのオープンソースプロジェクトでの使用に関するより詳細な概要については、Simply Secureのリソースが役立つ場合があります。

ペルソナは、ツールを使用する可能性のある人の抽象化または原型です。多くの場合、名前、年齢範囲、職種など、その人が誰であるかの感覚を与えるのに十分な簡単なポートレートの形を取ります。この情報をペルソナテンプレートに記録し、リソースとしてオープンソースコミュニティと共有できます。Gitlab UXチームの例を参照してください。

ペルソナは、特定のユーザーの特定のニーズに対する優先事項に機能設計を基づけるのに特に役立ちます。これにより、設計プロセスに役立つ制約が提供され、作業に集中でき、すべてのユーザーに対する万能なソリューションにする必要がなくなります。

2020年、pip UXチームはpipプロジェクトのために以下のペルソナを作成しました。

  • Pythonソフトウェアユーザー

  • Pythonソフトウェアメーカー

  • Pythonパッケージメンテナ

pipのペルソナの作成方法と、それらを将来のpip UX作業に適用する方法に関する詳細な説明は、こちらにあります。

プロトタイピング

どのUXプロジェクトでも、実際のユーザーとインターフェースのプロトタイプを作成してテストすることが重要です。これにより、チームにフィードバックループが提供され、エンドユーザーに出荷されるソリューションがユーザーのニーズを満たしていることが保証されます。

CLIのプロトタイピングは困難な場合があります。cli-outputを使用した迅速なCLIプロトタイプの作成で推奨事項を確認してください。

コピーライティングスタイルガイド

pipのインターフェースはテキストであるため、明確で一貫した言語を使用することが特に重要です。

次のコピーライティングスタイルガイドは、pipチームにとって役立つ場合があります。

一般リソース