ITmedia Virtual EXPO 2012を視聴してみた。

先月になりますがITmedia Virtual EXPO 2012を視聴したのでそのときのメモを公開します。
メモの内容には聞き間違い等あるかもしれませんがご容赦ください。

今回視聴したのは下記の3つです。
・セキュリティ専門家が斬る!Anonymousの影響と人の脆弱性
・変貌するWebの世界― クラウドとクラウド・デバイスのインパクト
・LINEを生み出したNHN Japanの開発風土とは

——————————————————
セキュリティ専門家が斬る!Anonymousの影響と人の脆弱性
——————————————————

攻撃はきまぐれ
他人に攻撃をけしかけている雰囲気がある

調査してから攻撃する
攻撃できるという確信を持ってから行う(事前に仕込んでいる)

sip(シップ)のスキャン急にが多くなる

じわじわ攻撃を受けているサイトもある

政府機関のサイト、有名企業のサイト:
年中何らかの攻撃を受けている、報道もされない
=攻撃慣れしているしびくともしない
=攻撃慣れしている人たちから見るとそんなにたいした攻撃ではなかったりする場合もある

ちゃんと構築していれば防げるレベル

過去に見つかった脆弱性などが狙われる(2,3年前のもの)

ちゃんと対策をしていれば8割は防げる

さくっと侵入できるケースは少ない

メディアの注目を高めるために攻撃をやっている
ITに関係のない人まで知っている

チュニジアでの攻撃に日本人が参加していた

DDos攻撃に同時参加する人数
多くても2桁ぐらい
botが使われることが多い

javascriptをわざと踏ませて関係ない人間を攻撃に荷担させる場合もある

いまさら聞けないアノニマス
http://www.atmarkit.co.jp/fsecurity/special/172anon/01.html

セキュリティは楽しいかね?
http://d.hatena.ne.jp/ukky3/

複数のサービスをまたがった攻撃もある:
サポートセンターへの電話で情報を取得
メールのやりとりなど

サポートセンターの攻撃対応も必要
Facebookの情報で分かるような内容で本人確認してはいけない

オレオレ詐欺:
ソーシャルエンジニアリングの一つ

セキュリティ:疑うところから始まる

仕組みとしてセキュリティを高めていく
(ワンタイムパスワードなどを当たり前にしていく)

使う側でも分かるアプローチが必要

————————————————————-
変貌するWebの世界― クラウドとクラウド・デバイスのインパクト
————————————————————-

2012年:21世紀の二つ目の10年の始まり

最初の十年:911に始まり311(東日本大震災)で終わった。
携帯電話の爆発的普及
クラウドの登場と発展(googleの登場、amazon ec2の登場、microsoft azureの登場)
2007年iphoneの登場
2008年androidの登場

iphone,android等のクラウド端末の台数がpcを上回る勢い

トランジスタの数も15倍に

日本のスマホ普及率:先進国で最低クラス
・ガラケーの成功も原因

現在では1つのチップに中国の人口ぐらいのトランジスタが集積されている
(1970年には2000個ぐらい)
今後一つの電子、原子を制御するレベルまで小さくなってくる

Tegra3:5つのコアをもつ(公称は4つ)
製品への採用が進んでいる
スマホのスペックがpcを上回っていく

これからの5年間:
トランジスタの数は200倍になる

日常生活のあらゆる所にCPUが存在
すべてがネットワークにつながる力を持っている

Gang of Four:
Google
Apple
Facebook
Amazon

2011年に起きたこと:
6月icloud
9月facebookが8億人突破
11月amazon kindle fire登場

それまで自前のクラウドとクラウドデバイスを持っているのはgoogleしかなかった。
microsoft:windowsphoneの発表
facebook:クラウドデータセンターを稼働、携帯にも参入

去年一年でクラウドとクラウドデバイスを持つプレーヤーが形成された(非常に大きな変化)

日本:通信障害が発生するようになった。
ブロードバンドの帯域もスマホによって瞬く間に消費される。

スマホ:電池の持ちを良くするために制御信号を多発する

PC:データ量大、制御信号小
スマホ:データ量小、制御信号大

