【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その①

読み終えるまで約3分

 

 

どうも、ちゃんなるです! 

 

今回は、次の書籍の一部を要約します。

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

 

ちゃんなるは、この春からIT企業で働き始めました!

そこで、

「プログラミングや何か技術的な知識をつけよう」

ということで本書を手に取りました。

 

本書は抽象的な話が多いので、それを私の言葉でまとめて紹介します!

 

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は最初の記事ということもあり、1~3番目の項目についてまとめます。

  1. 分別のある行動(No. 1)
  2. 関数型プログラミングを学ぶことの重要性(No. 2)
  3. ユーザが何をするかを観察する(あなたはユーザではない)(No. 3)

 

*抽象的な内容が多いので、わからなかったら流し読みしてください!笑 

 

 

①分別のある行動

このテーマで述べられていたことは、

「技術的負債を生んだ場合は、それを認識してできるだけ早く修正できるよう行動しよう。」

ということ。

 

以下、要約。

 

仕事に手をつける前は余裕だと思っていても、いざ着手するとどこかで追い詰められた状態になる。

その時、「正しくやる方法」「手早くやる方法」の2つがあれば、後者の方が魅力的に見えるだろう。

後者を選択した場合、後で修正する必要があることが多い。

 

しかし、次の仕事に取り組む際は、新しい仕事で手一杯になってしまうことが多いではずだ。

 

結局、「後で修正しよう」と思っていたものが修正されず、いつまでも残り続けてしまうものを技術的負債と言う。

 

もちろん、意識的に「手早くやる方法」を選択して技術的負債を生んでしまうことだけでなく、無意識に生んでしまうこともあるだろう。

 

Martin Fowler氏は、こうした2種類の技術的負債を区別するべきという。

意識的に生んだ技術的負債を「故意の技術的負債」、無意識に生んだものを「不注意から発生する技術的負債」として認識するのが大切だ!

 

『技術的負債 = 借金』

技術的負債は、借金である。

早くできるからといって手を抜いてコーディングすると、後ほど機能追加やリファクタリングが難しくなる

新たなバグを生む原因となったり、コードの可読性が落ちて他のプログラマ時間を奪ったりすることもある。

 

では、どうしたらいいか?

 

技術的負債を生んでしまうことは仕方ない。

本書では以下のような対策方法が書かれていた。

  • 技術的負債の存在を忘れないように、すぐにタスクカード、メモ、問題管理システムへ書き込む
  • 修正のための時間を次の期間のスケジュールに設ける

技術的負債は、できるだけ早く修正しよう!

 

関数型プログラミングを学ぶことの重要性

このテーマで述べられていたことは、

関数型プログラミングを学ぶことで、『コードの参照透過性を向上させること』を学べる。これにより、自身のコードの品質を向上させることができる。関数型プログラミング学んでみよう!」

ということ。

 

以下、要約。

 

参照透過性が高いとは、関数がどこでいつ呼び出されようと、入力が同じであれば、常に得られる結果が同じになる、ということを意味します。

(本書4ページより)

 

手続き型プログラミングにおける不具合の原因になるのが、「可変変数」

ある変数の値が予想した通りにならない経験をしたことはないだろうか?

問題は、変数の値が変わるような設計をしていること。

 

これを防ぐためには、可変なメンバー変数の参照が不要になるように設計すること。

そのために、小さな関数を数多く作り、個々の役割を限定しよう!

個々の関数は、渡される引数にのみ作用するようにしよう!

これによって、デバッグがより簡単になり、開発における生産性が向上する。

 

上記の内容が学べるのが『関数型プログラミング』だ。

 

関数型プログラミング?何それ?」

 

という方は、ぜひ調べてみよう。

(この記事の最後に参考サイトを貼っておきますm)

 

③ユーザが何をするかを観察する(あなたはユーザではない)

このテーマで述べられていたことは、

「ユーザの多くはプログラマではないから、プログラマはユーザの行動を予測できない。ユーザに使ってもらうサービスを作るには、使っているユーザを観察する必要がある。」

ということ。

 

以下、要約。

 

プロダクト開発は何のためにしてる?

ユーザに使ってもらうためだ。

 

ここで重要なのは、プロダクトの開発者(=プログラマ)の考え方と、一般ユーザ(=非プログラマ)の考え方は異なっているということ。

プログラマには、パソコンの知識や、独特の論理的思考力がある。

しかし、一般ユーザにはない。

 

そのため、プログラマはユーザの思考や行動を想像することができない。

 

じゃあどうするか?

 

1日かけてユーザの行動パターンを考える?

 

違う。

 

ユーザを直接観察すればいい。

 

そして、プログラマが想定した行動』と『ユーザの実際にとる行動』が違っている場所を特定し、プロダクト改善の参考にするのである!

 

まとめ

各項目ごとに一言ずつ。

①技術的負債を生んでしまったら、そのことを忘れないようにして、なるべく早く修正しよう!

②参照透過性を高めるとコードの品質が上がる。参照透過性を高めるには、関数型プログラミングを学ぶのが良い!

プログラマはユーザに身になって考えるのは難しい。ユーザを知るにはユーザを直接観察するべし!

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ

 

***参考サイト***

techacademy.jp

qiita.com

qiita.com