JavaScript勉強中(1)

JavaScriptJavaと並行して学習しているのですが、頭がこんがらがってきました。


JavaScriptでの、ローカル変数とグローバル変数の枠組みの弱さは今のところ特段分かりにくいとは思いませんでした。
関数内で定義した変数を関数外でも参照できるってのは不思議な感じもしましたが、まぁそういうものなんだろうと。スコープの違いはまだ大丈夫です。


ただし、プロトタイプベースのオブジェクト指向言語ってのは訳がわからないです。
「クラスといったらただの設計図みたいなもんだろ!」と理解していたのに、プロトタイプベース(JavaScript)では関数に対してnew演算子を付けたりもする。


なんで関数にnew演算子を付けてるんだよ……などと戸惑い続けてます。
ただでさえJavaを覚えたてなのに、オブジェクト指向にも色々あるということを突きつけられて全てがあべこべになる感覚を覚えますね。

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

JavaMySQL+Tomcatで始めるWebアプリケーション構築入門


Webアプリケーションに必要な要素を集めた本。


題名に挙げられた要素はWebアプリケーションを作る上で定番な要素だと思います。
各要素の入門書を挙げれば数限りなく、それと対応して需要も多い。定番というより、ありきたりに近い要素たちです。


そんな知名度なためかWebアプリケーション開発に携わる上では「知っていると役立つこと」というよりは「常識」に近く、知らないことが問題に繋がるようなニュアンスを感じていました。


そんなわけで避けては通れない道なら、まとめて覚えてしまおうということで本書を選んだわけです。


本書の特徴として、カバーする範囲が広いわりに説明をガンガン飛ばすようなことはしてない点です(その分、厚さに反映されている……)。
意外にきっちり各要素を説明してまわります。本当にJavaMySQLTomcatも何も知らない人向けに書かれているためか、守備範囲をやや下方に設定している印象がありました。
各要素の必須要素ともいえる文法、使用法から始めるので「こんな3つも組み合わせて覚えるなんて無理!」と思った人も容易に吸収できるかもしれません。



特に、読者に前提知識を要求しないため、技術書として第一に手に取る本として選んでも大丈夫なところが大きいですね。手取り足取り、一から教えてくれます。何冊も購入するとお金も馬鹿にならないですし、安く、簡単に、そして多くのことを、さらっと流してみたいという人に向いている本だと思います。


期待と違った点は、各要素を組み合わせてひとつのものを創り上げる章が少ない点ですね。各要素は紹介するけれどそれらを組み合わせるのは読者の努力にまかせてるような、置いてきぼりな感じがあります。


ごった煮な本書ですが、一要素に注力した本と合わせて読んだりするのに向いているのではないでしょうか。
そんな本でした。

Webアプリケーション設計・実装のためのフレームワーク活用の技術(1)

Webアプリケーション設計・実装のためのフレームワーク活用の技術

フレームワークの勉強中。


色々なところで耳にする言葉だとおもいます。
特に良く聞くのは「良いところは便利すぎるところ、悪いところは(便利すぎて)開発スキルが身につかなくなるところ」ということ。利便性とその代償が取り沙汰されている気がしました。


最近まで読んでいた「プロになるためのWeb技術入門」でも、Javaフレームワークとして有名なStrutsの活用例が紹介されていました。標準的なフレームワークなので、これ使って雰囲気感じ取ってよ、という意味合いです。


「プロに〜」を読んで分かった気になったものの、会社で使う予定のSeasar2というフレームワークを調べてみたらDIコンテナやAOPなど、意味不明な言葉が多すぎたために、根本的に勉強してみようと思い立ちました。


■本書の立ち位置

フレームワークを使えば簡単にアプリを作れる。
⇒そのせいか基礎的な学習を怠りがちな人が増えた。
フレームワークは万能の利器ではない。構造的な長所・欠点がある。
⇒内部処理を詳細に記すことで、何を便利にしているのか表す。
⇒基礎的な学習を学ばせる。
⇒エンジニアの技術水準を上げる。


