こんにちは!エンタメ領域のDXを推進するブロックチェーンスタートアップ、Gaudiyでエンジニアをしているkei(@kei32bit)です。
Gaudiyの採用スタンスや具体的なスカウト手法についてはこれまでもご紹介してきましたが、今回は、実際のカジュアル面談や採用面談でエンジニアの方からよく聞かれる質問について深くフォーカスしていきたいと思います。
ブロックチェーンを扱っていると聞くと「何か特殊な経験が必要なのでは?」と思われる方が多いと思いますが、本記事では
- 事前にブロックチェーンの知識を持っておく必要はない
- ブロックチェーンを扱う企業にはレイヤーの違いがある
- 重要なのはソフトウェアアーキテクチャの原則に基づいた開発経験
をお伝えできればなと思います!
- 1. ブロックチェーンって実際どういう風に業務で使われるの?
- 2. ソフトウェアアーキテクチャの考え方ってブロックチェーン業務でも使えるの?
- 3. ブロックチェーン技術のキャッチアップってどれくらい必要?
- 4. さいごに
1. ブロックチェーンって実際どういう風に業務で使われるの?
まずはじめに、実際のプロダクト開発でブロックチェーンをどう使っているの? という質問がよくあります。
Gaudiyのプロダクトは「ブロックチェーン技術を感じさせないような作り」になっているので、外から見るとピンと来ない方が多いかもしれません。
Gaudiyのプロダクト例 techblog.gaudiy.com
現在、GaudiyではプライベートチェーンでNFTを発行していますが、このNFTを発行する際にチェーンに書き込む処理の部分でブロックチェーン技術を利用しています。
が、それ以外のところでは、現状はブロックチェーンに関わる開発はあまり存在しません。
というのもGaudiyはブロックチェーンを扱う企業ですが、アプリケーションレイヤーを扱っているので、ブロックチェーン自体の開発をごりごり推進する企業ではないからです。
ref. https://m13.co/article/crypto-and-the-consumer-the-road-ahead
アプリケーションレイヤー層にあたるGaudiyでは、ブロックチェーンはあくまでも数ある技術のひとつであり、ブロックチェーンを使わずに開発をするケースの方が多いです。
2. ソフトウェアアーキテクチャの考え方ってブロックチェーン業務でも使えるの?
結論からいうと、ソフトウェアアーキテクチャの原則に則った開発をGaudiyでは重要視しているため使えます。むしろ、開発する上でこちらの方がとても必要な考え方だと思っています。
ブロックチェーン技術にはいくつか課題があるのですが、良いUXを提供するためにはソフトウェアアーキテクチャの原則に則った解決策を試行錯誤することが求められます。
具体例でいうと、以前、大量のNFTを発行するプロジェクトにて「NFTの発行が遅延しても、UXを損なわずにユーザーへのNFT配布をどう実現するか?」という課題に直面しました。
ブロックチェーンに書き込む(=NFTをmintする)際に遅延が発生するということはわりと有名な話ですが、UXを損なわずにユーザーがNFTを取得できる、という体験を提供するには工夫が必要でした。
この際のアーキテクチャ設計では「遅延配布」「非同期」といったワードをもとに、「NFTを書き出す処理だけTask Queueを使って非同期的に処理しつつ、ユーザーの受け取り画面にはメタデータ(画像など)を先に返却する」という解決策を選択しました。
ユーザーに対してはNFTの画像データを先に受け取ってもらうことでUXを向上させる、という目的を達成しつつ、非同期的に遅延配布することでNFTとして配布するという機能要件も達成しました。ですがここで、また新しい課題に直面しました。
それは、非同期処理を行うことで、nonce(ブロック生成時に必要な32bytesの数値。この数値が被ってしまうとブロックが生成できずに詰まってしまう)の制御が難しくなるという課題です。
これは非同期処理で制御せずに並列処理を行ってしまうと、nonce値が被ってしまう恐れがあるからです。
この課題を抽象的に捉えると「直列処理」「排他制御」といったワードに変換できるので、当時は非同期処理の中で「直列処理で制御する」「並列処理を用いつつ、nonce値の予約を行うことで値の衝突を制御する」といった解決案を出すことができました。
まとめると、今回の課題であった「NFTの発行が遅延しても、UXを損なわずにユーザーへのNFT配布をどう実現するか?」の解決策としては、以下の2点について抽象的に課題を捉える必要がありました。
1. NFTの書き出しが遅い => 遅延対応、非同期処理といった一つ上の抽象概念として課題を捉える
2. nonceの数値が被らないようにNFTをmintしたい => 並列処理ではなく直列処理で扱う、nonce値の事前確保を予約システムになぞらえて排他制御を加える、といった上位概念の解決策を当てはめてみる
具体例が長くなってしまいましたが、課題に対して事象を抽象化する思考とソフトウェアアーキテクチャに則った開発経験があれば、ブロックチェーン特有の技術課題にも対応できると考えています。
3. ブロックチェーン技術のキャッチアップってどれくらい必要?
さいごに、非常によくいただく質問ですが、結論からお伝えすると、入社前からブロックチェーンのキャッチアップは必要ありません。
もちろん業務内容に応じてブロックチェーン技術の勉強が必要になりますが、Gaudiyでは以下のような文化があるため、業務内でのキャッチアップが可能です。なので、事前知識といったものは必要ありません。
3-1. ペアリサーチ
ペアプログラミングという開発手法がありますが、Gaudiyではリサーチ業務でもペアリサーチという形で取り入れています。
主に有識者とペアになってリサーチをするのですが、どんな内容でもラフに質問できるので、ブロックチェーンを学びながらリサーチを進めることができます。画面を共有しながら「なぜこの技術を調べてるのか」だったり「Twitterではこのあたりの有識者の方のコメントが勉強になる」だったり、自身のリサーチ力の基礎づくりにもなります。
以下の画像は、ペアリサーチをした際に異なるチェーン間でのスワップの仕組みについて順序を追って説明したときの図です。
Gaudiyでは現在、NFTをプライベートチェーンで発行・配布していますが、今後様々なパブリックチェーンにNFTを書き出す仕組みを進めており、「NFTを書き出すとは具体的にどういうことなのか?」を図を共有しながら説明したり質問を受けたりしました。
技術選定と同じで「なぜこの(ブロックチェーン)技術を使うのか」「メリット・デメリットはなにか」「ユーザー体験を損なわないか」といった議論は、ブロックチェーン技術を使った開発でも必須です。その前提知識の共有には、時間を費やしてしっかり理解する、というポリシーを持っています。
3-2. 超守-破離
「超守-破離」とは、Gaudiyの造語でCredo(行動規範)のひとつにもなっています。意味としては「まず先人の教えや原理原則に基づいた事例を学び、その上で新しいやり方がないか見つけ出す」といったものです。
- 議論を始める前に、原理・原則や先人の事例をリサーチする「超守」を徹底する。
- 過去の経験に過信せず、常に今のやり方を疑い、アンラーニングする。
- 超守の上で、新しい概念や方法を導入し、積極的に新たな価値を生み出す。
どんなプロジェクトでも、新しい技術を使用する場合は必ず「超守」する時間をとるため、その中でブロックチェーン技術がどう使われるのかをキャッチアップできます。
具体例を挙げると、以前Gaudiyで「NFTのメタデータをどうやって生成するか?どこに保存するか?」を議論するケースがありました。 現在プライベートチェーンで発行・配布しているNFTを、今後パブリックチェーンに書き出す際に、メタデータ(画像など)をどこに置くかを前もって調査する必要があったからです。
この際も「超守」と呼ばれるリサーチの時間を取り、「そもそもNFTの資産性とはなにか?」や「オンチェーン/オフチェーンの定義とはなにか?」といった「NFTの資産性とメタデータがどう紐づくのか?」というテーマで調べました。
「超守」する際には必ず他メンバーとディスカッションしながら進めるため、何を調べれば良いのか分からないといった状況にならずに、リサーチの方向性について議論しながら進めることができます。
4. さいごに
今回は、ブロックチェーンを扱うスタートアップとして、エンジニアの方からよくいただく質問についてご紹介させていただきました。
冒頭でもご説明した通り、Gaudiyではブロックチェーンを扱っているものの、アプリケーションレイヤーでの開発を行っているため、ブロックチェーン自体をごりごり開発しているわけではないです。
ブロックチェーン特有の知識などは入社前には不要ですし、実際にエンジニアの約半数は入社後にペアリサーチなどを通じてキャッチアップしています。
ブロックチェーン企業の間にも扱うレイヤーの違いがあるため、一概には言えませんが、ブロックチェーン企業への応募に対してハードルを感じているエンジニアの方々にご参考になれば嬉しいです。
もっと詳細が知りたい、という方はぜひMeetyでお話しましょう!
Gaudiyの技術選定などについて知りたい方は、以下の記事もご参考ください。
ブロックチェーンの勉強を始めてみたい方は、こちらもどうぞ。