| スピーカー |
トランスクリプト |
| オーロラ・ティファニー・デイビス |
こんにちは、Aurora Tiffany-Davisです。JMP Liveチームのソフトウェア開発者です。今日はJMP Liveチームでのソフトウェア開発方法についてお話ししたいと思います。 |
| |
まず、ソフトウェア開発とはどのようなものかを想像してみてください。開発者でない方は、おそらくテレビや映画で見たイメージが頭の中に残っているのではないでしょうか。 |
| |
あなたは、一人で仕事をしている人、とても賢い人、もしかしたら天才で、そのプロセスがとても単純な人を想像しているかもしれません。 |
| |
彼らは問題について考え、コードを書き、そしてそれがうまく動作するか確認します。そしておそらく実際に動作するでしょう。結局のところ、彼らは天才なのですから。 |
| |
もし私たち全員がJMP Liveを使いこなせる天才なら、このシンプルなプロセスでうまくいくでしょう。しかし、私たちはそうではなく、現実の世界に生きています。ですから、それ以上の何かが必要なのです。 |
| |
まず第一に、私たちは単独で作業するのではなく、非常に協力的に作業しており、私たちのプロセスには、単なるソフトウェアではなく、高品質のソフトウェアを作成することを確実にするための手順が組み込まれています。 |
| |
ソフトウェア開発に正しい方法は一つではないことを指摘しておきます。企業によって、あるいは企業内でも異なるかもしれませんが、私たちのプロセスについてご説明したいと思います。 |
| |
JMP Live で新しい機能を開発する場合に私が行うであろうことをお伝えします。 |
| |
まず第一に、座ってコードを書く前に、それを書く必要性を感じなければなりません。 |
| |
そこには、JMP Lives で特定された、実際に機能しない問題を抱えた実際のユーザーがいるはずです。つまり、期待通りに機能しないということです。 |
| |
これは、バグやリクエストした機能を発見したことを伝える丁寧な言い方です。 |
| |
社内ではこれらのリクエストをシステムで管理しています。ですから、まずはシステムにアクセスして、自分のスキルセットに適した優先度の高い課題を見つけ、対応を開始します。 |
| |
次に、ニーズをもう少し深く理解する必要があります。人々と話し合い、どのようなユーザーがこの機能を求めているのか、そしてどのように使うのかを考えます。 |
| |
次に、自分のマシンで JMP Live を実行し、この機能が現在の JMP Live のどこに適合するかを確認します。 |
| |
あるいは、コードを開いて、新しいコードが既存のコード ベースのどこに当てはまるかを確認することもあります。 |
| |
何が必要なのかをかなり理解できたと思ったら、設計に取り掛かります。ここでも、チームメンバーと話し合います。「これに似た機能に取り組んだ経験はありますか?コードのこの部分を扱った経験はありますか?」と尋ねます。 |
| |
そして、JMP のユーザー エクスペリエンスの専門家と話をします。 |
| |
車輪の再発明はしないようにします。例えば、JMP Liveに特化していない、非常に一般的な機能、例えばファイルに情報を記録する機能などがあれば、それも含め、JMP Liveの機能に特化しないようにします。 |
| |
それは解決済みの問題です。過去に何千人もの人が同じ問題を抱えていました。オープンソースの良い解決策があるかもしれません。 |
| |
もしそうなら、安全に使用できるかどうかを慎重に検証した上で、それを使用するかもしれません。 |
| |
まだやるべきことは山ほどあります。JMP Live特有のコードもたくさん書かなければなりません。そこで記事や図表を書いて、 |
| |
提案内容を説明し、チーム全員が私が目指すデザインの方向性に納得していることを確認します。その後、実際に座ってコードを書きます。 |
| |
そのために私は統合開発環境を使用します。これは、仕事の効率化に役立つさまざまな機能を備えたコードを作成するためのツールです。 |
| |
コードを少し書きました。チェックインする前に、書いたコードに問題があるかどうかを確認したいと思います。私も人間ですから、最初から100%完璧なコードを書ける可能性は低いでしょう。 |
| |
まず、非常に明白な問題を探すことから始めます。そのために、静的分析を使用します。 |
| |
静的解析は、コードが実行中ではなく、まるでページに書き込まれたかのようにコードを調べます。Microsoft Wordのスペルチェックに似ています。 |
| |
スペルチェックでは、魅力的な小説を書いたかどうかはわかりませんが、どこかにコンマが抜けているかどうかはわかります。静的解析は、コードに対して同じことを行います。 |
| |
こういった明らかな問題を見つけて修正したら、次はそれほど明らかではない問題の発見に移ります。そのために、自動テストスイートを使用します。 |
| |
これは実際にコードを実行するという点で静的解析とは異なります。特定の入力を用いてコードの一部を実行し、特定の出力を期待します。私たちはコードに対して幅広いテストを記述しました。 |
| |
そして、私は座って、取り組んでいる機能のテストを書きます。 |
| |
これは本当に便利です。テストを書くことで、コードがどのように動作するのかという自分の考えを明確にすることができます。また、将来誰かが誤って機能を壊してしまうのを防ぐこともできます。問題を早期に発見するのに最適な方法です。 |
| |
次は手動テストに移ります。自分のマシンでJMP Liveを実行し、新機能を試してみて、期待通りに動作するか確認します。 |
| |
JMP Live の背後にあるデータベースを調べて、レコード、投稿、グループ、ユーザー、コメントを追跡し、それらのレコードがすべて、私が考えるとおりに書き込まれているかどうかを確認することもあります。 |
| |
今は、良いコードを書けたと慎重ながらも楽観視しています。次のステップはピアレビューです。同僚の皆さんにコードを見てもらい、見落としている点があれば見つけてもらいたいと思っています。 |
| |
何かを見落としているのは、単に自分の視野が狭すぎたり、チームの他の誰かが自分に足りない知識を持っていたりするからかもしれません。このステップは、レビュー担当者にとっても非常に役立ちます。新しい技術を学べる可能性があるからです。 |
| |
ピアレビューを経た後、実際にコードをコミットするか、ソースコード リポジトリにチェックインする準備が整います。 |
| |
私たちのサーバーには、コードのチェックインを監視する継続的なビルド システムがあります。そして、チェックインが行われると、そのコードに対してさまざまな処理が行われます。 |
| |
例えば、正しいファイルが正しい場所に正しく配置され、正しい名前が付けられているかどうかなどを確認します。また、スタック分析を再実行し、自動テストスイート全体を再実行します。 |
| |
これは、結局のところ私たち人間なので便利です。誰かがプロセスの早い段階でこの作業を忘れていたり、前回の作業から何かが変わっていたりするかもしれません。 |
| |
コードが継続的ビルドを通過すると、開発グループ以外の人にも利用できるようになります。このことに最初に気づくのは、JMP内のテスト担当者です。 |
| |
彼らは、私たちの自動テストスイートに何かを追加するかもしれません。また、手動テストを実行するかもしれません。 |
| |
彼らは、ソフトウェアが様々なオペレーティングシステムやブラウザなどでどのように動作するかを調べるかもしれません。ユーザーがとりうる突飛な行動を想像し、何が起こるか、ソフトウェアがどのように反応するかを観察するでしょう。 |
| |
彼らは私たちのプロセスにおいて非常に重要な役割を果たしています。彼らは非常に創造的に考え、製品の問題を見つけようとしてくれます。 |
| |
承認が得られれば、ソフトウェアは次回のソフトウェアリリースで利用可能になります。それでは、製品全体、そしてプロセス全体をお見せしましょう。 |
| |
手順が山ほどあります。本当に膨大な量です。本当に全てのコードにこれをやる必要があるのでしょうか? |
| |
信じられないかもしれませんが、このプロセスは非常にスケールします。そのため、非常に単純で明らかなバグの場合は、このプロセスを非常に簡単に実行します。 |
| |
しかし、このプロセスの各ステップで非常に複雑な新機能を実現するには、スピードを落とし、時間をかけて、確実に正しく実行できるよう細心の注意を払う必要があります。 |
| |
時間のかかるものは企業にとってコストがかかります。では、なぜJMPはソフトウェアの品質向上にこれほどの投資を惜しまないのでしょうか? |
| |
理由はとてもシンプルです。私たちは仕事に誇りを持っており、良い製品を作りたいと思っています。 |
| |
2つ目の理由は、少し理想主義的なものではありません。もし自社製品に問題があっても、それを発見できなかったら、お客様が見つけてしまうでしょう。それはビジネスにとって良くありません。ですから、その問題を最小限に抑えたいのです。 |
| |
JMPはソフトウェアの品質向上に時間と費用を投資していますが、 |
| |
私たちはNASAのような組織ほどの資金を投入していないので、完璧さをお約束することはできません。市場に出回っている他のソフトウェアと同様に、 |
| |
JMP Live で、期待通りに動作しない点が見つかるかもしれません。何かお気づきの点がございましたら、ぜひご意見をお聞かせください。 |
| |
www.jmp.com/supportにアクセスして、動作に改善が必要な点や、今後追加してほしい機能などがあればお知らせください。 |
| |
実際のユーザーからのこのようなリアルなフィードバックは私たちにとって非常に貴重であり、大変歓迎しております。本日は以上ですが、Discoveryの残りの部分もぜひお楽しみいただければ幸いです。ありがとうございました。 |