プレイドでのインターンを振り返って

(このブログ記事は、Interning at PLAID for 2.5 Monthsの本人による翻訳記事です)

こんにちは!
プレイドで5月中旬から8月までDevインターンとして働かせてもらっていたアボンデット(@arnaud_avondet)です。僕は日本育ちのハーフで、今は米国ペンシルベニア州のカーネギーメロン大学で数学を専攻している大学2年生です。大学ではCMU日本学生会や、CMUブロックチェーングループで活動をしています。プログラミングは2年前に興味を持ってPythonの学習で始め、ウェブ開発は一年ぐらいの経験を持っています。

今回のインターンシップはプログラマーとして初めての仕事であり、フロントを書いたり多国化対応(i18n; Internationalization)の仕事を通して色々学べました。今回は開発プロセスとプレイドの文化について振り返ってみました。

pic1

フロントエンド

JSのコードを書いて来たこの一年間、僕は色々なアニメーションのライブラリに触れたり、UI/UXの記事などを読んでフロントエンドに興味を持ちました。プレイドに来て二週間目、早速フロントエンド関連のチームのタスクをもらい、初めてのフレームワークを習う事になりました。プレイドが提供しているCXプラットフォームKARTEはVueを使っているので、それを通してコンポーネント式のフロントエンドの書き方を勉強しました。

僕にとってKARTEのような大きなプログラムの開発プロセスに関わるのは新しい経験でした。普段であればHTMLを早く書いて、長時間かけて下手なCSSでスタイリングをし、最後にロジックを書くという作業を毎回繰り返していました。全部に触れられる事が楽しいのは確かですが、一つ一つの段階で全力を尽くせていない感じがしました。会社での開発は一味違い、綺麗なUIをInVisionで作るデザイナー、HTMLでそれを実装するコーダー、それでロジックをJSで書く僕、とそれぞれの仕事を得意な人が担当するようになっていました。一人一人が独自のタスクに集中出来るため、より良いプロダクトが出来上がりました。その上、プレイドではタスクにより違う役割を任せてくれるので色々な得意分野を生かせるようになっていました。自分でコードする時よりも効率的な仕事が出来た気分になり、気持ち良かったです。

画面の組み込み作業をやっていく上で、一番重要性を感じたのがデザイナーとプログラマー関係性です。特にフロントだけを書き換えるタスクでは既存のバックエンドの資産をそのまま活用しつつ、機能の互換性や網羅性を担保するためにはコミュニケーションをうまくとる事が大切です。デザイナーとプログラマーの観点をよく活用し、直面している制限を乗り越えられる解決案を生み出すのが何よりも貴重だと思いました。
アサインされた仕事の一つは、アカウント設定ページの組み込みでした。最初はどのユーザーでも何回かは使う画面を自分が担当する事に対してとても緊張していましたが、エンドユーザーと直に接する楽しみもありました。コードの動作チェックをする時、様々なユーザーの行動を予測して作業をしていくと色々な行動パターンに気づき、新しい案などが思い付いてきました。この画面の開発はやった仕事の中でも一番楽しく、ユーザーがそのページと接する事を考えると嬉しいです。

pic2

多国化対応(i18n)

インターンを始めて3週間目に会社内で2週間に一度行われる「Dev Demo Day」に参加しました。「Dev Demo Day」とは各エンジニアチームがここ二週間でやった仕事のデモをしたりその開発に対して振り返る場でした。僕がそれぞれのチームの発表を見て一番興味を持ったチームは、多国化対応を担当するi18nチームでした。18年間日本で育ったハーフとして、僕は日本と西洋の文化や言語によく触れていて、お互いの違いや類似点を深く理解しています。これなら自分も何かを貢献できると思い、チームに入りたいと決意しました。

当初は多国化対応の難しさを知らず、ただ小さなリファクタリングを掛けたり、多言語のリソースファイルを用意するだけだと思っていました。プラグインはvue-i18nを使い、簡単に通貨のフォーマットや言語を変換出来るようになっていました。そのライブラリを作った@kazuponさんも同じチームで一緒に作業をしていて、多国化対応のどんなチャレンジも乗り越えられる自信がありました。ですが、チームに入ってから数日後、早くも先の道のりが思ったより長く見えてきました。

i18nをやってきた上で一番印象に残ったのが、特定の言語や文化のUIへの影響でした。チームとしてよく見かけたのが日本人のユーザーを意識して作られていた画面で多国化対応には難しいものがたくさんありました。その中でも一番困難だったのが日本語の文の構造を中心としたデザインであり、そういう場合には簡単なリファクタリングだけでは綺麗に対応出来ず、デザイン自体を再検討する必要がありました。

