見出し画像

Rust学習 - ブロックチェーンを作りながら基本を学ぶ#3(+α: 学習矯正ギブス#1)

毎日暑いな。画像だけでも爽快感を出しておいた。

とりあえず本題から書くと
時間がかかってしまったが、ブロックチェーンを作って学ぶシリーズに区切りをつけることができた。学習矯正ギブスの方はとりあえずそう名付けたヤツで内容は後述。

本題


まず、ちゃんと学んだ証拠にソースコードをあげておこう。

やりながら少しずつ実践的になるように自分を仕向けていて今日はclippyを導入。いわゆるcode linter。そして仕掛けたら警告の嵐です。この警告に打ち勝てるように美しいコードをかけるように学習しなくては。

基本文法は理解したつもりだったが、様々な壁を感じている。

  • 「&self」「self」「&mut self」をぱっと使いこなせていない感がすごい。今日も関数の戻り値の&self.inputs -> self.inputsのエラーを何度も指摘された。

  • ビット演算の使い方と最適な書き方。今日も、clippyに非効率だから consider reducing it to `8` と警告された。

  • Debug trait, Copy traitについてちゃんと理解しないでenumのアトリビュートを指定してそして動いてしまったのでちゃんと理解する必要がある。

  • そもそもstructのclone()メソッドの動作原理を理解していない。cloneの中では何をしているのか?ハードコピー?

  • String.to_ownedって何?

  • Vecのpush, extendの動作使用を知りたい。

  • collect::<Vec<Vec<u8>>>()の文法理解不足、ジェネリクスの型指定の位置。が腑に落ちない。

  • なんとなく登場したstd::collections::HashSet同士の引き算。API仕様を読まなくては。

  • そもそもstdライブラリのモジュール・メソッドが次々登場し、まったく具体的なAPIの使い方を把握できていないことを実感する。vector, HashSet, iterator, map/flat_map/is_empty etc。常識に追いつくまでインプットと練習両方必要だ。課題を探さなければ。


常識に追いつくまでインプットと練習両方必要だ。課題を探さなければ。
スマートコントラクトを作りたいと、これを聞きながら考えている。


本題+α


学習矯正ギブス(仮)の話


ざっくりいうと、「集中確保と設計的に我流の罠に陥らないように、書籍(※不定)から1 章ずつ選んでピンポイントで読んでいく(=学習矯正)。継続で効果出るといいな」という内容。

果敢に継続かつ新規のインプットをする中で、しばらく前からある不安要素が2つある。それが「集中力の確保」と「我流の罠の防止」。


即効性のある対策はおもいつかないので、せめて、よさそうな本を先生にしてちょっとずつ矯正していく。
これはプログラミングの練習とセットでやっていこうと思う。

ということで今日は以下の本に目を通した。不定期でnoteにあげよう。

----

瞬間集中脳

  • 完全に理解した。

    • 瞬間集中とポモドーロテクニック 25分作業/5分休憩やろう。

    • 自分用の時間帯ごとの推奨タスク(種類)は考えよう(朝はアイデア出し、夕方以降はインプット)

    • 脳内TODOリストは覚えておこう。

エリック・エヴァンスのドメイン駆動設計

  • ドメイン駆動開発との付き合い方を考える時間だった。継続インプットしていく。

    • 知識を噛み砕く/継続学習力

      • モデル駆動開発でモデリングと実装を分離することへの警告。

      • モデルに貢献する技術的な人は誰でも一定の時間をコードに触れることに費やさなければならない。プロジェクトで主に果たしている役割が何であれ。

      • どのような点を実践に反映できると思うか。国内の事情とはギャップがある印象、Web系企業の場合複雑性の低いソフトウェアや既存の保守改修などが中心で適応度が低い場合もある

      • コードベース上での表現方法の観点では参考にしたい。モデリングの部分は良い知見だけ反映する。

1分で話せ

  • 話のピラミッドストラクチャー。話には結論と根拠。結論を一番上に。

  • 話す言葉もスライドも「スッキリ」が鉄則



とりあえず今日はこのへんでまた明日!

この記事が気に入ったらサポートをしてみませんか?