スマホ:ずっとネットに接続しているアプリが多数ある
実際には細かな接続/切断を繰り返している=多量の制御信号を送る

androidはiphoneよりも制御信号をたくさん送る
android4.0では改善されている

これからおきること:
新しいネットワークメディアの躍進
ネットワークマーケットの台頭

HTML5が鍵になる

2020年:世界人口の大部分がスマホを持つ(ネットワークにつながる)

すべての経済行動がネットワーク上で行われるようになる

AJAX:ブラウザとサーバがユーザのアクションに従って動的に動く
→これがリアルタイムに動くようになる

HTTP:文書の転送のためにデザインされた。
HTML5websocketはこれを改善する
(データ量減少、現在の通信方式とも共生できる)

ネットワークメディアに期待されるもの:
コミュニケーション、情報共有、豊かな自由時間

情報は誰のものかという問題を多くの人が意識し始める

コンテンツサービス、クラウドの利用:
日本は少し遅れている

音楽市場:
iTunesが圧倒的シェア

spotify:音楽をリアルタイムで共有できる

アメリカでは新旧メディアの対立がある:SOPA
著作権の強化、ISPによる特定サイトの遮断などまでが争点となっている

プライバシー問題:
日本ではプライバシーを守る意識が高い

電話初期、普及を妨げた最大の問題は交換手が会話の内容を聞けることだった
やがて危惧よりも利便性の方がそれを上回った

Appleの位置情報取得問題その後:
取得自体はやめていない
プライバシーポリシーに明記されるようになっただけ

Gang of Fourのプライバシーポリシーの特徴:
常に変わる
ビジネスと結びついている
事前了承が得られていればよしとする合意が形成されてきている

プライバシー観も変化していく

—————————————–
LINEを生み出したNHN Japanの開発風土とは
—————————————–

開発プロセスの違い:
ライブドア:企画→開発→デザイン
ネイバー:企画とデザインが同時に動き出す→開発
プロトタイピングが激しい

エンジニアリングだけで戦える時代でもない
エンジニアリングはあって当然、その上で武器を持たなくてはならない
(デザインなど)

ネイバーは400人(4割ぐらい)がエンジニア

Javaをよく使う
スマホに注力している

オープンソースのプロダクトをよく使っている

LINE:
メッセージ数がとても多い
Hbaseにデータを保存
アーラン(エリクソン)を使っている

これを使わなければ行けない、という決まりはない

新しいテクノロジーにも手を出している

社内の交流も多い
技術系スタッフの統合もハードルはなかった

スマホアプリのスタッフの統合が一番早かった

LINEが最初のネットの入り口になってくる
SDKを提供
サードパーティーも巻き込んでいく

SDK:
HTML5とJavascriptで提供される

LINEが生まれた背景:
スマホに注力したかった
スマホで流行るもの=コミュニケーション、ゲーム、写真
ゲーム、写真はすでにサービスを提供していた
企画が変容していってLINEになった

企画はだいぶ削られた(欲張った機能など)

企画者が尊重される
LINEは15人ぐらいで始まった

大規模なシステムの経験者を求めている
(インフラ経験者など)

次のアーキテクチャなどを先回りできるエンジニアが理想

ユーザー数で倍を目指している
未知の領域に入ってきている

現場に関しては開発陣の影響力が大きい

コードが書けることとマネージメントができることは別の才能だと考えている
得意なことをやってもらっている

Symfony2.0を試してみた。

最近PHPのフレームワークであるSymfonyのバージョン2.0を試してみました。
断片的ではありますがその時感じたことなどのメモになります。

・DBの設定は画面上から行える(初期画面のconfigureリンクから)

・DB接続のパラメータを設定するファイル
app/config/parameters.ini

■1.4との違い
1.4でのview⇒2.0ではphpではなくtwigになっている
1.4のModel⇒2.0ではEntity
1.4のForm⇒2.0ではForm/Type
1.4のバリデーション⇒2.0ではFormではなくvalidation.ymlに定義してグループ分けをする

■定義を書かなければいけないファイル/ディレクトリなどは1.4と少し違うが、
 基本的な考え方などは同じ

