msksgm’s blog

日々の勉強,読書,映画観賞,美術観賞の記録を載せます

プログラミング学習メモ(Node.js, GraphQL)(継続 73日目)

Node.js(express), GraphQL ,React の連携について Udemy で勉強しています.

React は Apollo Client を用いて GraphQL の取得をしています. GraphQL の client は Apollo Client,graphql-request などがありますが,どれがベストプラクティスになるのでしょうか.

今日取り組んだこと

「達人プログラマー第2版」 読書 継続75日目

「達人プログラマー第2版」[2020, David Thomas,Andrew Hunt 共著, 村上 雅章 訳]を読んでます.

メモ

石のスープの例

  • まず通りにかなった要求を考える
  • 次にその要求がうまく引き出せるよう,それなりのものを作り上げる
  • 人は万事うまくいっていることには簡単に参加できる

Tip 6 変化の触媒たれ

村人たちの側より

  • 集中しすぎることへの警鐘
  • プロジェクトはゆっくりと容赦無く手に負えないものになっていく

Tip 7 大きな構想を忘れないようにすること

茹でガエルの例

  • カエルのようになってはいけない
  • 常に大きな視点を持つ
  • あな個人が行っていることだけに注意するのではない
  • 常に周囲に何が起こっているのかも注意する

考えること

  • 「村人」と「カエル」の違いのように,変化の触媒になるときに,危害や判断について考える
  • 「状況の認識」をプロジェクトにも適用する

Tip 8 品質要求を明確にすること

トレードオフにユーザーを巻き込む

  • 1 年後の素晴らしいプロダクトよりも明日のずさんなプロダクトを求められることがある
  • それによって解決することもある

やめ時を知る

  • 絵画はやめ時を知らないと作業が台無しになる
  • 十分によりプログラムを飾り立て,洗練させすぎて台無しにしてはいけない
  • 完璧にとはいえないが,完璧なんてない

あなたの知識のポートフォリオ

  • 知識への投資は常に最高の利息がついてくる(ベンジャミン・フランクリン).
  • 知識と経験は,プロフェッショナルな日々を支える資産の中で最も重要.
  • しかし,資産には有効期限がある.

ポートフォリオの管理

  • 金融の管理と似ている
  • 管理方法
    1. 真面目な投資家は習慣的に定期的な投資を行う
    2. 分散投資は長期的な投資の鍵
    3. 頭の良い投資家は,堅実な投資と,ハイレベルでハイリターンな投資でポートフォリオのバランスをとっている
    4. 投資家は利益を最大にするべく,安く買い,高く売ろうとする
    5. ポートフォリオは定期的に見直して再配分するべき

ポートフォリオの作成

  1. 定期的に投資する
    • 小さいものでも,継続することによって大きなものとなる
  2. 多様化する
    • 一味違ったことをしれば,より付加価値がでる
    • まず,現在作業で使っている特定技術のすべての詳細を知る必要がある
    • 変化の激しい世界において,よりうまく変化に適応できるようにする
  3. リスクを管理する
    • 技術という卵を一つのかごの中にいれてはいけない
  4. 安値で買い,高値でうる
    • 将来注目される技術を,それが普及する前に学んでおくのは,難しい
    • しかし,リターンも大きい
  5. 見直しと再配分をする
    • 他の言語を試すことで,あらたな就職先やポジションがあったのかもしれない

ゴール

  • 毎年少なくとも言語を1つ学習する
  • 月に1冊のペースで技術書を読む
  • 技術書以外の書籍を読む
    • コンピュータは人によって使われることを意識する
  • 講習を受講する
  • 近場のユーザーグループに参加する
    • 孤立は避けるべきこと
  • 異なった環境に慣れ親しんでみる
  • 最先端に止まり続ける

