書籍「実践SYMBOL」の寄り道案内

# はじめに
「実践SYMBOL」という書籍を読み進めるにあたって、書籍の章ごとに合ったブログ／ハンズオン記事を紹介したいと思います。掲載時期によってはエラーが出てハンズオンがうまく進まないといった記事もあります、この場合に簡単な解決方法も解説します(この記事は2024年2月頃に書いています)。ご紹介する記事は全てハンズオンで動作確認をしています。

**:sparkles:年数が経過した過去の記事にも、有益なものが沢山あります:sparkles:**

# 対象者
・「実践SYMBOL」を所有している。
・「実践SYMBOL」をやり終えたけど、自分が何をどう作っていくかイメージ出来ない。
・これからSymbolブロックチェーンの学習をしようと思っている、すでに始めている。
・「実践SYMBOL」を始めているが、難しく感じている。楽しくない。
・書籍で構築した環境のままで、他のブログで掲載されているハンズオン／解説をやってみたい。

# 過去記事をハンズオンするコツ
掲載時期により、下記項目を書きなおす必要がでてくることがあります。
うまくいかないときはこちらを確認してみてください。
- nodeのURL
- epochAdjustment値
- symbol-sdkのバージョン(今や無指定だとv3がはいる)
- generationHash値
- nodejsのバージョン(記事発行時点のLTSにしてみる)
- 「create next app」実行時のオプション設定。ディレクトリ構成が記事と違う場合は確認してみる。

# おことわり
商用本ですので書籍の内容に関することは書いておりません。書籍をご購入ください:bow_tone1:

https://www.shuwasystem.co.jp/book/9784798070292.html

# １章の寄り道
:blue_book:第1章 Symbolブロックチェーン開発のための環境構築

:::note info
読み物中心です。こんな感じなんだぁ、実験動画とかあるんだぁ、くらいに読むと楽しいです。詳しいことは後にわかってきます。
:::

https://qiita.com/MK32A/items/10fbd4937fe8aacad89c

https://qiita.com/nagata03/items/022f1ca729228d7735b8

https://note.com/kokyu_xym/n/n2880468b6665

https://qiita.com/mikun/items/c0a28b522f73e1e12fb9

https://qiita.com/ishidad2/items/470bb9477c98a92ec149

https://youtube.com/watch?v=m6cR3LfjQ78

# ２章の寄り道
:blue_book:第2章 SymbolブロックチェーンWebアプリケーション実装：基礎

:::note info
- この章は速習Symbolと併読できます。
   - 速習Symbol：Chromeブラウザの開発用コンソールを使い、プログラムを少しずつ書いて都度エンターで実行します。

    - 実践SYMBOL：TypeScript言語でソースファイルを作って一気に実行します。
- この章はプログラムで実行していますが、ほとんどの事はデスクトップウォレットで出来ます。

部分的に検証してみたくなることがあると思いますので、そんな時は速習Symbolでさっと確認する。
うまくいかないときはデスクトップウォレットを試してみる。
:sparkles:状況によって、方法を変えて試してみてください。
:::

- Symbol Walletでモザイクとネームスペースを発行する方法

https://hide.ac/articles/7hAvfRvnF

- XYMを請求するQRコードつくって決済者側体験できる

https://zenn.dev/y_matsuoka/articles/introduction-to-symbol-blockchain

- デスクトップウォレットでもマルチシグ設定できます。プログラムでうまくいかないときはこっちも試してみてください。

https://youtube.com/watch?v=b3Ie6kW1-k0

- 連署に関して、もう少し詳しく知りたいときに。


https://qiita.com/nem_takanobu/items/61b03ec8c2a4660562b7


- 「検証」の項でもう少し詳しく知りたいときに。

https://qiita.com/nem_takanobu/items/31ea4dfb6d8e38256e95

- 必要な型変換はSymbol-SDKが良しなにしてくれますが、なにをやってくれてるか？を知りたい時に。

https://qiita.com/faunsu/items/0cfcfb596d08c9a3ed7f

- いわずと知れた「速習Symbol」です。

https://learn.ja.symbol-community.com

- 速習 Symbolに、事例紹介や図解などを使って優しく解説されています。

https://github.com/hossiiii/quick_learning_symbol_hoshoku/tree/main/trainingCamp

https://zenn.dev/baydot/articles/ec0e192ec35da9

# ３章の寄り道
:blue_book:第3章 ブロックチェーンを使った実践的なサービスのロジックを学ぶ

:::note info
この章は書籍の掲載内容をそのまま読むだけで満足でした。寄り道なしです。
:::

# ４章の寄り道
:blue_book:第4章 「スマートコントラクト」のWebアプリケーション開発

:::note info

この章から、nextjs、github、vscodeを使っています。書籍では未学者でも進むことが出来るように書かれています。プログラミング学習ではないのでコードを全て読み解く必要はないと私は思います。
VercelやGitHubPagesなどホスティングしてくれるサイトを知り、使えるようになるのもSymbol学習で得れる大きな副産物です。
:::

- nextjsの入門サイト。書籍と同じディレクトリ構成(AppでなくてPageディレクトリ)で教えてくれます。全部見なくても大丈夫です。

https://youtube.com/playlist?list=PLwM1-TnN_NN6fUhOoZyU4iZiwhLyISopO&si=x-FIz1r-SfrmvGhT

- VSCodeでステップ実行して変数の中身や遷移を見るときにこの記事の通り設定します。

https://qiita.com/fsd_maclala/items/5878af09e70258fa2e68

- githubとVercelの設定です。

https://www.newt.so/docs/tutorials/connect-to-vercel

