Uploaded avatar of iHiD

Ryan Pottsへのインタビュー

@iHiD
7年以上前

Ryan Pottsへのインタビューです。彼とJeremy Walkerが、Delphi、Exercismのコントリビューターとして学んだこと、そして今なお「オフライン」の業界でプログラミングしてきた経験について語ります。

こんにちは、Ryan。お時間を取って話してくれてありがとうございます。RyanはExercismのDelphiトラックのメンテナーですね。Delphiを始めたきっかけは何ですか?

父が創業した会社で働いています。その会社は80年代からソフトウェアを開発していて、最初はMicrosoft Pascal、その後はBorlandのTurbo Pascalを使っていました。96年にその会社で働き始めましたが、ちょうどその頃、DOSではなくWindowsで動くソフトウェアを作ってほしいという依頼が会社に届いていました。都合のよいことに、BorlandはちょうどDelphi 1をリリースしたばかりでした。長年かけて開発してきたほとんどのユニットをそのまま使えたので、私たちにとってはうってつけでした。Windowsに対応するためにVBやVCで一から作り直す必要はもうありませんでした。

そして今も日常的にDelphiを使っているのですか?

はい。職場では、自動車業界での研究開発テストや小ロットテスト向けの機械を製造しています。タイヤ、カーシート、エアバッグのインフレーター、さらには衝突テストなどを試験するものです。製造されたシステムはすべて、世界中の複数の自動車メーカーとそのサプライヤーによって使われています。

担当しているソフトウェアは、これらさまざまな種類の機械を制御するためのものです。UIを開発し、テストの自動化された部分のテストシーケンスを考え、アナログとデジタルの両方の入出力ポイントを統合します。最小限のトレーニングしか受けていない人でもかなり快適に使えるように、できるだけ使いやすくする必要があります。

私の仕事にウェブプログラミングは一切必要ありません。やっていることはすべてWindows上のDelphiです。ときどき、C++で小さな「カスタムコマンド」をさっと書いて、それをデータ収集プロセッサーボードにアップロードすることがあります。このボードは、コンピューターのPCIスロットに挿さっている並列コンピューターで、独自のCPU、メモリ、OSを備えています。

ウェブプログラミングを一切しない人と話すのはとても興味深いです。今の時代ではかなり珍しいように感じますが、それは業界を反映しているというより、日々耳にする情報のシグナルとノイズの比率なだけなのかもしれません。

ええ、Exercismに関わることで、コンピューター業界の「もう半分」がどう暮らしているかを少しだけ覗くことができました。テスト駆動開発(TDD)、GitHubの扱い方、オープンソースプロジェクトでの作業について多くを学びました。学んだことの多くは、仕事の質を高めてくれています。

そう聞けて本当によかったです。Exercismのいちばん好きなところのひとつは、その「もう半分はどう暮らしているのか」という雰囲気です。自分の盲点に気づき、存在すら知らなかったことを学べます。トラックのメンテナーをしていることで、その学びはさらに深まったのではないですか?

そうですね。以前より多くのテストを書くようになりました。必ずしもTDDそのものではなく、テストが先ではなく後から来ることもあります。ただ、コードの構造の組み方には影響していて、テストしやすくするために不要な依存関係を取り除くようになりました。

problem-specificationsリポジトリでissueやPRをレビューするのに多くの時間を費やしています。ここではExercismの演習を言語に依存しない形で定義しています。ディスカッションから多くを学びました。提案された変更が表面的には単純に見えても、その後の会話で問題が見つかることがあります。以前より忍耐強くなりました。仕事での技術的な問題に対して、別の可能性のある角度を探すことを教えてくれました。

メンタリングについても多くを学びました。とくに、単に「どうやるか」だけでなく、その根底にある「なぜ」を知ることの重要性です。私は数人のプログラマーと一緒に働いています。ほとんどの人より年下ですが、会社にいる期間は彼らより長く、機械を動かす順序を組むためにより効率的な方法を指摘したり、なぜあることを特定のやり方で行う必要があるのかを説明したりできることがよくあります。