学習の機会

  • 学び続けることで、その分野の最新情報の頂点に立つことができる
  • 質問されることがあって,ぼんやりとした答えが出るかもしれない
  • しかし,ここで止まってはいけない
    • ウェブ検索,学術的なリソースを漁る
  • 答えられる人間を探す.
    • このようにしてネットワークが広がっていく

批判的な考え方

  • 見聞きするごとについて,批判的な考え方をする
  • ポートフォリオ中の知識が正確なものであり,ベンダーやメディアの偏見が入っていないことを保証しなければならない
  • 商業主義を甘くみてはいけない
    • インターネットの情報は広告料によって左右される
    • 書籍も目立つ場所にあるからって良書やベストセラー書籍であるとは限らない

Tip 10 見聞きしたものごとを批判的な目で分析する

批判的な考え方の規律ができるまでに意識すべきこと

  • 「5つのなぜ」を問う
  • 誰にメリットがあるのか
  • コンテキストは何か
    • 「万能な解決策」はない
    • 「ベストプラクティス」を考える
  • それはいつ,どこで有効になるのか
    • 一次思考,二次思考を持つ
  • なぜこれが問題なのか

伝達する

  • よいアイデアも効果的な意思疎通がなければ,単なるアイデアで終わってしまう
  • 1日のうちの大部分は伝達作業に充てられるため,それを円滑に進める必要がある
    • ヒアリング,討論
    • ユーザーの理解に務める
    • ドキュメント作成
    • etc...
  • 日本語をもうひとつのプログラミング言語と考える
    • DRY 原則,ETC,自動化などをする

Tip 11 日本語をもうひとつのプログラミング言語として考える

聞き手のことを知る

  • 語るだけでは不十分
  • 聞き手のニーズ,興味,能力を理解する

言いたいことを知る

タイミングを選ぶ

スタイルを選ぶ

  • 聞き手に合った伝え方をする

見栄えをよくする

聞き手を巻き込む

  • 重要なドキュメントを作成していたはずか,完成時点ではさほど重要なものでなくなってしまう場合がある
  • 草稿段階から,ユーザを巻き込むようにする

聞き手になる

  • 相手の言うことに耳を貸さなかったなら,相手も聞かない

相手の立場になる

Tip 12 伝えることがらと,伝える方法は車の両輪だと考えること

プログラミング学習メモ(Node.js, GraphQL)(継続 72日目)

Node.js(express)と GraphQL について Udemy で勉強しています.

「Redux 不要論」を知って,Redux に弱みを知り,拘っている場合じゃないので,バックエンドの方に手をだすことにしました.
express は過去に Udemy で学習済み,GraphQL は業務で使用しているので,サクサク進めています.
GraphQL は mutation,GraphiQL が便利すぎて病みつきになりそうです.
API 設計はしんどそうですが...

今日取り組んだこと

  • node.js
    • express
  • GraphQL

「達人プログラマー第2版」 読書 継続74日目

「達人プログラマー第2版」[2020, David Thomas,Andrew Hunt 共著, 村上 雅章 訳]を読んでます.

メモ

第二版の強化点

  • 時代に合わなくなった参照や例を削除し,新しく,現代的な内容に置き換えている点
  • 共著者が,第1版のフィードバックを反映させた

プラグマティズムの必要性

  • 多くの人が自分の方法が最良だと言うが,どれも本当ではない.簡単な答えなんてない
  • 何らかの特別な技術に対する執着ではなく,十分に幅広いバックグラウンドと経験の基盤があってこそ,特定の状況に応じた優れた解決策を選択できる
  • コンピュータ科学の基本的な原理を理解することによるバックグラウンドと幅広い分野における実践的なプロジェクト経験が大事

達人プログラマーになるために

Tip 1 自らの技術に関心を持つこと

Tip 2 あなたの仕事について考えること

達人と大規模チーム

  • プロジェクトの全体構造の中には常に個性と技芸の入り込む余地がある

継続は力なり

あなたの人生

  • 現状に不満を持っているなら変える力がある
  • 何らかの理由で開発者は変化に抗おうとしている
  • この業界には,驚くほど多くの機会が横たわっている.積極的な行動に出て機会を掴み取る

