ふみんさんの備忘録

私さんのブログです。読んだ本と行った場所の備忘録

『コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)』を読んだ

お疲れ様です。私です。 最近はWEBで受ける試験(oos-dbのシルバー)に落ちたりしてました。

コーティング試験って何やらの気持ちに近況なっていて、「paizaのb練習問題を曖昧にpython(前はjavaでやってたが出力を出すのに手間などの理由からpython)」などで解いたりしてます。 二本木探索、計算量とかが出てくるといきなり難しくなって(解けない、解く気がなくなる)のでatcoderは手を出してないです。

この本を読んだきっかけ

paizaのようなコーティングテストに手を出した関係で言語仕様のお気持ちについて知れる本でも読んどくかなぁと思いました。 それで『コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)』を読みました。

ちなみに書けるものについてはgithubのメモにある通りで

  • 簡単なcrudがある個人開発→laravel(php)
  • ちょっと重めな個人開発(たぶんしない)、業務→spring boot(java)
  • ファイル操作する少し複雑なshellっぽいものが欲しいとき→python くらいの雑な世界観で生きてます。

まぁやったことがあるものが少ない上に関数型言語に全く手を出してないのがやば怠惰って感じがしますが本題の方に入りたいと思います。

良いと思った点(実践してみたいと思えるような内容等)

  • ざっと言語の仕様を確認することができる
  • 特に好きなのはwhileの説明の部分と"文字とは何か"の部分で、whileは「forがあればできるのに、何故あるのかわからなかった(forとwhileでやってることが同じように感じた。かつ習いたての頃にwhileで無限ループしてしまったので好きじゃないです)、「文字コードがやたらあるのかわからない」などの理由があるためです。

以下はメモです。

  • while

    • goto文が出来ることを制限を加えている(本書の雰囲気だと、whileのほうが歴史があって、whileの使いにくい部分をforとして表現することを発明したような書き方に感じた)。
    • for文との違いとしては以下のようにまとめられる。

      • forを使った書き方

        for (i=0; i<N; i++) {

        System.out.println(i);

        }

      • forを使わない書き方

        int i = 0; while(i<N) {

        System.out.println(i);

        i++;

        }

    • 上のように書くこと自体は可能だがwhile文を使用すると、「ループの外で'int i= 0'、ループの条件式でi<N、ループの最後でi++」といったようにコードが分散してしまうのを避けるために、whileとforが存在している。
  • 文字コードについて

    • 1993年、世界中の文字を含んだ文字集合Unicodeを国際標準として利用することがきめられた。
    • utf-8 - Unicodeという統一された文字セットを符号化する方法。
    • iso-2022,Shift_JIS,EUC-jpなどの文字セットがアルファベットと数字(限られた数字)だけではなく、日本語を表現したいというニーズに合わせて出た。

悪い点(苦手な点)

  • 読みやすくていろいろな言語に触れてるのがいい点ではあるが、ある程度の厚みがある話題とっちかり系ではあるので、(何かをするか決まってない時に)時間つぶしに読めるといい本で、逆に何をするか決まっている場合には結構厚いので読まなくてもいいかなという感じです。(関係ないですが、これより厚みがないワードと簡単な説明だけの説明になると、説明として薄い感じがして読むのが逆にだれる気がする。)

まとめ

  • 「目的を間違えて手に取らないでね(あんまりいなさそうだが)」って以外にはあんまり悪い点として書き出せるようなことがないので、概ね私の中では高評価です。
  • 後、コーティング的なプログラミングをする際に先駆者へのありがたみが若干出るので、いい本でした

2021年と2022年について

2021年について

2021年も残りわずかですが、如何お過ごしでしょうか? おおむね元気です。

やったこと

  • Laravelの勉強 → 少しやった、途中で開発のグループワークを抜けてしまったので、迷惑をかけただろうなと思う。 今度からは抜けないようにバランスを考えていきたい。

  • aws,azureの勉強 → とりあえず資格欄に書けるものができて良かった

  • spring boot → 業務でさわってたのでヨシ

  • 引っ越し →荷物が少ないとすぐ済む

感想

やったことの割には実りが少ない感がある。 何もしてなくても実りが無限に発生して欲しい。

2022年について

