fc2ブログ

奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

「一生」Webの技術者を「楽に」続ける為の方法

今回は、まず書籍のご紹介をして、その後に筆者の意見を書きたいと思います。
まずは、以下の書籍のご紹介です。

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
(2010/04/10)
小森 裕介

商品詳細を見る

「基本的には」良い書籍だと思いますので、お薦めします。
「一生」Webの技術者を、「楽に」続ける為のヒントを与えてくれると思います。
しかし、かなり厳しい見方で恐縮ですが、幾つか「注意点」があるとは思いました。
まず、掲載されているソースコードには「セキュリティ上の脆弱性」があります。
htmlspecialcharsに第2引数を指定しないと、以下のリンク先の様な問題が発生しますが、
上記書籍では第1引数しか指定されていませんでした。

HTMLエスケープ方法を見直そう htmlspecialcharsとhtmlentities

また、セキュリティの部分は、「攻撃方法は良いが、対策方法が不適切」と感じました。
理由は、本文内に、
Strutsをはじめとするたいていのプレゼンテーションフレームワークでは、このような入力チェックを自動的に行う「バリデーション(Validation)」機能が提供されているので、これらを利用することで簡単にSQLインジェクションを防ぐことができます。
や、
iBATISのようなO/Rマッピングフレームワークは、たいていの場合、内部でプリペアード・ステートメントを利用していますので、O/Rマッピングフレームワークを利用するのもSQLインジェクションの防止につながります。
と書かれてありますが。
ValidationやO/Rマッピングフレームワークが導入された「背景」には、
「SQLインジェクションを防ぐ為」といったものは含まれていないかと思うのですが。
Validationは、「アプリ固有ではなく、汎用的な部分のチェックを行う為」に導入されたし、
O/Rマッピングフレームワークは、「オブジェクト指向とRDBMSの相性の悪さを緩和する為」に導入されたと、
筆者は思っているのですが。
あと、「たいていの」と書いてあるのが気になります。
プレゼンテーションフレームワークやO/Rマッピングフレームワークは、
SQLインジェクション対策が「含まれていない」場合もあるので、そう書いたかと思うのですが。
しかし、ここは単純に、
「SQLインジェクション対策としては、入力時のValidationは不要。
SQLに外部パラメータを埋め込む時点で適切にエスケープすれば良い」
と「だけ」、書いておけば良かったのではないかと思います。
あと、SQLインジェクション対策として、入力時のチェックが何故不要なのかは、
以下のリンク先の様な事をしてしまう方がいらっしゃると思うからです。

http://d.hatena.ne.jp/gallu/20080702/p2

以上が、上記書籍の中で「注意すべき点」だと感じた部分でした。
以下からは、良い点です。
最も良かった点を引用させて頂きますが。
技術はすべて私たち人間が生み出したものですから、それが必要になった背景があります。ある背景から問題意識が生まれ、それを解決するために新たな技術が生み出される。さらにその技術を利用する上で別の問題が生じ、それを解決するために新たな技術が生まれる・・・。その繰り返しの上に成り立っているのが、いま私たちが利用している技術だといえます。つまり、その技術が生まれた背景を理解することで、その技術をどのように利用すればよいかがわかります。そして、今までの背景を押さえておけば、また新しい技術が登場したときに、より早く理解できるのではないでしょうか。
WebアプリケーションフレームワークもテンプレートエンジンもO/Rマッピングフレームワークも、
それが生まれた「背景」があります。
詳細は書籍に書いてありますが、
その背景を知らずして、それら技術を上手に使いこなせるとは思えません。
例えば、テンプレートエンジンが生まれた背景には、
「デザイナーとプログラマーの役割分担を明確にする」
といったものが有ったのではありませんか?
そういった背景から考えると、
「JSPやHTMLに書くロジックは必要最小限にする」
となるのではないでしょうか?
しかし、現実は・・・省略します(苦笑)

また、言語を問わず、Webの技術は進化が早いです。
そして、よく「最新技術についていくのが大変だ」という声を聞きますが、
筆者はあまりそうは感じません。
例えば、以下の様なカスタムタグがありますが、
ブラウザの「ソースを表示」機能で確認すれば分かる通り、
HTMLとして展開されれば、
HTTPリクエストについては、覚える事は何も無いと思うのですが。