Exercism以外でも、DelphiのMVPなのですね。すごいです! どのようにしてそうなったのですか? 参加されているDelphiコミュニティは強いのですか?

Delphiトラックを立ち上げる初期の段階で、EmbarcaderoのJim McKeethさんに連絡を取り、Delphiのオープンソースライセンスを取得できないか尋ねました。それが実現すれば、Delphiを使って新しい演習を開発し、プルリクエストを通じて他の人にもコントリビュートしてもらえます。やり取りを進めるなかで、JimからEmbarcadero MVPプログラムに招待されました。

Delphi Praxisは、よく利用しているオンラインコミュニティです。Google+には多くの投稿がありますが、終わりに向かっているので、別の場所に行く必要があります。

他の人が見られるような、Delphiで作ったオープンソースアプリはありますか?

あります! ExercismのWindows CLIインストーラーはオープンソースで、すべてDelphiで書かれています。学習者が必要とするExercism CLIの正しいバージョン(32/64ビット)を自動で判断し、CLIをダウンロードして展開し、適切な場所に配置します。このインストーラーは15,000回ダウンロードされていて、かなり誇りに思っています!

それは素晴らしい成果ですね! インターネットプログラミングをほとんど(まったくと言っていいほど)しない立場として、Delphiでインストーラーを作るにあたってどんな課題に直面しましたか?

インストーラーは最初C#で書かれていました。古くなっていたので、改善できないか試してみることにしました。このようなものに挑戦したことはありませんでしたが、Delphiにそれをやり遂げるツールがあることは知っていました。まず元のC#コードを読んで、裏側でどのような一連の処理が行われているのかを理解し、同じ作業をDelphiで実現しようとしました。Embarcaderoのドキュメントサイトでサンプルコードを見つけ、RESTクライアントを作るために利用できるコンポーネントを正しくつなぎ合わせる方法がよくわかりました。Delphiに付属する便利なユーティリティ、REST Debuggerも見つけました。これを使うと、インストーラーを成功させるために必要な各種のHTTP呼び出しを入力してテストできます。うまく動くようになると、デバッガーが必要なコンポーネントのコピーを作成してくれるので、それをコードに貼り付けられました。

Exercismにもっと深く関わりたい人、たとえばメンテナーを目指している人に向けて、これまでの歩みを聞かせてもらえますか?

地元のAkron Code ClubというMeetUpグループのメンバーです。月に一度ほど集まり、たいていはペアを組んで、グループに提案されたコードカタを解きます。2016年8月のミートアップで、Exercismが提供する演習に取り組み始めました。Exercismや他のいくつかの学習サイトを使ううちに、こうしたオンラインのプログラミングサイトがもっとDelphiやPascalを選択肢として提供してくれたらいいのにな、と思うようになりました。ExercismのサイトとExercismのGitHubリポジトリを見て回ったところ、Exercismは常に新しい言語トラックの追加に関心があることがわかりました。Katrinaにどう連絡するのがいちばんよいのか、よくわかりませんでした。'16年8月にGitterを使って彼女に連絡し、Delphiの追加を提案したのだと思います。2か月ほど後に謝罪の返事が届き、そのときに彼女はGitterをやっていないのだと気づきました。ともあれ、彼女はDelphi Pascalトラックの追加にまだ関心があるのか、関心があるなら話を進めようか、と尋ねてきました。

今では、新しい言語トラックを申請するためのリポジトリがあり、exercism/exercismリポジトリでissueを立てれば、いつでもプロジェクトのメンテナーに連絡できます。

ありがとうございます。お話しできてうれしかったです。そしてExercismでのすべての活動に感謝します!

こちらこそ! とても楽しかったです。Exercismに参加して、できることをするのが好きです。実際に手を動かして学ぶ、ですね!

2019年01月30日(水) · 役に立ちましたか?