生きる。(目標等無し)

やりたいこと

  • パケットキャプチャーの教科書を買ってしまったので読む。
  • oos-db silverを取る
  • javaの基本がわかってない」と言われたので、改めて勉強するのも含めてjava silver を目指す
  • セキュリティの授業単位が欲しい
  • lips lv1を取る
  • react辺り少し見る

感想

特に思い浮かばなかったので以上ですね。 年始はたぶんブログを上げないのでよろしくお願いします。 次回上げるのはたぶん1/6です。

『オブジェクト指向でなぜ作るのか』を読んだ。

  • この本は2018年にエンジニアとして研修を受けていた時にkindleで買った本です。
  • 当時はこの本を読んでもオブジェクト指向が分からなかったのか、研修での配属面談した上司に「オブジェクトって結局なんなんですか?」と聞いた覚えがあります。 確かめちゃめちゃ困ってたし、私が今同じ質問を年次上の後輩にされても困る自信があります。
  • 他に配属面談で聞かれて覚えているのは「研修でやった中(SQL/HTML&CSS/JavaFizzBuzzが書けるレベル)で何が一番好き?」と訊かれた覚えがあり、こちらは当時「(Excelの便利版みたいだから)SQL」と答えた覚えがあります。(ちなみに今はそんなに好きじゃないです)

この本を読んだきっかけ

良いと思った点(実践してみたいと思えるような内容等)

  • 「第12章 オブジェクト指向を使いこなそう」での"オブジェクト指向の利用自体を目的にしてはいけない"という言葉はどんな技術やツールにでもいえるような言葉ですごく良く思えた。

    「特に設計レビューやコードレビューの際に「これはオブジェクト指向らしい設計じゃない」といった発言が繰り返されたら要注意です。もしかすると、オブジェクト指向が手段の代わりに、目的になってしまっているのかもしれません。

上記のような場面は個人開発やグループでの社内研修などをしてる際によくみられるのではないだろうか?と感じる。上のようなやり取りが苦手で"設計を考える"ということを避けてしまうようになった人も珍しくはないと思う。

  • 設計は沼で設計の沼に悪いハマり方をしてしまうと「正しい設計(その他:web,プログラミング,プログラミング学習)のあり方」といったものを人に押し付け「正しい」ものであることを目的にしてしまうことが往々にしてあると思う。こういったときに

"xxの利用自体を目的にしてはいけない"ということを思い出せるようにしておきたい。

  • 一読した際には読み切れてなかったのか、「第11章」ではアジャイル開発とウォータフォール開発などの開発手法にも(OOPと相性がいいものというような形で)言及していた。 そういった意味では「オブジェクト指向プログラミング」が分からなくなった人以外にも初学者等の人にも勧められる本なっていると思う。

  • 各章のおわりに「より深く学ぶための参考書籍」が付いていたのが「どの部分が解説された本」なのかと言ったことまで書かれている点が良いと感じた。

悪い点(苦手な点)

  • 「コラム」が鬱陶しく(閑話休題として出されるクイズ)に対して「それは本当に読者が求めているものだと思っているのですか?」などの気持ちになります (しかし、このコラムなどをきっかけとしてその他開発手法や簡単なプログラミングの歴史などについて書いてあるのでうっとおしいという気持ちまでにしておくのが適当だと感じた)

  • 最後「13章 関数型言語でなぜつくるのか」の内容が(無知・怠惰・読み飛ばし・やる気のなさ等から)全然わからなかったので、残念だった。

まとめ

  • 「コラム」がうっとうしいなどの気持ちになりますが、まぁ読みやすい本であることは確かです。また、読みやすい上にオブジェクト指向プログラミング(やその他の開発手法など)の話をしていて人に勧められる本だと感じた。

  • 一回読むだけではなく何かしら理由をつけて2年に1回程度読むとプログラミングのありがたみが出るタイプの本です。 (ちなみに自分の中で『リーダブルコード』は1年に1回読んだ方がいい本としているので、そこから推し量ってください。)

『逐条 不正アクセス行為の禁止等に関する法律(第二版)』を読んだ

『逐条 不正アクセス行為の禁止等に関する法律(補訂第二版)』を読んでました。 受講してしまったシラバスに載っていたために、手に取ってみた系です。 タイトルの部分とamazonの簡易的な書誌情報でもわかるのですが、法律の本です。

