Mobile Factory Tech Blog

技術好きな方へ!モバイルファクトリーのエンジニアたちが楽しい技術話をお届けします!

Google Docs を用いたエクストリームリーディングのすゝめ

あけましておめでとうございます。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。


この記事では Google Docs を用いたエクストリームリーディング形式の社内勉強会を1年間継続できた記念に、その形式を紹介をします。

エクストリームリーディング とは

エクストリームリーディングとは黙読フェーズと議論フェーズの2つのフェーズを繰り返す読書会の形式の1つです。

黙読フェーズでは次のことを行います。

  1. 1節、1章、数ページなどのある程度のまとまった文章を読む範囲として決定
  2. この範囲を参加者で並行して黙読

その次の議論フェーズでは黙読した結果について次のことを行います。

  • 文章の解釈を合わせる
  • 文章中で分からないところを教え合う

エクストリームリーディングの利点は次の通りです。

  • 読書会への参加に必要な事前準備が必要ないため参加のハードルが低い
  • お互いの知識を補え合える

1つ目の利点に関しては、輪講形式の読書会の準備に苦労したことがある方にとっては理解しやすいと思います。

Google Docs を用いたエクストリームリーディング

モバファクでは Ethereum Layer2 勉強会という社内勉強会を開催しており、この勉強会では Google Docs を用いたエクストリームリーディング形式の読書会を採用しています。この勉強会では Ethereum の Layer2 技術に関する Web 上のサイトやドキュメントを Google Docs に転記してみんなで読み進めています。

この Google Docs を用いたエクストリームリーディングでは、上で紹介した進め方の黙読フェーズ中に Google Docs のコメント機能で文中の感想、解釈、分からないところをコメントします。これは従来のエクストリームリーディングと比べて次の利点があると考えています。

  • 気軽にコメントができる
    • Google Docs を使う前は対象の文を引用してコメントを書いていた
  • 議論箇所の目安になり議論フェーズが活発になる
  • 文章の流れを妨げない

実際に Layer 2 勉強会では画像のような形で進行しています。 f:id:odan3240:20210119175844p:plain

Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit | by Josh Stark | L4 blog | Medium を読んでいる様子

f:id:odan3240:20210119175826p:plain

Optimistic vs. ZK Rollup: Deep Dive | by Alex Gluchowski | Matter Labs | Medium を読んでいる様子

参加者の声

Layer 2 勉強会の参加者に Google Docs を用いたエクストリームリーディングについて感想を質問してみました。

  • リモート環境だと読書会をしても他のメンバーがどこを見ているのか分かりにくく議論に支障が出ていたのですが、Google Docsを使うと誰がどこに言及しているのかはっきりして捗りました
  • 集中して読む時間を確保しつつも、その場で生じた疑問を忘れないうちにすぐ議論できるのがよかったです。
  • 文の意味が理解しづらかったときや技術特有の文脈などで不明なところがあったときにすぐ議論できてよかった
  • 読みながら疑問点や感想を書くので、書き忘れたり読んでいた箇所を見失ったりせずスムーズに進められました

終わりに

Google Docs を用いたエクストリームリーディングを紹介しました。

社内では Layer2 勉強会以外にも Google Docs を用いたエクストリームリーディングを使った社内勉強会をやっていこうという話になり、 web.dev の記事を読む社内勉強会が立ち上がり始めています。

この記事を読んでいる方も Web 上の文章の読書会に Google Docs を用いたエクストリームリーディングはいかがでしょうか?

ERC721 の extension の違いによるコストの比較

この記事はモバイルファクトリー Advent Calendar 2020 25日目の記事です。長かったアドベントカレンダーもこれがラストです。今年も25日まで毎日技術記事を楽しみに過ごせました。


こんにちは、ブロックチェーンチームのソフトウェアエンジニア id:odan3240 です。

ERC721 の extension

ERC721 は Ethereum における Non-Fungible Token (以下 NFT) の規格です。ERC721 には様々な extension が存在しており、OpenZeppelin では次の種類の extension が実装されています。

  • Mintable
    • NFT を mint できる
  • Burnable
    • NFT を burn できる
  • Enumerable
    • NFT を数えられる
  • Metadata
    • NFT とオフチェーンのメタデータを繋げられる
  • Pausable
    • NFT の転送を停止できる

この中でも Enumerable は NFT を数えられるようになる一方で、gas used (以下 コスト) 増加することが知られています。

speakerdeck.com

今回 Enumerable 以外の extension に対してコストの増加を調べたので、これを共有します。

実験の設定

実験の各パターンは次の通りです。Mintable をベースに他の extension を追加しています。

  • Basic (Mintable)
  • CaseBurnable (Mintable + Burnable)
  • CaseEnumerable (Mintable + Enumerable)
  • CaseMetadata (Mintable + Metadata)
  • CasePausable (Mintable + Pausable)

バージョン

  • solidity: 0.5.17
  • Ethereum の hardfork: Muir Glacier
  • @openzeppelin/contracts: 2.5.1 1

ソースコード

github.com

実験結果

deploy/mint/transferFrom の各コストは次の通りです。

deploy mint transferFrom
Basic 2,113,681 67,978 61,602
CaseBurnable 2,259,122 67,978 61,602
CaseEnumerable 2,455,003 153,561 92,696
CaseMetadata 2,538,433 67,978 61,624
CasePausable 2,541,757 67,978 62,497

わかりやすく gas price が 70Gwei、円と ETH のレートが 62608円/ETH としてコストを日本円に換算すると次のようになります。

deploy mint transferFrom
Basic ¥9,263 ¥298 ¥270
CaseBurnable ¥9,901 ¥298 ¥270
CaseEnumerable ¥10,759 ¥673 ¥406
CaseMetadata ¥11,125 ¥298 ¥270
CasePausable ¥11,139 ¥298 ¥274

すでに知られているように Enumerable を実装するとトークンの mint/transferFrom のコストが約2倍に増加することがわかりました。 また deploy のコストについては、各 extension を実装すると増加し、Pausable を実装するのが約1.2倍と一番大きな増加率になることがわかりました。

まとめ

ERC721 の extension の違いによるコストの増加について調べました。

deploy はどの extension でもコストが増加しました。トークンの mint/transferFrom については Enumerable を実装するとコストが増加しました。

どの extension を ERC721 に実装するかは作りたいトークンの要件にもよりますが、実装すると何かしらのコストが増加する可能性を考慮しておくと良さそうです。


無事にモバイルファクトリー Advent Calendar 2020は25日完走できました。それでは皆さん良いお年を!


  1. @openzeppelin/contracts の最新版は v3 系ですが、v3 系は Enumerable がデフォルトで組み込まれていて実験に適さないので v2 系