連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。
今回は、株式会社リチカさんに、「リチカ クラウドスタジオ」におけるリアルタイム静止画編集機能の作り方を詳しく伺ってきました!
新機能の開発プロジェクトについて伺う
――今日は、色々お話を聞けるということで楽しみにしていました。まずは自己紹介をお願いします。
杉本:株式会社リチカでフロントエンドエンジニアをやっている杉本と申します。
朝賀:朝賀と申します。3月に入社し、バックエンドやセキュリティなどを主に担当しています。
――現在、どんなプロダクト開発に従事していらっしゃいますか?
杉本:誰でもかんたんにマーケティング動画や静止画を作れるWebサービス『リチカ クラウドスタジオ』を開発しています。
『リチカ クラウドスタジオ』は、業種別や配信媒体別の数多くのフォーマット(型)をベースに、クオリティの高い動画を誰でもかんたんに作成できるのが特徴です。当社は元々制作会社だったため、社内にプロのクリエイターが多数在籍しているので、彼らによって制作されるフォーマットが大きな強みのひとつです。
朝賀:昨年後半からは、『リチカ クラウドスタジオ』の新機能の開発プロジェクトが進行していて、現在は主にそちらの開発に従事しています。
――どのような新機能か、伺ってもよろしいですか?
はい、大きく分けて2つありまして、静止画のリアルタイム編集機能と、比率違いの静止画を一括制作できる機能です。
これにより、ブラウザ上で作成したイメージを、他の比率にも最適化された形で一括反映できるようになります。すでに一部のお客様には機能を提供し始めています。
「Reactのカスタムフックは非常に重宝しています」
――その新プロジェクトでお二人が開発をされている、と。
杉本:はい、私は主にフロントエンド側で、静止画をリアルタイム編集する機能を作っています。
作成中の静止画は、APIを経由してサーバーに送信され、自動保存されます。静止画そのものを送るわけじゃなくて、静止画の構造をJSON形式に変換して、それをサーバーに送信する形を取っています。
――高度なフロントエンド処理が求められそうですね。どのようなライブラリやアーキテクチャで開発していますか?
杉本:主にReactを使用しています。特に、カスタムフックは非常に重宝していますね。
途中から一部の機能をカスタムフックを用いた実装に切り替えたのですが、コードの見通しが非常に良くなり、生産性も向上しました。
――非常に興味深いです。詳しく教えてください。
杉本:はい、カスタムフックについてはご存じの方も多いと思うのですが、カスタムフックを使うと、コンポーネント内のロジックをフックに抽出して共通化することができます。
以前の実装では、例えばエラーハンドリングに問題を抱えていました。
以前はAPIリクエストを行う処理をコンポーネントの処理内に記述していたんですが、APIでエラーが発生した場合、それを適切に処理してユーザーにエラーメッセージを表示する…といったことがうまくできなかったんです。
そうした処理をカスタムフックにまとめることで、コードの再利用性が高まり、アプリケーションの堅牢さも向上しました。
――他にも、カスタムフックの恩恵を受けて実装が楽になった処理などはありますか?
杉本: そうですね、UndoやRedoなど、操作履歴を管理する機能も、カスタムフックのおかげでスマートな実装が実現できたかと思います。
Undoなどの処理を実現するには、ユーザーが行った操作と逆の操作を行っていくやり方と、各操作を行う時点のスナップショットに戻れるようにするというやり方がありますが、私たちの実装ではスナップショット方式を使っています。
ステート管理とカスタムフックを組み合わせることで、アプリケーションの状態のスナップショットをスムーズに行き来できるようになっています。
――ちなみに、ステート管理にはどのようなライブラリを使用しているのですか?
杉本: JotaiやRecoilなど色々試した結果、現在はJotaiをメインで使用しています。Jotaiは軽量なのがすごく良いですね。
――静止画のリアルタイム編集処理を作るには、数学の知識なども必要とされそうですが、そういった点で苦労はありましたか?
杉本:実は、数学の知識がほとんどない状態から開発を始めたんです。だから最初は苦労の連続でした。
――そうなんですね!じゃ、開発だけじゃなくて数学の勉強も大変だったのではないですか?
はい、そのとおりです。例えば、図形のサイズを変更するってだけなら大したことはないんですが、図形を傾けてから変更する…となると、図形を傾ける軸の座標と図形を配置してある座標が違うので途端に難しい。
そうした処理を実装するのに、結局ベクトルや行列の勉強をしなくてはなりませんでした。
――ほかには例えば、図形同士が重なっていたりしても大変そうです。
そうですね、図形の重なり順を変更するなどの機能も、なかなか実装が大変でしたね。「最前面に送る」とか「最背面に送る」とかならまだ楽なんですが、「前面へ」とか「背面へ」とか、順番を一つずつ入れ替える処理などは苦労しました。
――そうした数学の学習はどのように行ったんでしょうか?「数学が不得意」というフロントエンドエンジニアの方の参考になるかと思うのでお聞かせください。
まずは、数学について解説してくれているサイトを見ながら、一つずつ学んでいきました。あと、Victor.jsなどのライブラリを使いながら、実際に動かしながら学習しましたね。
やはり、「仕事として作らねばならない」という目標があるのが良かったです。必要な知識を最短で吸収することができました。
ヘッドレスChromeで静止画出力!webフォントに落とし穴
――静止画エディタを開発していらっしゃる方からお話を伺うのは初めてで、大変新鮮です。他に開発に苦労した機能などはありますか?
杉本: そうですね、やはり、静止画を出力する機能はなかなか実装に苦労しました。
朝賀: マーケティング用の静止画って、YouTubeだとかInstagramだとか、出力先に応じて最適なサイズや縦横比が異なるんです。ブラウザ上で編集した静止画を、そうした要件に合わせた様々なサイズで出力するのが実はかなり大変なんです。
――確かに、ブラウザ上で作成したイメージを静止画に出力するのって、どうすれば実現できるのか想像がつかないです。どのように実現したのでしょうか?
朝賀: サーバーサイドでChromeを立ち上げてイメージを描画させて、スクリーンショットを撮るようなやり方で、静止画を作っています。
――おお、なるほど!そのようにすれば確かに静止画化できますね。しかも、ブラウザ上で描画できるどんなものでも静止画にできちゃいますね。
朝賀: そうなんです。もう少し具体的に言うと、AWSのコンテナ上でヘッドレスChrome(UIを伴わずに起動できるChrome)を立ち上げて実装しています。
まだ開発途上の段階なので、リクエストを受けてからChromeが立ち上がるような実装になっていますが、それでも2-30秒程度で処理が完了するので、今後最適化すれば、実用上全く問題ないレベルになると考えています。
――大変興味深いお話です。実現までには色々ご苦労があったかと思いますが…
朝賀: 一番苦労したのは実はwebフォントですね。
――webフォントですか?
朝賀: はい、クリエイティブ用のツールなので、様々なwebフォントも利用可能にしなくてはならないのですが、webフォントの多くは、ドメイン単位での利用が前提となっています。
でも、サーバーサイドでヘッドレスChromeをただ立ち上げるだけだと、アクセスURLが「localhost」とか、サーバーのIPアドレスとかになってしまうので、webフォントが使えなかったんですよ。
なので、サーバーサイドの(ヘッドレス)Chrome上でもwebフォントを利用できるよう、専用のホスティングサーバーを立ち上げてそこにアクセスする…などの工夫が必要でした。ローカルドメイン設定するとか他に良い方法はあったと思いますが、今はホスティングする形になっています。
――まさかwebフォントが苦労するポイントになるとは…。技術的にチャレンジしてらっしゃるからこそ出会うハードル、という感じですね。
リチカはエンジニア募集中!
――そろそろお時間になってしまいました。まだまだお話を聞いていたいところですが、ここでまとめの一言をお願いします。
杉本: そうですね、ブラウザ上で静止画の作成を実現するために難しい開発を求められるので、フロントエンド開発のやりがいがありますね。技術的にはもちろん、どんな要件を実現するかという点でも、いろんなチャレンジをさせてもらっているなと思います。
朝賀: やりがいっていう点だと、リチカ クラウドスタジオは社内の人も使っているので、サービスを改善すると同僚が喜んでくれるんです(笑)
社内からのフィードバックがすぐ得られて、同僚を喜ばせることができるっていうのは、個人的にはかなりやりがいになっていますね。
杉本: 弊社は現在フロントエンドエンジニアやフルスタックエンジニアの方を大募集中ですので、技術的なチャレンジや、クリエイティブ領域のプロダクトづくりに少しでも興味のある方はぜひご応募いただければ幸いです。
――本日は、ReactからヘッドレスChromeまで、興味深いお話を沢山お聞かせいただきありがとうございました!
When you are a first-time offender or a seasoned criminal, knowing the charges against you is essential to putting together a strong defense. This book seeks to clarify the key components of criminal charges in Fluvanna County, giving defendants enlightening knowledge about the legal process and the function of a criminal defense lawyer fluvanna county va in building a solid defense.
Nice post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part I care for such information a lot. I was seeking this certain info for a long time. Thank you and good luck. 먹튀검증
¿Buscas ayuda para la violencia doméstica en Nueva Jersey? ¡Estás en el lugar correcto! Nuestra organización ofrece una amplia gama de recursos y apoyo para sobrevivientes de violencia doméstica en todo el estado. Desde refugios seguros hasta asesoramiento legal y emocional, estamos aquí para ayudarte en tu camino hacia la seguridad y la recuperación.Ayuda Violencia Doméstica Nueva Jersey
Orden Protección Nueva Jersey
感謝は、私たちが持っているものを十分なもの、そしてそれ以上のものに変えます。それは否定を受け入れに、混乱を秩序に、混乱を明晰に変えます...それは私たちの過去を理解し、今日に平和をもたらし、明日へのビジョンを生み出します doodle baseball
In Amelia, Virginia, a skilled traffic lawyer is your key ally when confronted with traffic violations. Possessing a nuanced understanding of local traffic laws, these attorneys navigate Amelia County's legal landscape adeptly. Whether addressing speeding tickets or more severe charges, they formulate strategic defenses to minimize consequences such as fines and license points. A dedicated Traffic lawyer amelia virginia ensures transparent communication, keeping clients informed about case progress and potential outcomes. By enlisting their expertise, individuals benefit from a legal advocate committed to achieving the best resolution for their specific traffic-related challenges in Amelia, Virginia, providing guidance and support through the legal process.
Visit site: Traffic Lawyer Amelia VA | Traffic Lawyer Amelia Virginia
As a biomedical engineer, Elizabeth specializes in designing innovative urinal toilet systems for individuals with mobility challenges. Her passion for improving quality of life led her to develop user-friendly, automated solutions that promote independence and dignity. Her designs have revolutionized the field, offering customizable options for diverse urinary needs.
感謝は、私たちが持っているものを十分なもの、そしてそれ以上のものに変えます。 それは否定を受け入れに、混乱を秩序に、混乱を明晰に変えます...それは私たちの過去を理解し、今日に平和をもたらし、明日へのビジョンを生み出します。
spacebar clicker