この本を読んだきっかけ

良いと思った点(実践してみたいと思えるような内容等)

  • 法律などに対する説明が丁寧に書かれている。
  • 不正アクセス行為と言えば、Wizard_Bible事件(2018/3)などが思い出されると思うが (やったことが「ウィルスプログラムの配布」で不正アクセス行為として起訴だったはずなので多分この本の範囲にあてはまると思う。しっかり知ってるわけではないが法律での許容範囲が狭いことが指摘されている件で書籍として比較的丁寧に書かれたものが最近出たはずなの近いうちに手を出したいと思う。)そういったときの許容の狭さが分かるような感もあった。

Wizard Bible事件 - Wikipedia

  • 本書が出たのは2008年の第一版なので致し方ない部分もあるのかもしれないし、後続として内容を引継ぎアップデートした本があるのであれば少し読んだ方がいいのかもしれない。
  • 一番読みやすかったかつ好みだったのは「第十一章 付録」の「資料5 不正アクセス行為の発生状況」だった。(この本が出ていた2007年ごろは「オンラインゲーム」に関したものが若干の流行があったようにも見受けられた)
  • 同資料5内では「1つのパスワードに様々なIDを組み合わせてIDを特定する手法」の事案が2007年に出ていたようだ。最近もドコモ口座を利用して地銀が似たような被害にあっていたのは記憶に新しいように思う。

cf.リバースブルートフォース

「ドコモ口座」で相次ぐ不正出金、なぜ地銀だけが狙われた? 専門家の見解は - ITmedia NEWS

とりあえず日本の法律的な用語として自分用まとめ

(主として「第四章 用語の定義」からの抜粋し自分の言葉でまとめたものになります。私の読み間違いによって意図が変わってることもあり得ます。ご注意ください。)

  • アクセス管理者 - 特定電子計算機(電子通信が可能な状態に構成されている電子計算機)にアクセス制御機能付加する主体とされ、特定電子計算機を不正アクセス行為から防御するために必要な措置を講ずるように努める。(注より、「企業内LANに社員等が私物のPCを接続している場合がある。端末機器としてのみ利用し得るものであればアクセス管理者は"いない"。そのPCがlanを通じて他のPCから遠隔利用できるようにしているのであれば、その社員がその遠隔利用(特定利用)について"アクセス管理者になる"」)

  • imo. 今のコロナの状態で上記の注のような使い方がかなり書かれた当時よりもされるようになってきた(し、ある場所では推奨もされるようになったように感じる。)
    それらを含めると若干危うい感じがする

  • 識別符号 - 利用させる相手や範囲を決定させるために、pcに相手を識別させる必要がある(ex.id,password的な)

  • 特定利用を認める相手方ごとに違うものであること

  • その相手方以外に用いられていることができないものであること

  • cf. Authentication(認証) ※以下の話はaiitのセキュリティシステム管理運用特論のパワーポイントから抜粋しました。

    • 知識情報-passwordなど
    • 生体情報-指紋や静脈パターンのようなその人を示す情報
    • 所持情報-磁気・ICカード(スマホ)のような本人の持ち物
  • アクセス制御機能 - アクセス管理者がid,password等の識別符号が入力された場合のみその利用を認めること(ファイアーウォール)ゲートウェイ・認証サーバー型

悪い点(苦手な点)

  • webセキュリティに興味がある人が読むものというよりは法律に興味がある人に向けて書いているような節があるので、かなり固く書かれている。例で言えば「第七 アクセス管理者による防御措置」の章では努力義務としてだが、かなり多くのものが課されている。

ex. バッチプログラムによるセキュリティホールの解消 初期パスワードは変更すること ログの保持 など 確かにそれができていれば、世の中の穴はなくなるだろうなと思うようなところはありました。 (銀行案件を考えてもらうとわかりやすいし、そういったものに対して書いてあるようにも見受けられる)

まとめ

  • 日本語としてかなり読みにくいし、厳密に書こうという意思が垣間見れるので「自分用の用語定義」のまとめを作るために読み返すだけでもかなり骨が折れた。
  • ザラっとしか読んでいないためここの章を読み直した方がいい等、また誤記があればご指摘ください。