■チュートリアルのページ
http://docs.symfony.gr.jp/symfony2/osc2011-nagoya-symfony2-tutorial/symfony2-php-framework-development-tutorial.html
http://docs.symfony.gr.jp/sf2-blog-tutorial/

上記の2つのチュートリアルをやれば、1.4系を触ったことのある方は
何となく感覚はつかめると思います。

PHPカンファレンス2011へ行ってきました(2)

PHPカンファレンス2011に参加してきたので、その時のメモを公開したいと思います。
PHPカンファレンス2011へ行ってきました(1)の続きになります。
メモの内容には聞き間違い等あるかもしれませんがご容赦ください。

———————–
スタートsphinx
———————–

Sphinx:ドキュメントツール

ツリー構造の記述を行う
PDFを出力することができる

インストール
Windows:スタンドアロンで使える
Unix:easy_install(Phython)を使ってインストール

sphinx_quickstartコマンドで
最初のプロジェクトを作成、設定を行う

活用事例
・ドキュメントページの作成
・symfonyのマニュアルにも使われている

———————–
Cena-DTA:HTML5のローカルDBを使ったアプリ開発
———————–
Web SQL Database
→ブラウザの中でRDBを使えるようになった

Cena-DTA:
1回の登録で登録+変更が行える

mySQLのDBを作成し、そこに接続する

HTMLのソースから直接データをダウンロード/アップロードできる

サーバ側:PHP+mySQLで作られている
クライアント側:jQueryのプラグインを使う

サーバでデータを受け取って登録する部分がPHPで作られている

———————–
Large-Scale Data Processing
with Hadoop and PHP
———————–
Facebook:12TB/1日のデータが追加されている(2010年)
google:一か月あたり400PBのデータを扱っている

180GBのデータを読み取るのに45分かかる
メモリの量にも限度がある

解決法:パラレルI/O

I/Oボトルネックの問題:
データのあるところにコンピューティングリソースを持っていく

例:apacheログに対する処理
マッパー:ログを書き出すイメージ
 ↓
リデューサー:各IPごとに書き出す集約を行う

hadoop:
SQLのクエリを書く必要がない
Facebookでのデータの増加にも対応できている
Yahoo、Twitterでも使われている

インプットフォーマットを使うことによって
どのデータをどのように分けるかということを指定できる

障害に強い仕組みになっている

Hadoopは主にJavaで開発されているが、
PHPなどでもリデューサーは書ける

HadooPHP:HadoopでPHPを使うためのフレームワーク

———————–
Microsoft ? PHP ~ 3rd Stage ~
WebMatrix + Windows Azure!
———————–
マイクロソフトとPHPの歴史:
Windowsプラットフォームインストーラー

Windowsウェブマトリクス

Windows Azure+PHP

Windowsウェブマトリクス:OSSを使う/一から作る
→サイト作成に必要な機能を搭載

PHPのメジャーなアプリは殆ど収録されている

ASP.NETのテンプレートも使える

既存のサイトをウェブマトリクスに移行することもできる

エディタ機能もある
SSLの有無なども設定できる
ソースに問題があるかどうかチェックできる

DBの編集もできる
無償でダウンロードできる

あわせて使えるもの:
IEのF12キーを押す⇒開発ツールが使える
Expression Web Super View

Azure:空色の、という意味
WindowsサーバーベースのクラウドOS

ウェブマトリクスで作成したものを
Windows Azure上で動かすことができる

Azureのテンプレート作成
 ↓
ソースコードをコピー
 ↓
テスト環境を作成
(バーチャル環境のようなものができる)
 ↓
Azureへのパッケージ生成

リモートデスクトップでログインして
更新作業を行うこともできる

Azureのメリット:
・Paasなので管理いらず
・データセンターは数十万台規模

事例
トヨタ、ゲームサイトなど

EC-CUBE DAYでも話をする予定

———————–
徳丸本に学ぶ
安全なPHPアプリ開発の鉄則2011
———————–

■安全なPHP入門書で学ぶ:
XSSとSQLインジェクションぐらいは正しく覚える
セキュリティの甘いサンプルが載っている本もある

■入力、出力処理をしっかりやる
バリデーション
制御文字のチェック
「安全なSQLの呼び出し方」=IPAが公開している
準備文を使う

