1
/
5

1on1 ミーティングのトピックを NFT にしました

1on1 お願いします

 ワンオンワンオン!合宿免許!ワンオン!
 宣伝隊長の宮崎です。

 1on1 ミーティングね。大変ですよね。
 メンバーの立場からは自分のことだけなのでよいのですが、マネージャーの立場からすると人数分の時間と脳のリソースが必要です。私はいまはマネージャやってなくてメンバーの立場なのですが。
 なかなか大変だと思うんですよ。
 だから…


1on1 やってください!


 代表の鶴岡の予定にねじ込みました。
 私は社内ではだいぶ歳いってますけど、かまってほしいんです。いつもはワンオペ育児をやってますが、ずるい!子どもばっかり優遇されててずるい!壮年男子もかまってほしい!

 ふだんは福岡オフィスで YouTube のおもしろ動画を探すかたわらソフトウェア開発の仕事をしたりしています。
 いっぽう、本社は大分で鶴岡も大分在住です。ふらりと福岡オフィスに来てはいつの間にか消えています。
 かまってもらうには、こちらから大分に乗り込むしかない。


オフィス移転のお知らせ |イジゲングループ株式会社
この度当社は2023年4月3日(月)より下記住所に移転を行うこととなりました。今後とも一層のご支援を賜りますようお願い申し上げます。【大分本社オフィス】 〒870-0822 大分県大分市大...
https://ijgn.group/newsrelease/post/JvgiSI7w


 とはいえ、1on1 の大変さは理解してるわけですよ。
 とくに私は頭の中が忙しいタイプなので、目の前の仕事の話が 2 秒後に芥川賞や受動意識仮説や多世界解釈の話に飛んでしまいがち。時間を有効活用するため、事前に話したいことをリストアップしておくことにしました。

 取り上げたいトピックを箇条書きにならべていたところ、おや?これ、物理的なカードにしたらおもしろいのでは?裏返しにして引いてもらうとか。1 枚だけジョーカーを潜ませておいて、引いたら爆弾質問に回答しなければならないとか…(あるいは、私に寿司をおごらないといけないとか)

 そういえば、自分の話したいことって他の人も同じように話したかったりするんじゃないでしょうか。
 世の中にはソリューションがあふれています。あふれ返っています。課題は存在しないのにソリューションだけが存在していたりします。ソリューションは商品になりますからね。
 問題がない人に対しても美容や健康にまつわるソリューションを売りつけようとしていますよね。

 そんな状況ですから、世界には課題が足りていないわけです。課題には価値がある。
 ということは、1on1 のトピックにも価値があるのではないでしょうか…


そうだ、NFT にしよう。


NFT(ノンファンジブルトークン)とは?暗号資産(仮想通貨)との違いは? - 【DMMビットコイン】暗号資産(仮想通貨)ならDMM Bitcoin
2021年に入ってから突如としてNFT(ノンファンジブルトークン)という言葉を耳にするようになりました。ニュースでは、ゲームアイテムのNFTやアート作品のNFTが高額で取引されたといった話題もよく上がるようになり、暗号資産(仮想通貨)業界は、今後ますますNFTがブームになるともいわれています。しかし、それと同時に「NFTってなんだろう?」 ...
https://bitcoin.dmm.com/column/0198


 おもしろいことを思いついたらやってみないと気がすまない若手お笑い芸人マインドを持ち続けています。(そろそろ捨てたい)
 さっそく実装してみました。

1on1 NFT を作ってみよう

 ここから先はとても乱暴な説明になります。正しくていねいに書くと、ひとつの記事では収まらないので。
 正確な説明はあちらこちら探してみてください。
(よくまとまっているので DMM Bitcoin の記事を貼っていますがアフィリンクではありません。この記事をおもしろいと思ったら方はカフェ代おごってください)

 これから作るのは、DApps(分散型アプリケーション)と呼ばれるものです。ブロックチェーン上に Smart Contract を実装してバックエンドとします、それをフロントエンドから呼び出します。


Dappsとは何か?イーサリアムが人気を牽引 - 【DMMビットコイン】暗号資産(仮想通貨)ならDMM Bitcoin
Dapps(ダップス)とは、 ブロックチェーン 上でスマートコントラクトを利用することで実現できるアプリケーションです。現在、数多くの分野でDappsが開発され始めており、次世代型のソフトウェアとして注目を集めています。本稿ではそのDappsについての概要を解説します。 Dappsは、Decentralized Applicationsの略称です。日本語で「分散型アプリ」と呼ばれています。 ...
https://bitcoin.dmm.com/column/0142
ブロックチェーンで自動契約!スマートコントラクトの事例と仕組み - 【DMMビットコイン】暗号資産(仮想通貨)ならDMM Bitcoin
ブロックチェーン が誕生して起こった大きな変化として、分散型アプリケーション(Dapps)が開発されるようになったことが挙げられます。 Dappsはブロックチェーン上で稼働するアプリケーションで、その根幹には スマートコントラクト ...
https://bitcoin.dmm.com/column/0138


 よく名前を聞く Ethreum をはじめいろんなネットワークがあって、プロダクトを開発しようと思うと悩みどころです。
 今回は、ガス代(あれこれするときの手数料)が安い Polygon を利用します。ガス代が安いので多くの NFT が Polygon 上に発行されています。