フレームワークは通常のプログラムで書けることを簡単な記述で省略している。でも場合によっては省いちゃいけないものまで省いている。状況ごとの使い分けが下手だとフレームワークを使うことが逆効果となりかねない。
じゃあ状況の使い分けはどうやってするのか。それは内部処理を理解し、状況と対策の見極めをすることで。
そのあとにやっと対策にあったフレームワークを選定する、ということをみんなにできるようになってほしいのが著者の望みだと思いました。


■一章はここまで
一章はフレームワーク概要というより、フレームワークをもちいらざるを得ないソフトウェア業界の現状に主眼を置いています。
内部処理まで見ないでアプリを作れることが、内部処理への興味を失わせた。非常に納得できる言葉でした(といっても現場を見て言ったわけじゃないんですが……)。
上記のとおり、一章は本書の立ち位置を説明することに終始していると言っていいでしょう。必要性を説明されて、モチベーションが上がりましたので良い出だしだと思います。


■慢性的な人材不足
一章ではフレームワークだけでなく、IT業界が慢性的に抱えている「人材不足」という問題を絡めて話を進められますが、何度も言うように強調されるのは「エンジニアに必要なのは基礎知識」ということです。


Java(C,C++,Ruby,etc...)という技術を必要十分に使えるというのであれば、その技術の前提となる技術についても理解しなければなりません。言語ごとの技術と言語を支える技術は別になっています。
開発者にその基礎技術(オブジェクト指向アルゴリズム、HTTPプロトコル,etc...)が備わっているかは現場で評価しづらいことが、適材適所を不能にし、人材不足ともつながるようです。
基礎技術はスポーツでいうと基礎筋力のようなもので、野球するにしろサッカーするにしろ必要な共通的な能力と似ていると思いました。
つまり、小手先がうまくても基礎がなければ応用もできないのでいつか問題となる、ということです。この基礎技術の不足が評価しづらいので、現場では危機感は覚えにくいかもしれないが、現状を正確に把握して技術の向上に励んでほしい、というのが著者の訴えるところだと思います。


というわけでたゆまず勉強しましょう。

プロになるためのWeb技術入門

プロになるためのWeb技術入門

Web技術の全体像を俯瞰できる良書。


会社の方で新プロジェクトに参加になりましたので、前に書いたEclipseなどの学習とともにWebアプリケーションを一から勉強しています。


学習の視点というものにはミクロとマクロがあります。
ミクロの視点で学習していくと要素技術に詳しくなれるため、各要素が具体的にどういった性質を持ったものなのかイメージできることが利点です。その世界について何も知らないならば、抽象的な全体像はまず頭に固着しないので、ミクロから入ると学習効果が高いと思います。
逆にマクロな視点で学ぶと、各要素が他の要素とどう組み合わさっているのか、つまり技術体系の中での各要素のポジションを認識しやすくなるでしょう。何か目的のもの(例えばアプリケーション)を作るときに、ミクロで得たものを結局どのように加工すればいいんだろう、と悩んだときには一度全体像を眺めた方が単一の技術を深く極めるよりもずっと効率的になるかもしれません。
両方とも場面によって使い分けるべきメリット・デメリットがあり、どちらにも何度も反復して立ち寄るべき視点でしょう。


ミクロ・マクロという意味でいえば、完全に、本書はWeb技術のマクロ面を示す本です。
私のようにWebアプリケーションの開発に参加することになったものの、漠然としか知らない「Webアプリケーション」というものを早急に知らなければならなくなった人に適した本だと思いました。なぜかといえば、本書はWeb技術を修める上で前提として知っておくべき、教養レベルの内容を幅広く教えてくれる本だからです。


会議で、リーダや先輩が話している内容を聞いて「一体、何を言っているのかわからない……当然わかるよねと言わんばかりに話を進めないで……」と呆然としてしまわないように、Webアプリケーション開発に携わる上で必要な一般常識を教えてくれます。
ですので「まずは手に職をつけねば!」と猪突猛進にJavaRubyなどに突っ込む前に、まずは本書を読んで、今の時代に何が求められているのか(何が流行なのか)、自分に不足しているものとは何か、これからどういった道のりで技術を習得していくか前もって確認しておき、それらを効率的に駆け足で登っていけば今からでも現代の技術にキャッチアップできるものではないでしょうか。