htmlspecialcharsを正しく使う

ファイルアップロードには罠がたくさんある:
アップロードされたファイルがPHPとして実行される
ファイル名が衝突してしまう

■文字コードのセキュリティを気にする
5c問題

■クリックジャッキング対策をする
クリックジャッキング:
透明なiframeを正しい画面の上に表示させて、
違う操作をさせること

X-FRAME-OPTIONSヘッダを指定する
(古いブラウザは対応していない)

CSRF対策をする

パスワードの保存はハッシュ化を繰り返す

7文字ぐらいのパスワードではすぐに破る
ツールがある

ハッシュ値にSalt値をつけるのがベター

ストレッチング:
ハッシュ化する計算を何度も繰り返す

■PHPのバージョンアップにとことん付き合う

———————–
ライトニングトーク
———————–

Making DSL with []
Paml→テンプレートエンジン
PHP:配列とハッシュの区別がない

PHP技術者認定試験:
ウィザード試験が始まる

sismo:
ciTool
テストツール
githubに対応
symfonyと同じ会社が作っている

Symfony2HttpCache
リバースプロキシを使う
→Cacheカーネルを使う
 4倍ぐらい速くなる

クラウドを比べてみた:
HDDのスピード=かなり違う
GMO:1インスタンスに物理HDDを1つアサインしている

Symfony:behatというテストツールがある

PHP祭
10月15日、16日に大阪で開催

PHPBugs
バグ候補を指摘してくれる
(これから作成)

プロジェクトの規模が大きくなると
おかしいといわれているところが
本当におかしくなる

Ethna2.6
PHP5.3に対応

PHPカンファレンス2011へ行ってきました(1)

昨日PHPカンファレンス2011に参加してきたので、その時のメモを公開したいと思います。
当日は大勢の人が熱心に耳を傾けていました。
会場が満席で聞けない話があったのが少し残念と言えば残念でした。
メモの内容には聞き間違い等あるかもしれませんがご容赦ください。

——————
基調講演
——————-

PHPがブレイクしたのはver4.0(2000年)
PHPカンファレンスも2000年から
2004年ver5.0→オブジェクト指向
2009年ver5.3
ver5.4→5.3に比べると地味なアップデートになる

PHP
リリースサイクル1年
ライフサイクル3年(バグ修正2年、セキュリティ修正1年)

PHP5.4
9月半ばにβ版
今年中にはリリース
セーフモード、レジスタグローバル、マジッククォートはなくなる
SQLiteはver3のみとなる
5.3に比べて19%〜43%高速化
trait:コードを再利用する仕組み
  多重継承よりもシンプル
オープンタグの短縮形が追加
配列の簡略定義が可能
配列デリファレンシング、
2進数表現が可能に
不正なUTF-8に対するチェックの強化
Unicode6.0のケータイ絵文字を収録

セキュリティに対して:
基本を守る
最新の情報をチェックする

Coverity→ソースをチェックするツール?
Coverityでスキャンした結果、PHPの品質は高かった
もっと高かったもの=Ruby

PHPの成功理由
・小規模〜大規模なサイト(Facebook,Yahoo!)までサポート
・言語がシンプルでドキュメントが充実
・必要十分な現実的な解を提供している
(キラーアプリの存在、モバイル対応、新標準への対応)

————————————————–
PHPライブラリの歩き方・作り方
————————————————–

技術の動向によって、ライブラリに求められる機能は増えていく

主なライブラリ
PEAR:570ぐらい
PECL:270ぐらい

Rubyなどでは1万を超えている

欲しいものがなければ作るしかない

ライブラリのパッケージ名:
ネームスペースを使うと良い
まだ使われていないものを使う

クラス読み込みの定義:PSR-0に従う

PSR-0に従うと
require_once,class_existsを使う必要がなくなる

例外処理:SPLを使う

マジックメソッドは学習を困難にさせる

ライブラリ:パッケージにまとめて配布する

Pyrus:
任意のディレクトリにPEARパッケージをインストールできる
パッケージの作成もできる

紹介していた本:
オープンソースの育て方

PHPカンファレンス2011へ行ってきました(2)へ続きます。