Blockchains for mass adoption
Polygon is the most proven way to build and scale your decentralized application and projects on Ethereum, the world's largest blockchain ecosystem.
https://polygon.technology/
Home | ethereum.org
Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code that controls money, and build applications accessible anywhere in the world.
https://ethereum.org/


 Polygon 上の Smart Contract は Ethreum とおなじく Solidity という言語で記述します。
 ちなみに、Dart を使えるネットワークも出てきているので、利用できる開発環境も考慮して選択するという手もあります。


Solidity Programming Language
As a beginner, you find great tutorials, resources and tools that help you get started building with Solidity on the ethereum.org developer portal. Alternatively, you can start by learning the basics about blockchain, smart contracts and the Ethereum Virt
https://soliditylang.org/


 開発は Remix IDE を使うと超かんたんです。
 ブラウザ上で開発することができて、npm モジュールでローカルファイルと同期することもできます。mac だとうまくいかなかったのですが VScode と連携するプラグインもあります。


Remix - Ethereum IDE & community
Web site created using create-react-app
https://remix-project.org/
@remix-project/remixd
remix server: allow accessing file system from remix.ethereum.org and start a dev environment (see help section). Latest version: 0.6.13, last published: 15 days ago. Start using @remix-project/remixd in your project by running `npm i @remix-project/remix
https://www.npmjs.com/package/@remix-project/remixd


 Remix を起動すると開かれるサンプルプロジェクトでも使われていますが、OpenZeppelin のライブラリを使うとこれまた超かんたんに Smart Contract を実装することができます。
 ただし、コードのサイズが大きくなるとガス代が高くなってしまいますから、ご利用は計画的に。


GitHub - OpenZeppelin/openzeppelin-contracts: OpenZeppelin Contracts is a library for secure smart contract development.
A library for secure smart contract development. Build on a solid foundation of community-vetted code. 🧙 Not sure how to get started? Check out Contracts Wizard - an interactive smart contract generator. 🏗️ Want to scale your decentralized application? Ch
https://github.com/OpenZeppelin/openzeppelin-contracts


 今回は NFT を作りたいので、ERC-721 の規格に従います。これも OpenZeppelin のライブラリを使えば超かんたん。
 ここに独自のメソッドを実装します。

 実装したら、テストからデプロイまで Remix IDE 上で完結します。
(とりいそぎ暗号資産を管理している普段使いのアカウントでデプロイしましたが、セキュリティ的には DApps 用アカウントは別にしたほうがよいです)

 今回は、Metamask というメジャーなウォレットに対応しました。
 Metamask の Chrome 拡張をインストールしていると、JavaScirpt から window.ethereum を操作できようになります。それを使って NFT に実装したメソッドを呼び出します。次にフロントエンドの実装です。ふつうに web アプリを実装する知識があれば大丈夫です。


The crypto wallet for Defi, Web3 Dapps and NFTs | MetaMask
A safe crypto wallet for digital tokens & NFTs. Join the blockchain and DeFi world.
https://metamask.io/


Ethereum provider API | MetaMask docs
MetaMask injects a global JavaScript API into websites visited by its users using the window.ethereum provider object. This API allows websites to request users' Ethereum accounts, read data from blockchains the user is connected to, and suggest that the
https://docs.metamask.io/wallet/reference/provider-api/


Smart Contract の(雑な)イメージ

 これまた乱暴すぎる説明ですが、クラスベースのオブジェクト指向言語における「クラス」みたいなイメージです。

 このクラスから、誰でも or (権限管理を実装していれば)決められた人が「インスタンス」みたいなものを生成します。

 このインスタンスみたいなもののメソッドを、誰でも or (権限管理を実装していれば)決められた人が呼び出すことができます。
 API のイメージです。

 Web3 と聞くと拒否反応が出る人もいるかと思いますが、超乱暴に言えば、バックエンドがブロックチェーンになっている web(っぽい)世界です。
 データと API を特定の企業か管理するのではなく、いろんな人がアクセスできる。そんなイメージ。

 ただ、ここの説明は厳密には正しくなくて、「クラス」と「インスタンス」の例えは Smart Contract の実態と合っていません。あくまで雰囲気。
 正確な情報はあちらこちらへ。

1on1 NFT のデモとキモ

https://opensea.io/collection/1on1-nft-1


 保有している NFT は、各 NFT マーケットに表示されます。動画内に登場するのは世界最大のマーケットである OpenSea です。

https://opensea.io/

 ページとウォレットを結びつけると、1on1 NFT のメソッドを呼び出すことができます。
 公開した動画は、OPEN と CLOSED のステータスを変更するメソッドを呼び出しています。開発したフロントエンドは GitHub Pages で公開しました。

 ここで、今回のキモです。

 この 1on1 NFT は、誰でも mint(インスタンスを生成するイメージ)することができます。また、自分が保有している NFT のメソッドを呼び出すこともできます。(1on1 では権限管理をしているので操作できるのは所有者のみ)
 そして、それらの操作は私が作ったフロントエンドではなくても可能なのです。つまり、1on1 NFT を使って独自のアプリケーションを作ることができたりします。

 Web3 界隈では "Composability" と "Interoperability" という言葉が使われています。
 誰かが作った Smart Contract を部品としてレゴブロックのように組み合わせて独自の DApp を開発できますし、例えば 1on1 NFT はそうやって開発された Dapps 間で互換性があるということです。(どう取り扱うかは開発者しだい)

 これ、ソフトウェアエンジニアとしてテンションあがりませんか?

私の Web3 に対するスタンス

 web 原理主義の方は(今言われている)Web3 は定義から外れいてるから web ではないし、ソフトウェアエンジニからするとそもそもスーツを着た人々が騒いでるだけで Web3 なんて存在しないじゃないかという感覚だったりします。

 個人的にはブロックチェーンまわりであれこれ調べたり遊んだりしていて、「Web3 ってこんな感じなかなー」という感覚を持っています。
 明確に定義をするというよりも、結城浩『数学ガール』に登場する「例示は理解の試金石」という帰納法的なアプローチです。別の名前で呼んでもいいのだけど、便利なので「Web3」というワードを使っている。

 ただ、加熱していた「にわか」 Web3 界隈とは距離を置いていて、私は「法定通貨を基準とした暗号通貨の価値」も「所有 (own)」も「脱中集権」もすべてどうでもいいと思っています。
 ソフトウェアエンジニアとして楽しく遊べればいいんです。

 昨年、暗号通貨の(法定通貨を基準とした)価格は暴落しましたが、1 eth の価値は 1 eth から変わってないわけです。所有する暗号通貨を法定通貨に変えるつもりのない私としては無関係です。
 むしろ遊ぶためのガス代が安くなってうれしい。
 そして、「所有」についてはいろんな場所で誤った情報が語られています。これは無視。

 Web3 界隈の人が一番期待している(本当に?)「脱中央集権」ですが、これもどうでもよくて、中央集権が合っているプロジェクトは中央集権的に管理すべきです。
 DAO (自律分散型組織)も立ち上げからある程度のフェーズまでは中央集権型の管理をすべしというベストプラクティスがあるようです。


DAO(自律分散型組織)とは? - 【DMMビットコイン】暗号資産(仮想通貨)ならDMM Bitcoin
ブロックチェーン を活用した次世代インターネットである「web3(ウェブスリー)」の代表的なサービスとしてDAO(自律分散型組織)があります。DAOは国内外を始めとして様々なプロジェクトが立ち上がっています。 次世代の組織や株式会社の形として、注目が集まるDAOとは一体どのようなものなのか。特徴や実際の事例などを解説します。 ...
https://bitcoin.dmm.com/column/0227


 というわけで、ソフトウェアエンジニアとして私が興味あるワードはあくまで "Composability" と "Interoperability" が中心となっています。
 この概念を使って「参加 (join)」に関するあれこれをやってみたいと思っています。

 毎日のニュースを追っていると、金融 (DeFi) とゲーム (GemiFi) の話題がほとんどです。
 個人的には、この状況はあまり楽しくない。どちらかというと、それらのニュースに混じっている「会員証 NFT」や「学位証明書 NFT」のような「参加」にまつわる話題が好みです。(この後に「就労」関連がくるとおもしろそう)
 あとは、Smart Contract の力の見せ所となる「不動産売買」のような仲介者を介さない契約ですね。

 なにかしら「実態」のあるもの(物理的なものという意味ではなくて)を提供するプロジェクトをやってみたいと思う今日この頃です。

 まあ、そんなことよりソフトウェアエンジニアとして遊び道具が増えたわけですから、まずは遊ばない手はないですよね。

 Happy Hacking!

イジゲングループ株式会社では一緒に働く仲間を募集しています
1 いいね!
1 いいね!
同じタグの記事
今週のランキング