各章の目次を見ると、「①Webアプリケーションとは何か」から始まり、「②Webはどのように発展したか」でWeb技術の道のりを示し、Web技術の進化が可能にしてきたものを見ることができます。そんなWeb技術の発展といっても、変化が激しい層と激しくない層があります。「③HTTPを知る」ではWeb技術の根本的な部分(変わりにくい技術)が紹介されます。「④CGIからWebアプリケーションへ」では単純な個人サイトではなく、大規模なWebアプリケーションを開発するために必要な技術が紹介されます。「⑤Webアプリケーションの構成要素」は④を更に細かく見ていくもので、大体ここのあたりから業務に直接的に関係してくるのではないでしょうか。WEBサーバとAPサーバを分けるといったような機能毎にサーバを分ける意味と具体例など、ところどころで会社で聞いた話と似たような話が書いてあり、先輩方の話している内容が段々と知識と結びついてくる内容でした。
「⑥Webアプリケーションを効率よく開発するための仕組み」ではフレームワークMVCモデルの詳細な内容に入り、開発現場で必須な技術について紹介されます。この章が最も紙面が割かれており、力が入っている部分です。難易度も他の章に比べて高く、開発のモダンなやり方について説明があります。また実際にコードを打ってみて動作を確認していく章でもあります。フレームワークって何?という方はこの章は理解しなければならないでしょう。
「⑦セキュリティを確保するための仕組み」では、Webアプリケーションのような開放系のアプリケーションは実際に動くだけでは駄目で、その安全性を考慮する必要があるとのことからセキュリティを紹介しています。大体ここらの内容は、ある程度なら作れるようになったら脇も固めないとね、と学ぶ話だと思います。
各章にはところどころ入るコラムが入るんですが、このコラムが結構好きです(もともと私は横道に逸れるのが好きなので)。本筋で述べる話の粒度とは異なった小難しい話や、逆にとても軽い話、便利な話などがはいって、おつまみのように楽しめるのが良いんですね。


本書の良いところを挙げれば、そのバランス感覚読者への配慮になるかと思います。
本書は約270Pしかありません。慢性的に時間が不足している技術者には限られた時間で必要な情報を効率的に摂取できる情報源が必要です。そんな人には必要な情報を、少ないページで、分かりやすく教えてくれる本が向いています。
ですが、そういった本はあまりなく網羅性(つまり重厚)か可読性(つまり軽薄)に傾きがちです。その点、本書は読み終わった後でも過去の内容は覚えられる程度には内容が詰め込みすぎてないし、かといって内容が現場と乖離しているような軽さなわけではないので、非常にバランスよくまとまって読んでて助かるな、と思いました。
また読者がつまずきやすい箇所をちゃんと把握してくれている点が嬉しかったです。技術本にありがちな、初心者本なのに初心者の無知っぷりがわかってないすれ違いはなく、幅広い読者を受け止める守備範囲の広さがあるように思えました。そういった配慮のおかげか、つまずいて投げ出すこともなかったです。


本書を新人研修用のテキストとして使用し、3日程あててくれてたら新入社員の実用度が高まるのではないかと思います。研修ではJavaなどを学ぶものですが、そういった技術を学んでも使う場面が想像できなければ知識が定着しません。本書の前半を研修最初に、後半を研修最後にやれば自分たちが学んだものがどういったものだったのか理解が進むのではないかと感じました。
読む時期が少し遅くはなりましたが、まだまだ読んで得るところが非常に多かったので、太鼓判を押して良書といいます。

Javaスパイダーツール(1)

Javaスパイダーツール サンプル&クックブック

Javaスパイダーツールサンプル&クックブック

Javaスパイダーツールサンプル&クックブック


EclipseでのJavaアプリ作成に慣れるため
Javaの復習
・Webスクレイピングに興味があった


の3点の理由から、Eclipse完全攻略は一旦休止して、こちらに取り掛かっています。