- ここまでは秘密鍵などをソースにベタ書きしていて、とても公開してつかってもらえるものではなかったですね。書籍ではSSS-Extensionを利用してそのあたりを解決しています。こちらの記事はSSS-Extensionのあり方と使い方が、さらに詳しく丁寧に書かれています。GitHub Pagesをつかいますが、途中まではブラウザだけで動きます。※GithubPagesでデプロイ回数制限があります。10回/hまででした。

https://qiita.com/inatatsu_csg/items/191edf3bcd1f0acf15c1

- GithubPages以外にこちらでも動作しました。同じようにGithubアカウントでサインインして連携できます。

https://www.netlify.com/

- おしゃれなタイトルです。コンポーネント分割の説明がされていて、コード設計の参考にもなります。

https://qiita.com/inatatsu_csg/items/320c9853669ae3a98b2b

- 章にそってないですが、良い動画を見つけました。網羅的に説明されているのは他に無い気がします。

https://www.youtube.com/playlist?list=PLifx63Bv-tdM27OZnne3-5IOvGyI_zijX

# ５章の寄り道
:blue_book:第5章 「NFT」のWebアプリケーション開発

:::note info

書籍の手法とは反対に、フルオンチェーンに関して、テストネットでさっとハンズオンできる記事になります。NFT-Driveのサイトにテストネット版があり、体験できるようになっています。
:::

- 書籍の動画で参照されているサイトです。世の中のあれこれを、わかりやすく丁寧に解説をしたり紹介をするメディアだそうです。

https://mo-gu-mo-gu.com/create-next-app-typescript/

- 書籍の動画で使われている、コンポーネントの書式をいっぺんに書いてくれる便利なスペニットに関して。設定が必要なので参考に。

https://zenn.dev/nbr41to/articles/a2e6363e8755e5c9a9ba

- フルオンチェーンの背骨にあたる部分だけを簡単にハンズオンできる最小の記事です。テキストデータを分割してトランザクションして記録する形です。モザイクは使っていないので再配布の可否など、機能の部分には触れていません。掲載されているコードをjsファイルにしてnodeコマンドで実行します。

https://qiita.com/nem_takanobu/items/8cbc4a71ebe1d1211dbf

- NFT-Driveのテストネット版サービスを使います。SymbolExplorerと突き合わせて説明してくれているので、エンジニアも満足な動画です。共用してつかうサービスなので内容にあるとおり、マナーを守って使わせてもらいましょう。

https://www.youtube.com/watch?v=Truz3wKrJJQ

- オフチェーンにもメリットがあり、それをNFT-Driveでも出来るよ。という記事です。上記の動画手順に沿って実行してみましたが、nodataのようなエラーになりました。他のやりかたがあるのかもしれません。

https://note.com/tender_echium972/n/nad70318b4c96

# ６章の寄り道
:blue_book:第6章 「アポスティーユ」のWebアプリケーション開発

:::note info
書籍では、ファイルを公証をするために自分以外に１つもしくは２つアカウントを生成するかたちになっています。トランザクションのメッセージ内に署名データ自体(パブリック鍵で検証可能な)を入れるという仕組み。
:::

- アポスティーユとは、という読みものです。※NEMの資料です。
「4.使用用途（ユースケース）」でイメージを付けておくと理解しやすいと思います。

https://www.cryptostream.jp/wp/wp-content/uploads/ApostilleWhitePaper_Japanese.pdf

- XEMBookさんがSymbolで「Fast Apostille」というツールを提供されています:bow_tone1:。Xでポストした画像URLを入力して所有証明、存在証明するといった利活用についてかかれています。

https://x.com/xembook/status/1615563541624549376?s=20

ハッシュ計算は、windowsの場合に標準機能が使えるので下記のコマンドでファイルハッシュ値の算出が出来ます。アポスティーユの資料に従って、"「FE4E5459」＋ファイルハッシュ値"が、TXのメッセージに刻まれていることがわかります。
```
certutil -hashfile "file-path" SHA256
```
# ７章の寄り道
:blue_book:第7章 「検証」のWebアプリケーション開発

:::note info
この章は「６章の寄り道」に含めているため、記載なしです。
:::

# ８章の寄り道
:blue_book:第8章 「トレーサビリティ」のWebアプリケーション開発

:::note info
サンプルソースを少し編集するだけで、ご家族分のQRコードを発行して毎朝体温を測るといったことが出来ます。
実はトレサビについては有用性がずっとイマイチわからなかったのです。この例でいくと体温や体重なんてアプリとかメモでいいのでは？と思っていましたが、何十年後にアプリ、メモが残っているわけもなく。今は大した事ないデータでも毎日を刻む事で後に大事な存在証明になりますね。
![IMG_0081.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658424/60933843-e5fa-5722-3502-817c2d3952f5.jpeg)
:::

- 製造業のトレーサビリティを検討するきっかけなどがインタビュー形式で書かれています。

https://baasinfo.net/?p=6525

- この書類は、食品トレーサビリティに関する調査研究の報告書です。現場の問題や課題を分析し、新しい食品トレーサビリティの体系とソフト技術を提案しています。また、企業の意見や国際的な状況も考慮しています。

http://tezukalab.private.coocan.jp/wordpress/?page_id=474

# 終わりに
ある程度習得したら、何か普段から自分が使えるアプリを作ってみる事をおすすめします。いちから作るのが難しい場合は書籍のサンプルを自分好みにカスタムするのもいいですね。
既にあるサービスを継続利用してみるのも良いです。とにかく毎日、毎回、何かしろトランザクションを投げる事で不思議と身についていきます。

書籍内容を理解するにあたり、設計図(主にフロー図)を書き起こしながら進めました。昨今ではAIにプロジェクトを読み込ませたら設計書を生成してくれるかもしれませんね。

最後までお読み頂きありがとうございました！