1.Strutsの<html:>や<bean:>など
2.JSTLの<c:set>や<c:remove>など
3.Smartyの{html_options}や{html_radios}など
4.ASP.NETの<asp:Button>や<asp:TextBox>など

HTTPリクエストで送られる内容は、
「カスタムタグの内容が展開された後の、"純粋な"HTMLの内容」
なのですから。
以前にも書きましたが、
「Webの"基礎技術"」を習得する事が、
「一生」Webの技術者を「楽に」続ける為の最適解だと思います。
Webに限らず、「基礎技術」を習得するのは勿論大変ですが、
でも、その努力に見合ったリターンは「想像以上に大きい」と思います。
筆者も、実力はまだまだですが、
Webとプログラミングに関しては、
「基礎技術」も「若干」は身に付いてきたという実感があります。
そして、実際に「楽」になってきました。

業界歴1~2年の新人さんはともかく、
それ以上の経歴の方なら、是非とも「基礎技術」を学習した方が良いと思います。
上記書籍を読む以外の基礎技術の学習方法としては、
「フレームワークやライブラリを"一切"使わずに、プログラムを書いてみる」
事だと思います。
筆者は、ココに掲載している自作のMVCフレームワーク以外だと、
「ライブラリを使わないSMTP(メール送信)プログラム」もPHPで書いています。
これも、「SMTPプロトコル」に基づいて動くものなので、
言語やライブラリの差異は、動きとは関係有りません。
もしかしたら、今後掲載するかもしれません。

これからだって、新しい技術はどんどん出てくるのでしょうから、
「応用が利く基礎技術」を、頑張って学習してみましょう。

スポンサーサイト



テーマ:日記 - ジャンル:日記

  1. 2011/03/27(日) 21:37:03|
  2. インターネット
  3. | トラックバック:0
  4. | コメント:0

Facebookの実名制度って成り立つの?

まず、筆者は現在Facebookを利用していないので、中身をよく知りません。
なので、「なんか外野が変な事言ってる」程度に駄文をご覧頂ければと思います。
実際、確証出来ない箇所も多いので。

では本題ですが、先に結論。
実名制度が成り立つか否かについては、筆者は「成り立たない」と考えています。
では、なぜ成り立たないかを順番に考察していきます。
まずは、以下のリンクについて。

実名の妥当性をどうやって判断しているのか

Facebookでアカウント停止--その理由は「不適切な利用が見つかったから」

要約すると、「実名で無ければアカウントが削除される」と思いましたが、
では、「実名の妥当性をどのようにして判断しているのか」という疑問が湧きます。
あと、Facebookが言っている「実名」というのは、
「本人じゃなきゃダメ」という事と感じました。
ネット上で本人である事を保証する、
どうなのでしょう、本当に出来るのでしょうか?

リアルでの本人確認

まず、日常の至る所で、本人確認が行われていると思います。
そして、その際には大抵、「免許証」や「保険証」などの、
「本人確認書類」を提示していると思います。
それで、「あ~ご本人様ですね」と確認をしていると思うのですが。
また、その際には「氏名」だけではなく最低でも、
「性別」、「生年月日」、「住所」までを以って、
本人確認をしていると思います。
同姓同名の可能性を排除する為だと、筆者は考えていますが。

では次に、以下のリンクをご覧下さい。

なりすましにどうやって対処するか

Facebook、原則本名登録であることの信憑性、その是非

まずはコチラ。

>Facebookでは、すべてのユーザーに実名で登録していただくようお願いしています。
>偽名で登録したり、他の人物や団体になりすましたり、身分や関係を偽ることは禁止されています。

上記記事のコメント欄にも有りましたが、
仮に本名が「山田太郎」という方が、「山田一郎」という名前で登録した場合、
山田「一郎」でも本名に見えるのですが。
というより、上記のリアルでの本人確認にも書いた通り、
氏名だけでは本人確認など出来ません。

次に

>FB運営の徹底については、その判断基準が曖昧であることに問題があり、
>その割に身分証の提示が必要不可欠ではない、という曖昧さに問いを投げたいのです。
>(身分証明書の提出に関しては、yamada_nt氏は提出しなかった、とお話頂いております。)