このようなチャレンジと向き合い始め、僕は色々なグローバルなウェブサイトはどうやって効率的に多国化対応をしているか気になって調べた結果、一つの会社が僕にとって際立っていました。Githubは世界中で使われているサイトでもありますが、驚いた事に言語のサポートは英語しかないのです。UIをより顕密に見るとラベルのほとんどがユーザー側でインプットされたものが表示されていて、そのためユーザーのネイティブ言語になっています。その他の細かいタブなどは「issue」や「pull request」のように短くて簡単に覚えられる単語を使用しているため、英語が流暢でなくても慣れやすくなっています。Githubのコア部分には英語の長くて難しい文章がないため、誰でも使えるようになっています。

Githubを例とし、i18nの作業でできるだけユニヴァーサルな表記法を使うようにしました。例えば「9時30分」とUIに書いてあるものを「9:30」にしたり、どこの国の人でも理解できるように気を使いました。今だとこういう細かい修正は小さく感じますが、将来的にグローバル化したいソフトウェアとしては長い目で見ると今から標準的に対応する必要があります。

多国化対応をソフトウェアエンジニアリングの観点から考えたことがなかったですが、プレイドのi18nチームと共に活動をした結果、グローバル化する企業にとってはとても重要な要因であることに気付きました。国際化はラベルを一旦全部翻訳して一度きりで終わるものではなく、開発フローを修正したり、品質チェックを導入し管理する動的なプロセスだと分かりました。KARTEのi18nで直面した様々な困難を考えるとさらに大きいソフトウェアの多国化対応の難しさが想像できないです。

pic3

プレイドの文化

この2ヶ月半で一番印象に残ったのがプレイドのカルチャーでした。インターンとして僕は小さいissueや面倒なデバッグをすると想像していました。実際には2週間目にはもう新しい画面の組み込みタスクを渡され、3週間目には正社員と一緒のエンジニアチームに入れさせてもらいました。色々なミーティングに参加したり、他の社員と協力したりと没入的な経験が得られました。

プレイドがインターンにとって最高な会社である一番の理由としては会社のフラットな構造がある事だと思いました。僕は他のエンジニアと一緒のように扱われ、自分の意見や提案を悩まずに言える環境で仕事ができました。入社した当時、フロントへの興味を少し表しただけですぐに画面の組み込み作業をくれました。僕が助けられるi18n関連のタスクがあるか聞いてみたらチームに加入させてもらい、席もチームの横で作業出来るように動かしてもらいました。フロントとi18nに手をつけ始め、画面の組み込みと一緒に多国化対応もしていく提案をしたらそれも受け止めてくれて、二つのチームと一緒に同時に作業を進められるようにしてくれました。

時にはこのフラットな構造の問題点にも気づきました。場合によってはチーム同士のコミュケーションが良くとれていなく、具体的に他のチームがソフトウェアのどこの部分の作業をしているのかがはっきりしていなかったです。i18nチームとしては近い将来に使われないコードを対応しないように新しく作られる画面や機能などについて知っておきたいところですが、それでも時々もったいない仕事をしてしまいました。このようなコミュニケーションのずれを防ぐためにプレイドのエンジニア部門も2週間に一回は最近やっている仕事について発表する「Dev Demo Day」があります。それでも、これは任意であり、発表をしても5分間のデモだけで重要な点を見逃してしまう事がよくありました。このミーティングはきちんとした構造がないため、ポテンシャルを最大限に発揮できていない感じはしましたが、コミュニケーションを良くする一歩としてはとてもいいと思いました。長所や短所関係なく、僕はプレイドのような日本にとってはユニークに動いている会社の一部として働けた事に感謝しています。

ベンチャー企業であるため、プレイドの開発速度はとても速かったです。週ごとにリリースされる新しい機能の数が見事で、自分の書いたコードが短時間で使われる事に満足ができ、終わった仕事に対しての価値観が強く感じられるのが好きでした。僕はすぐにこのペースに慣れて、いつの間にか好きになってしまいました。特にいつもやる事がたくさんあったため、自分でも次にやるタスクが簡単に見つけられ、退屈であった一日はなかったです。タスクを選択する事で自分の能力にあった仕事、もしくは一番良いチャレンジになる仕事を選ぶ事ができました。

pic4

最後に

当初インターンを始めた時、2ヶ月半は長い期間だと考えていましたが働くほどすぐに時間がたってしまいました。自分を「プログラマー」と呼ぶことができるかどうかわからない状態から、どこのエンジニアチームでも自分の能力を発揮できる自信を持てるようになりました。インターンシップならではの経験を得ながら、会社のために何かを貢献できて嬉しいです。短い時間であっても、プレイドでのインターンシップは僕にとって素晴らしい経験であり、これからの会社の進歩を見るのがとても楽しみです!