本書は書名の通り、Javaでスパイダーツールを作るよ!という本です。Jakarta Commonsコンポーネントの一部であるHttpClientやJakartaOROライブラリを用いて、Web上にある情報を、自分の好きなように加工・整理して取得する術を教える本です。


一般的なプログラミング初心者本だと、言語毎の基本知識を網羅することで精一杯で、それらを実践的に活用するところまでは教えられません。そのせいか各機能の現場での使用方法を想像するのが難しいです。つまりは教科書を読んでいるときのようにモチベーションが下がります。
以上の理由から、合間を縫って、本書のような実践本で知識を技術に変換しながら、モチベーションを維持するのは有りかな、と思います。何か便利なツールをつくりながら、言語知識を拡充するのは一石二鳥でお得感がありますよね。定期的に技術を広げるためにこういった本を読んでいきたいです。


注意として、サンプルプログラムで使用しているコンポーネント・ライブラリのバージョンが古いということがあります。Web上から最新版を落として使うと、記載のサンプルコードはそのまま使えません。ですので、不安な方は付属CDに入っているコンポーネント・ライブラリを使用した方がいいでしょう。
バージョンがあったものを使えばサンプルコードを書き写すだけでそのまま動く形で記載されています。何も悩む必要なく写してれば問題ありません。

Eclipseの練習(1)

Eclipse3.6 完全攻略

Eclipse 3.6 完全攻略

Eclipse 3.6 完全攻略

EclipseJavaを書く仕事に回されたので、Eclipseの勉強をしようと本書を購入しました。会社では3.4のEclipseを使用するのですが、基本的な内容は3.6でも変わらないだろうと勝手に期待して本書にしました。


以前に研修でJavaを一ヶ月学んだとき以来、一行もJavaのコードを書いてなかったので何もかもさっぱり忘れてますね。本に書いてあるコードを書き写してる度にそういえばこういうの書いたなぁ、と思い出しますが、研修修了時点の習熟度にさえ戻るのには結構かかりそうです。


本書についていうと、何も分かっていないユーザが躓かないための気配りが素晴らしいです。いわゆる初心者向けの技術書だと、初心者は何がわかっていないのかわかっていないようで、ところどころ立ち止まって「つまり何をすればいいんだ?」と頭を抱えるものですが、本書ではそれがありません。
実に丁寧にEclipse体験のエスコートをしてくれます。躓きがないおかげで本書は楽に最後まで読み進めることができるでしょう。


[進捗]
chapter1 Eclipseって何だろう
chapter2 まずは使ってみよう
chapter3 Eclipseの機能を理解する
まで読了

進化から見た病気

進化から見た病気 / 栃内新

進化から見た病気―「ダーウィン医学」のすすめ (ブルーバックス)

進化から見た病気―「ダーウィン医学」のすすめ (ブルーバックス)


■進化と病気
「進化」という言葉は「進歩」「バージョンアップ」などのプラスへ直線的に前進するような言葉と同義に近いというイメージがありましたが、実際はそんなことはなく「最適化」に近い言葉なんだなぁ、としみじみと感じました。


人間のみならず生物にとって病気は不都合なマイナス・ポイントです。健康で長寿な人生を送りたい、病気に罹らなくて済むなら罹りたくない。それが生物として当然の本能でしょう。そういった意味で健康を阻害する病気はマイナス以外のなにものでもありません。
しかし、私たちが罹る病気の原因は何かと考えると、ウィルスや細菌といった外部存在に全てを委ねることはできません。言ってしまえば、病気の原因は、過去に祖先が選択して得たものですから。人間側が病気の誘因要素をわざわざ選択して抱えているなんて馬鹿馬鹿しいと思うかも知れませんが、どうやら事実のようです。


■進化と環境変化
本書が扱っているダーウィン医学によると、人間の体を調べればいくつもの進化の跡を見つけられるようです。その進化の跡が病気に繋がります。


