ブログ

  • 【書評】基本がわかる安全設計のWebシステム

    基本がわかる安全設計のWebシステム の書評です。

    結論から言うと、非プログラマ向けの、言語に依存しない、Webセキュリティ要点本です。

    ■ 良い点
    ・ プログラミングの知識がなくても要点がつかめる
    ・ 必須知識のほぼ全般を押さえられる
    ・ 読みやすく短時間で読了できる
    ・ 「まとめ」がよくまとまっている

    ■ 悪い点
    ・ 開発者には若干物足りない

    ■ 総評
    本書は、Webシステムのセキュリティに関する本ですが、開発者向けというよりも、発注者やプロジェクト・マネージャーといった、プログラミングの知識があまり無い、非プログラマー向けのセキュリティ解説書となっています。

    プログラマー向けには、いわゆる徳丸本が有名ですが、徳丸本は難しくてよくわからないという人に本書はおすすめです。もっとも、プログラマーであるならば、本書の内容は必須知識であり、セキュリティの学習の総復習にはちょうどよい感じです。短時間でおさらいができます。

    【徳丸本】 体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

    なお、非プログラマー向けであることから、特定のプログラミング言語での解説はほぼ無くて、具体的なコードはでてきません。言語に依存しない解説となっています。

    個人的に本書が役に立ったのは、「クリック・ジャッキング」に詳しい所や、セッションの扱い、ログの扱い、WEBにかかるインフラについての記述などです。徳丸本以外の有用な情報もあるので、セキュリティに関心があるならば、一度、本書に目を通すとよいと思います。

    基本がわかる安全設計のWebシステム

  • 【書評】新版 論理トレーニング (哲学教科書シリーズ)

    新版 論理トレーニング (哲学教科書シリーズ) の書評です。

    結論から言うと、(国語的な)論理学の演習本としてお勧めの一冊です。

    ■ 良い点
    ・ 文章を論理的に読み解く力がつく
    ・ 論証や演繹について問題を解きながら学習できる
    ・ 問題を解きながら学習するため理解が深まる
    ・ 論文の書き方が参考になる
    ・ 読みやすく分かりやすい

    ■ 悪い点
    ・ 章末の課題問題に答えがない
    ・ 注が巻末にあり通読しづらい

    ■ 総評
    野矢茂樹氏による論理トレーニング本です。
    前半は、国語的なテーマである接続関係に重点が置かれ、後半は、論理的なテーマである論証や演繹などに重点が置かれています。最後の編では、論文の書き方にも触れられているので、小論文や論文を書く人にとっても参考になると思います。なお、記号論理学は扱われていません。

    本書は、トレーニング本であることから、問題に解答することにより論理的な力がつくような構成になっています。ですから、紙とペンを用意して、じっくりと時間をかけ、よく考えて解答していくとより効果的だと思います。

    ただ、元々が教科書として作成された本であるため、章末の課題問題には解答が付いていないのが残念です(全体の5%ほどですけど)。

    ところで、野矢氏の論理学関連の本で有名なものは主に4冊ありますが、お勧めの読む順番は次のとおりです。

    1. 入門!論理学 (中公新書)

    新書で薄く読みやすいので、論理学の入門にお勧めです。

    2. 論理学

    論理学についてより深くインプットの学習をします。思ったよりも易しいです。

    3. 論理トレーニング101題

    論理学で学習したことのアウトプットとしてトレーニングします。

    4. 新版 論理トレーニング (哲学教科書シリーズ)

    さらに、アウトプットとして論理の力をつけるためのトレーニング。

    これら4冊を繰り返し読み、学習すれば、論理的な力が十分に身につくと思います。なお、1,3,2,4の順、あるいは、1,3,4,2の順で読むのもいいかもしれません。どの本も読者の立場に立ち、読みやすく易しく著されているので、興味のある本から読むのもいいでしょう。

    以上です。

    新版 論理トレーニング (哲学教科書シリーズ)

  • 【書評】論理トレーニング101題

    論理トレーニング101題 の書評です。

    結論から言うと、「国語的な論理」を学習するのにとても効果的な一冊です(記号論理学は扱われていない)。

    ■ 良い点
    ・ 論理と国語の良い勉強になる
    ・ 解説が分かりやすく読みやすい
    ・ 問題文が厳選されている
    ・ クイズ感覚で楽しく読み進められる
    ・ 読む場合、書く場合、議論する場合に応用できる
    ・ 全部で5章あり、それらの構成と内容がしっかりしている

    ■ 悪い点
    ・ 解説が少々微妙な箇所がある

    ■ 総評
    論理学の著書で有名な野矢茂樹氏の論理トレーニング本です。

    内容的には、論理学というより、やや「国語的な論理」を学習するものとなっています。全体的に解説が丁寧で平易に書かれているので、論理学の知識がなくてもクイズ感覚で楽しみながら読み進められます。

    もっとも、多少の論理学の知識があればより理解が深まるでしょう。もし、前提知識として何か学習したいならば、野矢氏による、 入門!論理学 (中公新書) を読むのをおすすめします。

    なお、比較的、考えさせる問題が多いので、斜め読みをするのではなく、腰をすえてジックリと取り組むのが良いでしょう。問題に対して集中して深く考えるほど、論理の力がつくはずです。ちなみに、ゆっくり読んでも、1日に1章のペースで読めば、全5章なので、5日ほどで読了が可能です。

    できるだけ早い時期、若い歳の頃に読んでおきたい一冊です。

    論理トレーニング101題

  • 【Vista】Cドライブの容量を増やす方法【Temporary Internet Files限定】

    ある日、ふと、スタートメニューの『コンピュータ』を開いてみると、なぜか空き領域が残りわずかになっている。つい最近まで、50GBほどあったはずが、いつのまにか7GBまでに減っている。

    そこで、フリーソフトの『DriveAnalyzer』を使い、Cドライブのファイル容量を測定してみると、なぜか計測が終わらない。何度やっても、
    C:\Users\(ユーザー名)\AppData\…
    で止まってしまう。

    『DriveAnalyzer』
    http://www.vector.co.jp/soft/winnt/util/se277549.html

    『DriveAnalyzer』の不具合かと思い、別のフリーソフトで試すことに。『FileSum』を使い測定してみると、やはり、同じところで進まなくなってしまう。

    『FileSum』
    http://www.vector.co.jp/soft/win95/util/se030005.html

    これはおかしいと思い、ネットで調べてみると、どうやらインターネットエクスプローラーのキャッシュの不具合が濃厚と判明。

    キャッシュを保存する「Temporary Internet Files」フォルダが異常に肥大化する不具合らしい。一般的に、キャッシュのために下のフォルダが使われている。

    C:\Users\(ユーザー名)\AppData\Local\Microsoft\Windows\Temporary Internet Files

    実際に、自分のフォルダでも、プロパティからサイズを見ようとすると、数ギガバイト以上の容量が示される。

    今回、Cドライブの容量が肥大化したのは、この「Temporary Internet Files」が原因とほぼ確定。とりわけ、その中の「\Low\Content.IE5」フォルダが巨大過ぎる。

    そこで、この「Temporary Internet Files」を削除しようとするも、ここからが一苦労。単純に削除しようとすると、ファイルにアクセスできず、フォルダの削除もできない。コマンドプロンプトからも削除できず。

    調べてみると、「Temporary Internet Files」は、いわゆるシステム用フォルダで、システム保護のため、通常のエクスプローラーでは削除できないらしい。

    そこで、次のようにすると上手くいった。
    (注意)作業は必ず自己責任で慎重にお願いします。

    ———————————————–
    ■ 1. インターネットエクスプローラーの「Temporary Internet Files」の現在の場所を移動(変更)する。

    「ツール」→「インターネットオプション」→「履歴の閲覧」→「設定」→「フォルダの移動」と進み
    インターネット一時ファイルの「現在の場所」をわかりやすいフォルダに変更する。自分は、C:の直下に「temp」フォルダを作成してそこに変更した。
    ここで、一度、ログオフすることもある。

    ■ 2. システムファイルや隠しファイルを表示する

    システムファイル等の隠しファイルを表示するため、フォルダの設定を変更する。任意のフォルダを作成して、

    フォルダの「整理」→「フォルダと検索のオプション」→「表示」と進み
    「・すべてのファイルとフォルダを表示する」を選択
    「・保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外す。

    ■ 3. ファイル削除ツールを使い「Temporary Internet Files」を削除

    通常のフォルダの削除では、上手く削除できないので、フリーソフトの『FastCopy』をダウンロードして使う。

    『FastCopy』
    http://www.vector.co.jp/soft/winnt/util/se360695.html

    使い方は、sourceに、
    C:\Users\(ユーザー名)\AppData\Local\Microsoft\Windows\Temporary Internet Files
    を指定する。そして、削除を実行。数十GBある場合には、数時間かかる。数GBずつ、削除できているかC:ドライブの容量を確認しながら作業を進めるのがおすすめ。

    ■ 4. 削除が終わったら、2.を元に戻し、1.も元に戻す。

    ———————————————–

    この手順で、「Temporary Internet Files」を削除することができました。
    ちなみに、『FastCopy』を使った削除では、約6~8分で、1GB削除でき、5時間ほどかけて、45GBほどのファイルを削除しました。なお、一度に削除するとパソコンへの負荷もかかるので、数度に分けて削除した方が良いと思います。

    さて、どうして200万以上の異常な数、かつ、40GB以上の量のファイルがキャッシュされ保存されてしまうのか。とても疑問なのですが、この点は是非、改善して欲しいものです。

    (参考になったページ)
    https://support.microsoft.com/ja-jp/kb/301057#/ja-jp/kb/301057
    http://jungknight.blog90.fc2.com/blog-entry-2357.html
    http://pcclick.seesaa.net/article/184227097.html
    http://blogs.technet.com/b/jpieblog/archive/2011/09/09/3452071.aspx

    フリーソフトの作者様と、解決策を示してくれた先達に心より感謝です。

  • PHPプログラマが習得すべき技術10選

    これまで、PHPを中心にプログラミング関係の本を100冊ほど読んできたので、後学のために、どのような技術を、どの順番で、どれだけ深く学習したらよいかを簡単にですがまとめておきます。

    なお、各項で「比重」とあるのは、全体(100%)からみてどれだけの労力を学習に充てるべきかの比率を表しています。括弧書きは、100冊読んだ場合の冊数を表しています。

    それでは、学習すべきお勧め順に紹介していきます。

    ■ 1. PHP
    比重:20%(20/100冊)
    難度:普
    要点:文法、セッション、データベース連携、セキュリティ、フレームワーク
    概要:PHPプログラマであるならば、当然、PHPについて深く知る必要があります。文法はもちろん、クッキーやセッションの扱い、データベースとの連携、そして、セキュリティまで広範囲に技術をカバーする必要があります。レベル的には、会員制サイトを運営できるくらいになれば、まずまずでしょう。更に、CakePHP等の主要なフレームワークについても習得しておくことが望ましいです。
    おすすめのPHP入門書

    ■ 2. SQLおよびデータベース
    比重:15%(15/100冊)
    難度:普
    要点:文法、データベース設計
    概要:PHPでアプリケーションを制作する場合には、データベースとの連携がまず不可欠です。アプリを効率よく動作させるために、深いSQLの知識が必要です。また、データを効率よく取り扱うために、データベース設計の知識も必要です。データベースとの連携は、アプリの肝となるため、十分に学習することが求められます。なお、主にMySQLを中心に学習すると良いでしょう。
    おすすめのSQL・DB入門書

    ■ 3. HTML
    比重:5%(5/100冊)
    難度:易
    要点:文法、HTML5
    概要:PHPは、最終的にはHTMLを生成することが多いので、当然、HTML自体についても正確な知識が求められます。HTMLの構造として、正しく適切なマークアップができることが必要です。HTMLは比較的簡単なので、数冊ほどの入門書に目を通すくらいで良いでしょう。
    おすすめのHTML入門書

    ■ 4. CSS
    比重:5%(5/100冊)
    難度:易
    要点:文法、CSS3
    概要:HTMLを学習したならば、HTMLの装飾としての機能であるCSSもセットで学習しておきましょう。最近は、CSS3といって、CSSの多機能化も進んでいます。基礎から最新のCSS事情まで目を通すと良いでしょう。
    おすすめのCSS入門書

    ■ 5. JavaScript
    比重:15%(15/100冊)
    難度:普
    要点:文法、DOM、Ajax、ライブラリ
    概要:PHPがサーバーサイドの言語であるならば、JavaScriptはクライアントサイドの言語です。JavaScriptは従来、HTML及びCSSとセットで学習されてきましたが、PHPと連携させることで、表現の幅がとても広くなります。HTMLやCSSの操作であるDOMはもちろん、PHPとの連携であるAjax、そして、余力があれば、JQueryなどのライブラリまで学習すると良いでしょう。
    おすすめのJavaScript入門書

    ■ 6. Linux
    比重:5%(5/100冊)
    難度:普
    要点:基礎知識、Apache、Bash
    概要:PHPはサーバーで動作するものである以上、サーバー自体の知識も必要です。サーバーの構成そのものや、パーミッション、WEBサーバーであるApache、サーバーを操作するためのコマンド、そして、Bashといったプログラミングまで学習すると効率よく開発と保守ができるようになります。
    おすすめのLinux入門書

    ■ 7. Java
    比重:20%(20/100冊)
    難度:やや難
    要点:文法、オブジェクト指向、デザインパターン、リファクタリング
    概要:PHPの学習に際しては入門書等を利用するのですが、それだけだと、プログラミングの力が不足してしまいます。よりPHPの力を発揮させるには、オブジェクト指向やデザインパターン、そして、リファクタリングといった知識も必要です。こうしたステップアップのための学習をするには、Java言語が最適です。内訳としては、各分野の本を5冊ずつくらいを目途に学習すると良いでしょう。
    おすすめのJava入門書

    ■ 8. C言語
    比重:7%(7/100冊)
    難度:普
    要点:文法、ポインタ、構造体、アルゴリズム
    概要:Javaを学習したら、ついでにC言語も学習するのがお勧めです。理由は、プログラミングの定番コードの説明にはC言語がよく使われること、また、アルゴリズムといった分野ではC言語が多く利用されていることがあげられます。C言語の文法は、PHPやJavaと似ているため学習は比較的楽だと思います。ポインタや構造体などの知識も、あとあとプログラミングの理解を深めるので一通り学習するのが良いでしょう。また、C言語の学習に併せてアルゴリズム関係の本も数冊読んでおくのがお勧めです。
    おすすめのC言語入門書

    ■ 9. C++
    比重:3%(3/100冊)
    難度:難
    要点:文法
    概要:JavaとC言語を学習したら、ついでにC++の入門書にも目を通しておくのがお勧めです。プログラミング言語の中でも最も難しい言語とされているので深入りは不要ですが、簡単な入門書を数冊読んでおくと自信になります。同じオブジェクト指向の言語であるJavaとの比較や、C言語の構造体とC++のクラスの比較などをすると理解が深まります。C言語とC++を合わせて10%くらいを目途に学習すると良いでしょう。なお、最終的には、デザインパターンのGoF本(オブジェクト指向における再利用のためのデザインパターン)を読むのがおすすめです。
    おすすめのC++入門書

    ■ 10. その他
    比重:5%(5/100冊)
    難度:普
    要点:コーディングスタイル、アジャイル開発、テスト駆動開発、環境構築
    概要:主なプログラミング言語を上記で挙げましたが、その他にも、コーディングスタイルについてや、アジャイル開発やテスト駆動開発といった開発手法、そして、gitなどのバージョン管理システムなども学習する必要があります。ここらへんは、必要に応じ随時学習すると良いでしょう。

    以上で、PHPプログラマが習得すべき技術を10個ばかり簡単に解説しました。この他にも、関数型言語やPython、Ruby、perlといったスクリプト言語、そして、スマホ開発に必要なAndroidなどの分野もあります。IT技術はもちろん、プログラミングに限ってもとても広大な分野なので、学習は際限が無いとも言えます。しかし、自分に必要な知識を見極めて効率よく学習できたならそれに越したことはないと思います。この記事が後学の人のために少しでも役立てば嬉しく思います。