サポートレベル別に見る「開発者体験」のあり方
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/ren_devrel_cover_main_31.png?itok=NoMDT79j)
はじめに
あなたが開発者であるならば、開発中に外部サービスやライブラリの使い方で迷うこともあるでしょう。そうしたときに、自己解決できる場合もあれば、他の人を頼ることもあります。今回は、こうした「開発時の困りごとを、どのようにDevRelとして解決するのか」について紹介します。
エラーメッセージで解決する
最もベストなのは、開発者が迷いなく開発を続けられることです。しかし、はじめて利用するライブラリやSDKであれば、必ず手が止まる瞬間があります。よくあるのはエラーメッセージです。そのエラーメッセージの内容を読み、解決策を理解できるのが一番ベストなサポートと言えます。
一例として、TypeScriptのLintエラーが挙げられます。VS Codeなどで開発している際にLintエラーがある場合、そのエラーメッセージのところにURLが表示されます。そのURLにアクセスすると、エラーメッセージに関する詳細な説明や解決策が記載されています。このように、エラーメッセージにURLを記載することで開発者が自己解決できるようになります。
これはSaaS形式でサービス提供している場合にも利用できるでしょう。エラーメッセージの中にURLを記載したり、より詳細なエラー解決策を提示することで、開発者の問題解決をサポートできます。
エラーメッセージに関するコンテンツを作成する
もしエラーメッセージを見ただけでは問題が解決できない場合、開発者はWeb検索をします。その際、多くの開発者はエラーメッセージをそのままコピーして検索するでしょう。そこで必要になるのが、エラーメッセージを含むコンテンツです。
公式ドキュメントであれば、エラーメッセージ一覧的なものはもちろん、各エラーの詳細についても記載したコンテンツが必要です。入力値の検証エラーの場合はフィールドの名前が動的に変わってしまうため、エラーメッセージをそのまま検索しても見つからないかも知れません。その場合、エラー番号を含むメッセージにすることで検索しやすくなります。
例えば、Oracleではエラーに対してORA-99999
のようにナンバリングを行っており、開発者はこのエラーIDを検索して解決策を見つけられます。ベンダー側はユニークなエラーメッセージに対して、それぞれ「どういった解決策があるのか」をコンテンツ化しておくと、開発者をスムーズに問題解決へ導けるでしょう。
ユーザーコンテンツによるサポート
公式なコンテンツではなく、ユーザーやパートナー企業の作成したコンテンツが解決につなげてくれる場合もあります。パートナー側としても、そうした知識の共有を通じて自社の技術力や関連製品、サービスの認知を広められます。
![](/sites/default/files/article_node/ren_devrel32_03.png)
ベンダーによる例「DevelopersIO」
AWSやGoogle Cloud、Azureなど、クラウドベンダーに関わるパートナーでは、そうしたコンテンツ作成に注力している企業が多数あります。自社の技術力をアピールしたり、進化の速いクラウド業界におけるキャッチアップの一環としてコンテンツを作成しています。
こうしたユーザーコンテンツには、いくつかのメリットがあります。
コミュニティの活性化
ユーザーのコンテンツ作成を奨励するのは、開発者コミュニティの活性化にもつながります。開発者が自らの知識を共有することで他の開発者が問題解決できるようになり、コミュニティ全体の技術力が向上します。
提供元の想定を超える解決策
開発者向けに提供されるサービスの多くは、提供元の想定以外の利用法が多数出てきます。その際に出てくる問題や、その解決策というのは公式コンテンツだけでは手が回りません。ユーザーのコンテンツは、そうした想定外の課題に対する解決策を提供してくれるでしょう。
最新情報に追従する
ユーザー生成型のコンテンツの課題は、古い情報が残ってしまうために間違った解決策を提示してしまうことです。この解決策としては、常に最新情報が作られ続けるほかはありません。ユーザーに「コンテンツ作りをやめてほしい」と願うのは間違った方針になります。むしろコンテンツの作成を奨励し、常に最新情報に基づく解決策が提示されるように促すべきです。
人によるサポート
Web検索をしても問題が解決できない場合、開発者は人に頼らなければなりません。このときに頼れるのは、以下の3つ人たちです。
- 社内のエンジニア
- 公式サポート
- コミュニティ
社内のエンジニア
社内のエンジニアであれば、課題になっているコードの共有もしやすく、またチャットなどを通じて気軽にコミュニケーションできるので、問題解決しやすいと言えます。ただ、エンジニアの数が少なかったり、自分の行っている領域に対する知見が限られてしまう場合、解決策が見つからないこともあります。先輩エンジニアのような自分よりも知見が多い人がいない場合、公式サポートやコミュニティに頼ることになるでしょう。
公式サポート
公式サポートは、開発元が契約条件に基づいてサポートをしてくれます。ただし、質問に対するレスポンスが遅い場合もあるでしょう。外資系のサービスの場合はアメリカなどの開発元に連絡が必要で、答えを得るまでに数日かかるケースもあります。また、多くの場合公式サポートは有償契約している場合のみ提供されます。
公式サポートでもチャットで質問ができれば気軽です。次によくあるのがメールでの問い合わせです。ただし、コードに関する問題の場合、メールではうまく説明できないかも知れません。そして、電話サポートもありますが、電話の場合はサポート担当者が開発者ではないことも多く、適切なサポートが得られるかは不透明です。
公式サポートでは営業時間なども決められており、金曜日の夜に発生したエラーは週明けまで放置されてしまうこともあります。問題解決までに長時間を要すると、そのサービスに対する信頼性も損なわれてしまうので注意が必要です。
コミュニティ
うまく公式のサポートが得られない場合は、コミュニティを頼ることになります。コミュニティへの連絡はチャットやフォーラム、メーリングリストなどが一般的です。コミュニティで知り合ったエンジニアに直接聞く場合もあるでしょう。
コミュニティにサポートのしてもらう場合、そのサポートレベルやレスポンスが読めないという点が課題です。コミュニティメンバーにとってサポートはボランティア活動であり、興味がなければサポートしなくても問題ありません。そのためサポートが得られるかどうかは運次第とも言えます。
また、コミュニティでのサポートでは、機密情報的なものを除外しなければなりません。コードの一部を公開する場合にも、再現性のあるコードを提示したり、実行環境などの情報を細かく記載したりしなければなりません。そうした情報がなければ適切なサポートを依頼するのは難しいでしょう。
コミュニティとしては、そのサービス専用のコミュニティと汎用的な開発者コミュニティがあります。後者の代表例としてはStack OverflowやTeraTailがあります。Stack Overflowは多くの開発者が利用しているため、質問に対する回答が得られる可能性が高いです。ただし、ユーザー登録直後はいくつかの制限があり、信頼度を得なければなりません。
【参考】新規ユーザーの制限の解除
https://ja.stackoverflow.com/help/privileges/new-user
書籍や動画などの情報
問題解決の手段として、書籍や動画コンテンツも利用できます。かつては書籍が実装のお供といった感もありましたが、今ではネットで探す方が多いかも知れません。動画については解説動画が多く、ピンポイントの問題解決にはつながりにくいかも知れません。また、動画はWeb検索に強くないので、解決につながる動画は探しづらい可能性があります。
AIに頼る
最近では、ChatGPTをはじめとするLLMをサポートに利用するケースが増えています。Web検索をして解決策を色々と探すよりも、LLMに聞いた方が自分の状況にフィットした解決策が得られる場合もあります。
しかし、LLMがあれば他の施策が不要かと言えば、そうではありません。こうしたLLMの生成する答えのベースになっているのは、自社のドキュメントやユーザーの作成したコンテンツ、一般公開されているフォーラムでのやり取りなどです。つまり、LLMが最適な結果を返すためには、十分なコンテンツの蓄積が必要になります。
![](/sites/default/files/article_node/ren_devrel32_05.png)
独自のデータで学習する「DocsGPT」の例
また、汎用的なLLMは常に最新情報を学習し続けてくれるわけではありません。執筆時点でのGPT-4は2023年4月までの情報を学んでいます。それ以降にリリースされたサービスやバージョンアップ情報は反映されていない可能性があります。さらに、LLMでは「分からない」という返答が返らず、それらしい回答(ハレシネーション)を返してしまうことがあります。そうした情報は正しい解決にはつながらず、開発者を失望させてしまうでしょう。
解決策の1つとしては、独自の学習コンテンツを追加したサポートボットの提供です。自社のドキュメントやユーザーの最新コンテンツを追加学習させることで、より適切な解決策を提示できる可能性があります。もちろん開発者が利用してくれるかどうかは別問題ですが、AIを活用したサポートの1つの形として検討してみてはいかがでしょうか。解決策は端的に、明確に提供する
サポートで大事なのは、開発者の時間を奪わないことです。開発者は開発に専念したいので、問題解決に時間をかけることは好ましくありません。そのため、解決策は端的に、明確に提供することが重要です。例えば、ブログ記事などで要領を得なかったり、解決策が分かりにくいと、開発者はそのサポートを信頼できません。
そうした点において、今回紹介したサポート方法の順番としては、以下が最適と言えるでしょう。
- エラーメッセージで解決する
- Web検索
- AIによるサポート
- 公式サポート
- コミュニティ
ドキュメントやブログ記事などのコンテンツを充実させれば、公式サポートへの問い合わせが少なくなります。そうした測定ができれば、DevRelとしてコンテンツの充実が価値を出していくでしょう。
おわりに
今回は「サポート」という観点で、より良い開発者体験のあり方について紹介しました。開発者を困らせず、もし不具合があってもすぐに解決できるようにコンテンツやサポート体制を充実させておきましょう。開発者が何の心配もなく開発できるようになれば、あなたのプロダクトは大きな信頼を得られるようになります。