これは・・・どうなのでしょう?
もちろん、これだけでFacebookが、「新規登録の際には本人確認はしない」と断定は出来ませんが。
というより。
「本気で」本人確認をするならば、Facebookの運営局なり事務局なりに、
「FacebookのID(って有るのでしょうか?)と自分の身分証明書のコピーをセットにして郵送する」
という方式を筆者なら取ると思います。
IDに登録されている情報と、身分証明書の情報に相違が無いかを運営局が確認する為に。
でも、そこまでしてFacebookをやりたい方って果たしていらっしゃるものなんでしょうか?
ちなみにこれは、日本だけでなく海外でも同じだと思います。

ルールを設けた背景が重要

で、これらから「実名制度は成り立たない」と筆者は判断しています。
実名をごまかされないように本人確認するという手間を、ユーザーが受け入れるとは到底思えないので。
というか、「実名でも匿名(ニックネーム含む)でもどっちでも良いのでは?」というのが本音です。
ルール(法律)なんていうものは、破られて当たり前のモノです。
現実の至る所で破られているじゃないですか。
だから、ルールに対してはむしろ、
「どうしてそのルールを設けたのか」
という「理由や背景」を「ユーザー自身が」考える必要が有ると思っています。
今回の場合だと、上記リンク先のコメント欄にそれらしき事が書かれていましたね。
何処かは書きませんが。

実名にすることのメリット

ここからは、思いっきり話が飛んで、
「実名にすることで何かメリット有るの?」
について。
ここも結論を先に書くと、「メリット有る?」と判断しています。
こっちは、上記よりは自信は有りませんが。

匿名であっても信頼性は確保可能

よく、実名にすることのメリットとして、
「信頼性が上がる」
と聞きます。
でも、別に「匿名であっても信頼性は確保出来る」と思うのですが。
そりゃあ、Facebookに限らずネットで知り合って交流が始まって、
何か協業でビジネスしましょうって時の契約書の氏名が、
「本名ではなく匿名である」のは、色々と如何なものかとは思いますが。
万が一トラぶった時において。
でも、それは「リアル」の話。
「ネット」はまた「別」ではないのでしょうか。
「当人同士」が識別出来れば問題ないのではないでしょうか。
ニックネームを使われた?、実名だって使われる可能性は同じだと思いますが。
あと、「良く知っている間柄」なら、
当人の「文章の癖」だって知っていると思うのですが、
盗んだ人間が「長期間」その真似をし続ける事が出来るのでしょうか?
仮に出来たとしても、ネット以外の通信手段(メールや電話など)で、
当人に「これ、貴方が書いたの?」などと確認すれば済む話ではないでしょうか。

ネットが何かをしてくれるわけではない

そもそも、以下のリンク先(超お薦めです)にも書いてありますが、
ネットは単に、「繋がるきっかけ」を与える「ツール」だと思っています。

教えてくれたのは、ネットではありません。心ある誰かです

で、ネットは近くに居ない人と「繋がることが出来る」という点において、
「非常に」素晴らしいモノだとは思います。
でも、別に繋がったからといって、魔法が起きるわけでもなければ、
お金がどんどん落ちてくるわけでは有りません。
結局、繋がった「後は」、リアルでの人付き合いとさして変わらないと思います。
時間差が有るのが、リアルと決定的に違う部分だとは思いますが。

で、こんな感じのネットで、実名でなければいけない理由が筆者にはどうしても分かりません。
例えば、ネットで知り合って「すぐに」電話番号を交換して、
その後は「ネットでは匿名」で「リアルでは実名」という付き合い方もあるかと思うのですが。

話したい気持ちが大切

ついでに、話がどんどん飛んでますが、これで最後です。
よく「Twitterでビジネス」とか聞きますが、
別にTwitterが何かをするわけではなく、
ビジネスをする当人同士の「コミュニケーションマインド(話したいという気持ち)」によって、
ビジネスが形成されていくと思います。

以上、長文にお付き合い頂きありがとうございました。

テーマ:日記 - ジャンル:日記

  1. 2011/02/10(木) 20:57:54|
  2. インターネット
  3. | トラックバック:0
  4. | コメント:0