『実践・パケット解析』を読んだ。

『実践・パケット解析』を読んだ。

『実践・パケット解析』がシラバスの参考文献に上がっていたため、一度目を通すつもりで読んだ。 一読した限りでは、第10の「現場に即したシナリオの第一歩」などに自分の理解が及んでいないとわかる範囲があった。 今回シラバスに載っていたように「パケット解析」をしたい人のための第一歩もしくは、wiresharkを使った解析のハウツーとしては有用な本だと感じた。

この本を読んだきっかけ

『実践・パケット解析』がシラバスの参考文献に上がっていたため。

良いと思った点(実践してみたいと思えるような内容等)

  • ネットワーク初心者向けに書いたという背景もあり、第7章~第9章あたりでプロトコルに関する説明をしている。
  • あくまでも、ネットワーク初心者向けなのでそれ以下の知識しか有していない人などは象本「1週間でCCNAの基礎が学べる本」や「マスタリングTCP/IP 入門編」等でなんとなく理解してから読んだ方が適当だと感じた(どちらの本も手に入りやすい本なのでぜひ。私は読み切ってはいませんが)
  • 付録に話になるが、付録Aではパケットキャプチャーに便利なツールの紹介がされていて、読んでる範囲で愉快だった。
  • 余談になるが、付録Cでwin10Pcapの紹介がなされていた、作成者は"登大遊"(情熱大陸という番組に「シンテレワークシステム」を紹介する目的で登場していたので記憶に新しかった。)

    悪い点(苦手な点)

  • wiresharkのハウツーと書いたがwiresharkの導入、細かな使い方について書いてある印象があり、手を動かして学びたいといった人には若干不向きな印象もあった。
  • wiresharkを使ったできた気持ちになれるハンズオン的な本「ハッキング・ラボのつくりかた 」(途中まで)などを読む方が適切だと思う。

    まとめ

  • (以下のことは前書きにも書かれていたように思うが)wiresharkの細かな使い方の確認ができる辞書として読むや、簡単にwiresharkの概要をつかむのには適切な本だと感じた。
  • また付録として追加されている"パケットキャプチャーに便利なツールの紹介"は時代とともに変化しうるが読んで損はないと思う。

参考

menta(メンタ)を使ったという話

今回のこれはお茶濁し記事です。 大体ポエムと同じ枠なので、そのレベル感で読んでもらえると嬉しいです。

mentaとは

メンターとメンティを繋げます的なサービスです。 こういったサービスを使うのは、チーム開発をしたものを含めれば三回目。

メンティ(自分)のプロフィール

現在の職歴(簡易) → 都内のSESで3年目程度

なぜ使ってみたか

java案件に現在ついているが、「振られる作業が少ない。(少し難しいような作業はすべて上司が巻き取ったりするため)」ということを知り合いに相談したところjavaのレベル感が分かる質問をされ、結論として「Javaは入門の序盤止まりというのはわかりました。」と返されてしまったため。 →個人的にjavaのレベル感はもう別に十分だと思っていたので、なにが足りないのかイマイチわかってない。そのため、もう一人くらいjavaに詳しいかつ社外(社内の人はあまり厳しいこと言わないため。)の人に聞いてみる必要があるように感じたため。

実際の案件募集

最低価格は3,000円から 本体の募集は案件を引き取っていただける方が見つかった時点で、消してしまったので、以下は覚えてる範囲になりますが。

■タイトル:

javaとsesの働き方の学習について教えて頂ける方

■内容:

javaとsesの働き方の学習について相談に乗っていただける方を募集しています。

一回のみの対応で即日で通話などで対応していただける方だと嬉しいです。

以上のような内容だったと思います。 即日で対応していただける方が見つかったので、募集を消してサービスにお金を払い完了です。

使ってみてどうだったか(話した話題等)

  • 報われないSNSで消耗してない?」という話

  • 目標になれるようなエンジニアが身近にいないのが問題なんじゃないの

  • Javaの資格でも取ってみたら?

  • タイミングがあったら、カジュアル面談を受けてみてもいいかも

余談

下のurlから登録すると割引券が付いてきます。 https://menta.work/invite/IZb25V0dZLw8XNDa