Windows7のwindows anytime upgradeはとても簡単でした

自宅のWindows7マシンでリモートデスクトップが使いたかったため、
Home premiumからProfessionalへアップグレードしてみました。
Home premiumのままだと、リモートデスクトップのホストになることができません。

お店で購入したパッケージには、インストール用メディアすら付いていませんでした。
パッケージの中に入っている説明書とプロダクトキーを利用して、
Windows updateと手順も時間もほぼ同程度で作業が終了。
簡単にOSをWindows7 Professionalにすることができました。

Windows Vistaの時はメディアを使ってOSの再インストールをする時と同じ位手間が
かかっていた記憶があるのですが、恐ろしいほど簡単になっています。

古いインストールメディアでのWindows XPのインストール

以前自宅のPC(CPUはPentium E9600の自作マシンです)にWindows XPをインストールし直そうとしたときに、インストール途中でエラーが発生して先に進めないことがありました。その際に思い出したのは、Windows XPが発売された当初はデュアルコアのCPUがまだ存在していなかったことです。

今でこそコアが複数存在するCPUが当たり前になってきていますが、私の持っているWindows XPのインストールCDは、サービスパックがでる以前の古いもので、まだCore2Duoも存在していなかった時のものです。試しにBIOSの設定を変更してシングルコアで動作するようにしたところ無事インストールすることができました。その後Windows Updateなどでアップデートを行い、BIOSの設定を戻すと普通に動作するようになります。

MacでPleiades All in One Eclipseを利用する

Pleiades All in Oneという、Eclipseが日本語化されていて、必要なプラグインも一通りセットになっているという大変便利なものがあります。インストールもダウンロードしたものを配置するだけ、という簡単なもので、仕事でもよく利用しているのですが、それはWindowsだけの話でMacでは使えないと思っていました。

しかしMacでもそこまで簡単には行かないものの、ほぼ同じくらいの手間でインストールすることができます。
手順はWindowsの場合と少し異なるのですが、まず本家EclipseのサイトでEclipseをダウンロードしてからインストールします。その後、Pleiades All in Oneのサイトの「Pleiades 本体ダウンロード」と書かれているリンクから辿って行き、追加のプラグインをダウンロード、インストールするだけです。設定ファイルを書き換えなければ行けない部分があるのですが、手順はダウンロードしたファイルに含まれているreadme.txtに書かれています。

実際にインストールしてみたのですが思っていたよりも難しくありませんでした。

print_r()の第二引数

PHPの関数にprint_r()関数というものがあります。

引数に指定した内容を出力してくれる関数で、ファイル出力やデバッグの際に利用する機会の多い関数ですが、このprint_r関数の第二引数にtrueを指定すると、戻り値として第一引数に指定したものを戻すことができます。

デバッグログで配列の構造を確認したい場合などにとても便利に利用することができます。

Mac版XAMPPとMediaWikiの組み合わせで動かしてみようとしている人は注意

最近MediaWikiをインストールして動かしてみようと思ったのですが、
XAMPPのドキュメントルートにMediaWikiのソースを配置してブラウザ上のインストーラ画面から設定している最中に、「PHP5.3.1では動かせない」旨のエラーメッセージが出力されて、それ以上先に進めなくなりました。

PHP5.3.1にはバグが存在していて、MediaWikiではわざと動作させない仕組みになっているみたいです。
ネットで少し検索してみたところ、MediaWikiの英語版のサイトに

Please note that MediaWiki does not work with the current version XAMPP 1.7.3, as it uses PHP 5.3.1, which has a bug, making it incompatible with MediaWiki. Either use XAMPP 1.7.2, or use the XAMPP 1.7.4 beta.

との注意書きが赤字で書いてありました。

XAMPPは簡単にPHP+MySQLの環境が作れるので、使っている方も多いと思います。
Windows版のXAMPPはすでにバージョン1.7.4が公開されているので問題はなさそうですが、Mac版のXAMPPは2011/2/24現在の最新バージョンがまだ1.7.3で、普通にXAMPPのサイトからダウンロードしてインストールするとこのバージョンになってしまいます。

sourceforge.netから1.7.4 betaをダウンロードしてインストールし直すとすんなり動くようになりました。