Tip 3 あなたには現状を打破する力がある

責任を持つこと

  • 責任については前向きに考えるべき
  • 保証をしていたとしても必ずしもすべての観点から直接管理できるとは限らない
  • 個人としてベストを尽くすことに加えて,自らの制御を超えた部分にあるリスク状況の分析を行わなければならない
  • 他人や他の何かを非難したり言い訳をしたりしてはいけない.
  • 誰かに報告する前に,いったん立ち止まって自分自身の言い分に耳を傾ける
  • 他社が中途半端な言い訳をしたときのことを考える
  • 「分からない」という言葉のあとに,「--でも答えを見つけ出すぞ」と口に出す
    • わからないことを認める素晴らしい方法
    • その後はプロフェッショナルとしての責任をまっとうする

Tip 4 いい加減な言い訳よりも対策を用意すること

ソフトウェアのエントロピー

  • ソフトウェアはエントロピーのように時間とともに無秩序になる
  • それは「腐ったソフトウェア」や「技術負債」という言葉で呼ばれるようになる
  • 割れ窓理論」のようにネガティブな要素は連鎖する
  • 「割れた窓」を放置してはいけない

Tip 5 割れた窓を放置しておかないこと

とにかく害を及ぼすなかれ

  • ソフトウェア開発において何らかの危機が訪れているからといって,巻き添え事故は引き起こしてはいけない
  • 1枚の割れた窓は崩壊の始まりである
  • 「割れた窓」を上げて何が問題なのか何ができるのかを議論する.

2月の振り返り

2 月が終わります.
2021 年の目標を元に今月の振り返りをしていきたいと思います.

生活習慣

早寝早起き生活を継続中.土日もいい感じに起きれたらいのですが... 筋トレも継続中です.背筋のトレーニングも追加しました.

プログラミング関連

フロントエンド

React,Next.js,TypeScript でアプリ制作中です. Redux 不要論がありますが,今後はどうなるのでしょうか.

バックエンド

会社で使うため,今月の前半は Java の勉強をしていましたが,データベースや API について全く触れていないのであまり意味がないですね... 仕事で GraphQL を使う機会が多いので,そこらへんでカバーできているので信じたい.

インフラ

Docker は仕事で積極的に使うようにしています.
Docker を実行できる環境さえあれば,簡単に共有できるのは想像以上に便利です.
AWS の ECS というサービスを知りました.k8sgoogle 製ですが aws ももっていたんですね.

データベース

MySQL の勉強もしていました.アプリとの連携ができていないので,勉強した効果を実感しづらいです.

ネットワーク

研修資料にあったので一応勉強しました.
「マスタリング TCP/IP 入門編」を購入したので 3 月に読みたいと思います.

趣味

読書

4冊(+2冊)達成

1冊目「プログラマが知るべき 97 のこと」

プログラマが知るべき97のこと

プログラマが知るべき97のこと

  • 発売日: 2010/12/18
  • メディア: 単行本(ソフトカバー)

2冊目「知識ゼロから学ぶソフトウェアテスト

3冊目 「ジョゼと虎と魚たち」(角川つばさ文庫

4冊目「テスト駆動開発

テスト駆動開発

テスト駆動開発

5冊目りあクト! [Ⅱ. React 基礎編]

6冊目りあクト! [Ⅲ. React 応用編]

映画観賞

「さんかく窓の外側は夜」

https://movies.shochiku.co.jp/sankakumado/

美術観賞

「トライアローグ」

https://yokohama.art.museum/special/2020/trialogue/index.html

絵を書く

デッサンではなく写真の写生をやっていました. 最近は教本を購入して色鉛筆にも挑戦しています.

最後に

二月時点でも目標を達成しています.
React に大苦戦しているので,3月にアプリをデプロイできるか不安ですが頑張りたいと思います.