ラベル Advent Calendar の投稿を表示しています。 すべての投稿を表示
ラベル Advent Calendar の投稿を表示しています。 すべての投稿を表示

2020年12月3日木曜日

最近読んでいる本、読んで良かった本と継続して読書する話(2020年ver)

こんにちは!

この記事は琉大 Advent Calendar 2020 の3日目になります。現時点(2020/12/01 20:00)ではまだ空きがあるようですので、ぜひ参加していってください。

前日の記事はこちらです。

明日の記事はこちらに書くものとします(追記予定)。


はじめに

社会人になって3年目となり、いろいろ知識が足りていないなーと痛感することが増えてきました。知識を補うために、会社での個人OKRとしていくつかやることを決めて取り組んでいます(できているとは言っていない)。そこで僕はOKRの中に「本を読むこと」を入れています。

ここでは最近読んでいる本と、これは良かったと思う本を紹介します。また、できるだけ継続して本を読むために取り組んでいることを紹介します。


おすすめ本

Clean Code

今読んでます。

クラス設計や関数の書き方から学ぼうと思って読んでいます。

まだ前書きと1章しか読んでませんが、cleanなコードとはどういうものかについて、ストラウステップやロン・ジェフリーズの言葉を引用しながら語ってます。


Clean Agile

今年の10月に発売されました。ロバート・C・マーチン(通称ボブおじさん)のアジャイル開発本です。

世の中に出回っているアジャイル開発のウソを紹介して成敗している本です。「アジャイルは早い段階から希望を殺し、継続的に冷たくて厳しい現実を提供する」がキャッチーでした。


Clean Architecture

「クリーンアーキテクチャって、あの円のやつでしょ?」レベルから「依存性逆転の法則が重要なやつ」レベルまで僕を引き上げてくれた本です。

世の中にあるクリーンアーキテクチャの説明よりも原典を読んだ方が早いと思いました。

今の会社ではクリーンアーキテクチャを基本に開発しているので必須の本でした。


テスト駆動開発

テスト駆動開発(TDD)がどういうものかケント・ベックがペアプログラミングを通して教えてくれる本です。

TDDがどのように発展してきたのを訳者の和田さんが紹介してくれているので、そちらだけでも立ち読みしても良いと思います。

今の会社ではテスト駆動開発を基本に開発しているので必須の本でした。


NEW GAME!!

ゲーム制作会社に入社した女の子のきゃっきゃウフフな話です。とくに星川ほたるが好きです。

ほたるんかわいい

僕は9巻の60ページあたり*1にある話が好きです。

コウ:(ほたるはみんなが思っているような天才じゃない…)

優秀なITエンジニアはまんがタイムきららキャラットを買う、と言われています。


継続して読書する

もともと継続して読書することが苦手です。今も苦手で月の読書冊数も平均で1冊もないと思います。

ちょっとでも継続しようと、Scrapbox読書メーターを使っています。

Scrapboxには読んでいる最中のメモを書いています。あとから振り返りできるし、いつ書いたのかはテロメア*2を見ればわかるので便利です。スマホからも書けるので僕はtwitterのプロフィールに載せて、いつでも見れるようにしています。twitterはよく見るので。

読書メーターには読みたい本のリストと読んだ感想を書いています。感想を書くと何が良かったのか考えるきっかけになり、ちょっとだけ達成感も得られます。とくに良いと思ったのは、読んでいる本を絞れることです。僕は移り気で本を10冊以上同時に読んでしまうことがありました。今は1つに絞って時間を当てて読んでいます。

この施策で、とりあえず2ヶ月くらいは続けて読めています。


おわりに

最近読んでいる本と読んで良かった本、継続して読書する方法を、ざっくり紹介しました。興味を持ってもらえれば幸いです。

またよかったらおすすめの本のタイトルをコメントに書き残して、本当によければおすすめの理由を書いていって欲しいです。


参考

*1: ほたるん努力回はこちら
*2: scrapboxの記事の左側にあるバーのこと。マウスカーソルを合わせるといつの書き込みか行単位でわかる。

2019年12月22日日曜日

Flutter for Webで簡単なToDoリストを作るぞ

この記事はFlutter #2 Advent Calendar 2019の21日目です。

前回はこちら
次回はこちら

1日遅れてすいません。しかも解説は追記予定です。
ソースコードだけは置くので参考になれば幸いです。

(追記2020/2/16)
githubにプロジェクトコードを置きました。
Firebaseでデモを置きました。




最近Dartを使っているので、Flutterを再び勉強するモチベーションが出てまいりました。Flutterは以前少しだけ触って放置していたので、改めてキャッチアップしてみると、なんとFlutter for Webというのがあったので興味本位で触ってみることにしました。

そういうわけでFlutter for Webで簡単なTodoリストを作ります。

やること


開発するときにみた情報源の話。作り始めのころの雰囲気を記録したいと思います。なので読みにくい点もあると思いますが、その時はもし良ければ「読みにくい」ってコメントをお願いします🙇‍♂️

やらないこと


設計周りの話はしません。今はクリーンなアーキテクチャよりもプログラミングを楽しむことに価値を置きたいと思います。

どういうのを作るのか


仕様を決めます。

  • ユーザーはタスクリストを見ることができる。
  • ユーザーはタスク名を入力し、タスクリストに追加できる。
  • ユーザーはタスクリストから終わったタスクをワンクリックで消すことができる。
  • ユーザーはタスクリストに書いたタスクを次回も見ることができる。

足りなければ追加するということで、とりあえずこれで行きます。
あとは画面のモックを作っておきます。
ハイクオリティな画面モック
では取り掛かっていきます。

環境構築


公式の方法に従って導入します。
現在はbetaチャンネルなので今後stableに変わると思います。

というわけでプロジェクトを作ります。

flutter create --org com.akior todolist_app
cd todolist_app
code .

VSCodeであらかじめ設定しておけばこれでプロジェクトで開けるはずです。
あと、VSCodeはFlutterの拡張設定は必要です。

flutter run -d chrome

これでweb画面が起動します。
ちなみにVSCodeからも起動できます。

Touch Barの実行ボタンでも起動できます。白い三角が実行、中抜き三角がデバッグ実行。
lib/main.dartを編集していきます。

完成


タスクを追加する処理です。
ユーザーはタスク名を入力し、タスクリストに追加できる


タスクを削除する処理です。
ユーザーはタスクリストから終わったタスクをワンクリックで消すことができる


更新しても画面は保持されたままです。
ユーザーはタスクリストに書いたタスクを次回も見ることができる

ここにソースコードを示します。



解説

使ったのはAnimatedListWebStorageです。
アプリならSharedPreferencesを使うところですが、WebなのでWebStorageを使うことができました。使うにはdart:htmlをインポートする必要があります。

おわりに


Flutter for Webで簡単なToDo リストを作成しました🎉
Flutterのお作法で悩みながら楽しく作れたと思います。Widgetツリーを意識しながら構造的に書くことは勉強になりました。

課題として、

  • ネットワークの要素を取り入れる(Firebaseなどと通信する)
  • PWAのように使えるのか調査する(hi fiveみたいにキャッシュにためたあと通信する機構など)
  • オリジナルのデザインをつかう

があげられそうです。

余談


最初にFlutter for Webを書き始めたときは12月始めで、そのときはdevチャンネルでした。
なので12日のFlutter Interactでbetaチャンネルに移行したときは飲み会で一芸を楽しみにしてる感じの声が出ました。
Flutterにsearch.array().