『SOFT SKILLS』を読んだ

『SOFT SKILLS』を読んだ。

『SOFT SKILLS』を読んだという話です。

ソフトウェア開発者の人生訓的に的に読んでほしいという話(たぶんこの書き方ではなかったが……)が序文にあったように思うが、大変多くのトピックについて触れている本のように感じた。 一度に読むと多彩な内容に触れられる点と書き手の主張があまりブレてないことに気が付ける点がいいかもしれない。 しかし、内容が多彩であるが故に、一度に読むと1/3も覚えてない気がするので、隙間のような時間に読んでいく読み方がいいように感じた。 私は、一度に読んだのであまりしっかり読めたと思えないし、良い読者でもないのかもしれない。 デプロイ中(CI/CDが盛んだともう自動化されてしまって、5分もかからないのかもしれないが)のようなタイミングに一章ごとに読んでいくような読み方が理想的なように感じた。

この本を読んだきっかけ

  • 株式会社ゆめみ(twitterでよくRTが回ってくる会社)のnotionページ内で"アソシエイトエンジニア推奨図書"https://notion.yumemi.co.jp/76e2dc44fd8c441db10c7f9c5d03e7a9として勧められていたため。
  • もともとこの手の自己啓発的な内容と被るような本は得意ではないのではないのだが、副題に「ソフトウェア開発者の人生マニュアル」と書かれていたので興味が出たため。
  • amazonで表紙を見た感じページ数が多くなさそうで、内容が重いタイプの本ではないように思えたため。(実物の本を見てから「こんなにページ数があったのか」と思った。)

良いと思った点(実践してみたいと思えるような内容等)

  • 読みやすい。(章が短いので、軽いブログの記事を読むくらいの負荷で読むことができる。)
  • 第二部「自分を売り込め」を読んだことで「週に一度ブログを更新する」のように若干できそうな目標が出来た。(この手のことを何度もやって続いていないのだが)
  • 第三部「学ぶことを学ぼう」ではよく話題に上がる「(PG,SEとして働く際に)学位は必要か」ということに対して、作者なりの回答が出ている点が好ましく思った。
  • 第四部「生産性を高めよう」では自分の習慣を見直すために一日のスケジュールを大まかに書いて見直すことを書いており、これはTVやSNSを見る時間等を見直すことについて書いているのだが、一日のスケジュールを見直すきっかけになった。 ちなみに下が私の一日(平日・在宅時)のスケジュールです。

スケジュール
7:00 起床・服薬

7:10 ~ 7:30 朝食を食べながらポケモンGOのギフトを空ける

7:40 ~ 8:30 積んでいるアニメ・ネットで定期連載している漫画を崩す

8:30 ~ 8:50 着替え・歯磨き

9:00 ~ 12:00 午前労働

12:00 ~ 12:59 SNSやアニメを見ながら昼食

13:00 ~ 18:00 午後労

18:00 ~ 20:30 SNSを見ながら晩御飯等(図書館に本を返すや図書館の本を崩す、課題を崩すなどが入る場合もある)

20:30 ~ 21:30 風呂・シャワー等

21:30 ~ 23:50 SNSを見る・アニメを見る等 確かにSNSを見るが思ったよりも多いように感じた(薄々気が付いていた)。

  • 他にも運動や栄養管理について触れており、プロジェクトが火を噴くと「体力がない」と感じていたので学びがあった(私にとって特に実践したいような内容はなかったが他の人にとっては違うかもしれない)

  • 大体すべての部で「習慣化しろ」や「できる方法で実践しろ(し続けろ)」といったことが書かれていて、一貫性があった。

悪い点(苦手な点)

  • 第一部が「キャリアを築こう」という内容なのだが、日本とは少し離れているように思った。(同じ理由で第五部も苦手である。)

  • 内容に自己啓発と投資の話が含まれているので仕方ないのかもしれないが、作者が引用として出してくる本がで良くネットワークビジネスの文脈で出てくることの多い本なのでその印象がよぎってしまった。

まとめ

厚みのわりに読みやすい本なので気になったら手に取ってもらえると嬉しい。 一つくらいは実践したくなる(できるような)ことが見つかるかもしれない。