『暗号技術入門』を読んだ感想。
途中で読むのをやめて積ん読と化していた『暗号技術入門』を読み終えた。
これでやっと暗号技術に入門できたのかという感じた。
そもそも私がこの本を読み始めたきっかけは、情報処理技術者試験で共通鍵暗号方式や公開鍵暗号方式がよく出てくるが、言葉や外面を理解しているだけに過ぎず、暗号技術の本質を理解していないような気がしたからだ。
そんな方には是非オススメする。
タイトルに「入門」と記されている通り、暗号技術の数学的な側面は最低限にされており、易しくする工夫がなされているように感じた。
それでも難しい箇所はあり、第Ⅰ部の暗号に関しては2回読んだ(大きく分けて三部構成の本で、第Ⅰ部は暗号、第Ⅱ部は認証、第Ⅲ部は鍵・乱数・応用技術について紹介されている)。
1ページ丸々、図で埋まっていることも多く視覚的にも理解しやすかった。
それに加えて、結城浩さんの書く本の強みというか、醍醐味というか、登場人物によって話が進められていくシーンもあるので楽しんで読めた(数学ガールシリーズのようなラノベ形式ではない)。
歴史的な経緯に沿って各技術が説明されているのも本書の良いところだ。
そして、隠すことによるセキュリティ(Security by Obscurity)、つまり暗号アルゴリズムを秘密にするのではなく、様々な暗号解読者に強いと証明されたオープンな暗号アルゴリズムを使え、というのは本書が最も伝えたかったことの1つだと思う。
また、これらの技術は、最終的に何か1つのものを信頼することに収束するということも本書の伝えたかったことだと思う(ルートCAの信頼、「パスフレーズの記憶」という自分の記憶力の信頼など)。
個人的には一方向ハッシュ関数と擬似乱数生成器の話が面白かった。
この二つは、公開鍵暗号のような花形の技術ではないにせよ、裏方でかなり大事な役割を担っていた。
機会があれば参考文献にも目を通してみようと思う。
以上。
『情報はなぜビットなのか』を読んだ感想。
読み終わったので感想を書く。
この「なぜ」シリーズを読むのは今回で三冊目だが、今回紹介する本は「なぜ」シリーズの中で一番最初に読むべき本のように感じる。
理由は、アルゴリズム、データベース、ネットワークなど、コンピュータを扱う上で重要な部分を広く浅く解説しているからだ。
タイトルは「情報はなぜビットなのか」だが、これについて説明している部分はごく僅かである。
なので、本のタイトルが適切かどうかと考えると微妙なところだ(著者になんらかの思惑があるのかもしれないが)。
同じ「なぜ」シリーズに、「ネットワークはなぜつながるのか」や「プログラムはなぜうごくのか」などがあるが、「情報はなぜビットなのか」を読み、概要を理解した上で読むと、より理解が深まるだろう。
章ごとに分けて感想を書きたいが、全部で12章もあり多すぎるので、特に気になった章だけ感想を書いていく。
第1章 音声をデジタル化する (割愛)
第2章 一筆書きの可否を判定する
グラフ理論の話だ。
例をあげると、ケーニヒスベルクの橋、結婚問題、4色問題などについてだ。
なんとも難しい単語が並んでいるが、易しく解説がなされているので読みやすいだろう。
私は4色問題に興味が湧いたので、ブルーバックスの四色問題の本を読んでみようと思う。
第3章 最も儲かるようにお菓子を詰める (割愛)
第4章 身の回りのデータを解析する (割愛)
第5章 コンピュータとじゃんけんする (割愛)
第6章 どっちの手順がよいか判定する
アルゴリズムについての初歩的な説明がなされている。
流れ図にはじまり、線形探索・二分探索といったアルゴリズム、計算量などの説明が主にされている。
巡回セールスマン問題、ナップザック問題などのNP完全問題の説明にも少し触れているが、そこまで踏み入った解説はしていない。
第7章 プログラムでパズルを解く
引き続きアルゴリズムの話だ。
主に、ハノイの塔、エイトクイーン、モンテカルロ法など、前章よりも少し難しいアルゴリズムや典型問題についての説明がされている。
第6章・第7章は競プロを始めたばかりの人の役に立つのではないか、と思った。
第8章 機械に言葉を理解させる
形式言語、BNF記法、オートマトン、チューリングマシンなど、プログラミング言語やコンピュータの原型となるものについての話がされている。
個人的に一番面白い章だった。
川添 愛著の「白と黒のとびら」、「精霊の箱」でもう少し詳しく勉強してみようと思う。
第9章 スイッチで計算を行う (割愛)
第10章 情報を表形式で整理する
リレーショナルデータベースについての話だ。
私は第一正規形~第三正規形までしかよく知らなかったのだが、ボイス・コッド正規形、第四正規形、第五正規形についても粗方理解することができた。
従属性についても分かりやすく説明されており、良かった。
かなり得られるものが多い章だったように思う。
ただし、排他制御やロールバック、ロールフォワードのような話には触れていないことに注意する。
第11章 情報伝達の仕組みを階層的に整理する
私はネットワークの分野がどうも苦手だが、そんな私でも話の内容は粗方理解できた。
この章についても得られるものが多かったように感じる。
第10章・第11章については、情報処理技術者試験でも役に立つのではないだろうか。
第12章 コンピュータで社会貢献した人たち (割愛)
今回は割と内容が軽く、割とすらすら読める部類の本だった。
もう一度言うが、「なぜ」シリーズに興味がある方はまず最初にこれを読んでみて欲しい。
それでは、この辺で。
関連記事
『小悪魔女子大生のサーバエンジニア日記』を読んだ感想。
東京に行く新幹線の中で暇になりそうだなあと思い、気軽に読めそうな書籍を探してみたところ、イラストに惹かれる書籍があったので購入しました。
技術評論社から出版されている『小悪魔女子大生のサーバエンジニア日記』という書籍です。
この書籍は現役女子大生(2011年当時)がサーバエンジニアのアルバイトを通して学んだことを可愛いイラストを通して分かりやすく解説してくれます。
とにかくイラストが可愛いので読んでいても飽きませんし、かなり易しく解説されているのでインターネットを利用したことがある方なら、ほとんど知識が無い方でも読めるかと思います。
具体的な内容としては、インターネット、DNS、メール、WWW、サーバ管理で、全5章に分けて話が進められます。
どれもインターネットを利用する上ではかかせない技術ですし、当たり前の存在となったインターネットが裏でどういう働きをしているかを学べる筈です。
これからインフラ、サーバについて学びたい方、すでに学んでいるけれどざっと復習しておきたい方、イラストに癒されたい方は是非とも購入してみてください。
ちなみにTwitterは coakuma (@aicoakuma) です(2015年で更新が止まっています)。
そしてブログは 小悪魔女子大生のサーバエンジニア日記 です(2013年で更新が止まっています)。
ブログでも書籍に書かれている内容がかなり読めたりするのでまずはそちらに目を通してみるのも良いかもしれませんね。
電子書籍も発売されているようです。
それでは。
関連記事
IT選手権 全国大会に出場しました。
本日8月4日に行われたIT選手権の全国大会に出場しました。
IT選手権の地区大会で勝ち上がり、全国大会の出場が決まってからも勉強を続けていたので悔いは無いです。
得点はI部は90点と割と調子が良かったのですが、II部は72点と糞みたいな点数を叩き出しました。
合計点は162点で個人順位は55位でした。
180点で10位とのことなので18点も足りていないということになりますね…。
団体としての順位は19位でした。
主要なメンバーが1人欠けてしまった中での出場だったので、本来ならもしかすると10位以内に入っていたかもしれませんね…(言い訳ですが)。
さて、この大会の終了と共に私の3年間の部活動は幕を閉じました。
優秀な後輩たちに後のことは託して、私はおとなしく受験勉強に励む日々が始まります。
がんばろう。
関連記事
情報処理選手権に出場しました。
IT選手権 地区大会に出場しました。
昨日、IT選手権の地区大会に出場しました。
もう少し具体的に言うと、大阪IT会計専門学校で行われる、全国高等学校IT・簿記選手権大会のIT部門の近畿・中国・四国大会に出場しました。
おほさか (@ JR 福島駅 in 大阪市, 大阪府) https://t.co/mAOHlRD4Sr
— かずきち (@h_tyokinuhata) 2016年7月21日
得点はI部が82点で、II部が84点の合計166点でした。
これは目標だった10位以内に入れるのでは、と思ったのですが、おしくも11位でした。
しかも10位の方と点数が同じだったのでなおさら悔しいです(問題の難易度によって点数が同じでも順位が変わる)。
ですが、チームの得点には大きく貢献できたので嬉しかったです(団体ごとで上位3名の点数合計がその団体の点数になる)。
結果をまとめるとこんな感じでした。
近畿・中国・四国 全国
個人 11位 65位
団体 4位 14位
賞状も一応貰えて良かったです。
全国大会の出場権も得たので、8月に東京で行われる全国大会に向けて頑張ります。
関連記事
『オブジェクト指向でなぜつくるのか』を読んだ感想。
『オブジェクト指向でなぜつくるのか』の第2版を読破したので感想を書いていこうと思います。
まず、この本を読もうと思った理由は主に3つあります。
1つ目 : 私がよく使うJavaで適切にオブジェクト指向を利用して開発できるようになる為。
2つ目 : UMLを利用したモデリングやアジャイルをはじめとする開発技術など、コーディング以外の工程について学ぶ為。
3つ目 : 『関数型プログラミングに目覚めた!IQ145の女子高校生の先輩から受けた特訓5日間』という書籍を読んで、余計に分からなくなってしまった関数型言語に関する知識を整理する為。
といった感じです。
関数型言語に関する話は第2版で加筆された内容なので、購入する際は少し注意が必要です。
感想
さて、前半はOOP(オブジェクト指向プログラミング)に関する話です。
サンプルコードは短いといえど、全てJavaで解説されます。
その為、Javaの文法を知らないと辛いのでは、と思いましたが、私自身がJava以外の言語でまともにOOPをしたことがないのでなんとも言えません。
それに加え、メモリの使い方などハードウェア寄りの話も多々あるので、そこらへんの分野に関してあまり理解していないと感じる方はこの本を読む前に同じなぜシリーズの『プログラムはなぜ動くのか』を読んでおくことをオススメします。
ちなみに私は基本情報レベルの知識しか持ち合わせていませんが、本の内容についてはかなり理解できたかと思います。
中盤以降はUMLを用いたモデリングやアジャイルをはじめとする開発手法などを中心に、主に上流工程で使われるオブジェクト指向の話でした。
私は本格的な開発に携わったことがないので、とても新鮮味のある話でした。
この本だけでなく、なぜシリーズに一貫して言えることなのですが、注釈が丁寧で図による解説も豊富です。
そしてこの本では、章末に参考書籍が紹介されているので、次のレベルへのステップアップもし易いのではないでしょうか。
ちなみにこの本は、OOP、UML、関数型言語など、様々な分野を浅く掘り進めて行くスタイルの為、1つの分野に特化した専門書というわけではないです。
この本で概念的な面を理解した上で、JavaのOOPを実際に記述しながら学ぶだとか、デザインパターンについて別の本で勉強するだとか、そういった使い方が私は正しいと思います。
私はこの本で関数型言語(主にHaskell)について興味を持てました。
これを機会にHaskellを始めてみようかなという感じです。
OOPをはじめとしたの基礎について学びなおしたい方、是非とも手に取ってみてはいかがでしょうか。