現代の先進国では飽食が当然で生活習慣病、糖尿病が至近な病と謳われていますが、その病の原因となる性質は果てしなく続いてきた飢餓の時代に自然淘汰のふるいに掛けられないために得た性質でした。
それは省エネルギー体質です。エネルギー源が豊富にない時代にとっては、消費カロリーが激しい生物は生存可能性、繁殖可能性が低く、逆にカロリー消費を抑えられるタイプの生物が優位にたちます。
時代が変わり、エネルギー源が過剰になってしまった現代ではその省エネルギー体質がエネルギーを溜め込む(脂肪を溜め込む)原因となって、人間に不都合な結果となりました。


生活習慣病、糖尿病の他にも、あらゆる病気には原因としてそれなりに合理性を基盤とした仕方ない部分があるようです。例えば人間に害する細菌やウィルスはよく騒がれますが、その細菌やウィルスでさえ、その共生関係のバランスを正すための時間がまだあまり経過していないために偏りが生じているだけ、ということも多いらしいです。寄生しなければ繁殖できない存在が宿主を殺そうとするのは理にかなっていないのですから(一部は宿主を食い殺したりもしますが)。


ダーウィン医学とは
環境は直線的に変化するわけではありません。気温の寒暖、食糧の多少のように波状のように変化します。一方で、進化は各時代、各環境に場当たり的に「最適化」してしまいます。当座のこととして、それが生物として有利だから進化(最適化)するのです。
そのような過去の進化が現在の私たちにどのような影響を及ぼし、病気として関係してくるか。そういったことを研究するのが、本書で紹介されているダーウィン医学です。


ダーウィンは知られているように『種の起源』を著した進化論の創始者である偉大な生物学者です。医学に進化論を取り入れたこの学問は、そのダーウィンの名を取り入れてダーウィン医学と呼ばれています。


医学は古代ローマの時代から、理論的・学術的志向よりも技術的志向が強い学問分野でした。技術的志向が強いというのは、理論と実態に隔絶がある場合に、実態を優先するという意味です。
そのせいか、「なぜ病気があるのか」という根本的ですが理論的性向が強い疑念は学問として本格的に研究されてはこなかったようです。「なぜあるのか」を問うよりも「どうすればいいのか」という、HowTo優先の性格からすれば、そんな疑問は無駄に近いと考えていたのでしょうか。
しかし、20世紀後半になって理論的性向が強い進化論(生物学)と医学との融合が果たされることになったのです。「なぜ」を問う進化論と、「どうすれば」を問う医学の融合によって、急場を凌ぐために実態に対処するもののその深奥の原因には対処できない医学の弱点を、進化論からの知見を利用して根本原因を探り医学の弱点を補うことを目的としています。


■バラエティに富んだテーマと軽快な文章
現実生活において、役に立つのはマニュアル的な医学の方ですが、趣味として本を読む私としては物語るように説明する進化論、ダーウィン医学の方が好みです。マニュアル本は無味乾燥で心が動くことがない、と自分が考えているからかもしれないです。そんな理由もあり、医学に興味はありませんが、もう少しダーウィン医学の類書を読んでみようと意気が高まりました。


そんな意気が高まったのも本書の書き方が柔らかく丁寧だったおかげです。ブルーバックス新書は硬いイメージがあったので抵抗があったものの、読んでみると本書は別に硬くはないですね。話が無駄に細部に入ることはなく、読者が興味を持ちそうな箇所を上手にピックアップして解説する著者の手腕が素晴らしいです。


ダーウィン医学の概要
・人間と病気の関係の歴史
感染症と進化競争
・環境変化と文明病
・遺伝病
トレードオフ進化
・先端医療とヒトの進化
・老化と進化


上記が本書の大体の内容となりますが、私が特に興味をもったのは人間と病気の関係の歴史の箇所です。歴史好きなところが関係しているのかもしれませんね。
薄い紙面の中に以上の内容が詰め込まれているわけですが、何となくダーウィン医学とはどのようなものなのか大雑把に把握できた気がします。


本書の紹介は以上で終わりですが、本書は医学というよりは進化論に興味がある人ならば楽しく読めると思います。私は非常に満足でした。是非多くの人に読んでほしい良書です。