タグ

ブックマーク / thinkit.co.jp (22)

  • AI最前線の現場から【スクウェア・エニックス】ゲーム・キャラクターはどのように意志決定するのか

    はじめに 第1回では「キャラクターAI」(キャラクターの頭脳)の全体像を解説し、その中には5つのモジュール(部品)である「認識」「意思決定」「運動生成」「身体」「記憶」があることを見てきました。今回はその続きとして、これらのモジュールを活用して「キャラクターがどのように意思決定しているのか」について見て行きます。 「認識」モジュールのつくり方 世界から知能に情報を取り入れる部分である「センサー」(感覚)は、視覚を「レイキャスト」や「視野領域」によって作ります。レイキャストでは、キャラクターから対象に向かってレイ(直線)を引き、対象との間に障害物があってレイと障害物が交差すると「見えない」と判断します。例えば、キャラクターの頭部からモンスターの中心に直線を引いて岩にぶつかるのであれば、キャラクターからモンスターは「見えない」と判断するのです。もしぶつかるものがなければ、キャラクターからモンス

    AI最前線の現場から【スクウェア・エニックス】ゲーム・キャラクターはどのように意志決定するのか
  • 脆弱性検知ツール「Vuls」の開発者に聞いたOSSをバズらせる極意

    バルスというツールをご存知だろうか? 日ではとあるアニメの崩壊の呪文として扱われることの多いこのフレーズがいま、サーバー管理者のシステム崩壊を防ぐためのツールとして注目されている。OSSの脆弱性検知ツールであるVuls(バルス)について、開発元であるフューチャーアーキテクトの神戸 康多氏と林 優二郎氏に詳しく話を聞いた。 まずはVulsについて簡単に教えてください 神戸氏:VulsはVULnerability Scannerの略で、Linux/FreeBSD向けの脆弱性スキャンツールです。OSのみならずプログラミング言語やライブラリに至るまで多くの環境に対応し、レポートや通知を行います。ソフトウェアには数多くのバグが含まれ日々脆弱性に関するレポートが報告されています。サーバー管理者は脆弱性に関する情報を随時チェックし、その脆弱性が自身が管理するサーバーにどれくらい含まれているのか影響範囲

    脆弱性検知ツール「Vuls」の開発者に聞いたOSSをバズらせる極意
  • 「Touch ♪ Downtown 六角橋」でNFC技術が古き良き商店街と融合!

  • [ThinkIT] 第1回:意外と知らないZend Engine (1/3)

    「Webシステムを支えている言語は何か」と聞かれたときに何と答えますか。 ThinkITを読んでいる方なら即座に「PHP」と答えていただけるでしょう。「Java」と答える方もいるかもしれません。しかし、インターネットの普及と共にPHPは多くのWebサイトで使用されるようになり、今ではWeb 2.0と呼ばれるような新しいスタイルのWebサイトのほとんどがPHPで構築されています。 ここまで普及しているPHPですが、実際にPHPを使用してWebシステムを開発されている方でもその根幹となっているZend Engineについて、ご存知ない方も多いでしょう。Zend Engineとは、簡単にいえばPHPの高速性を支えている重要なモジュールですが、それ以外の機能も備えています。 そこで連載では、全2回に渡って意外と知られていないZend Engineにフォーカスを当て、Zend Engineの存在と

  • 「Nagios」「Hobbit」「ZABBIX」「Hinemos」を徹底比較 | Think IT(シンクイット)

    コストメリットを確保するオープンソース/フリーソフトウェア 近年、IAサーバの価格が非常に安価になり、LinuxWindowsを用いたシステムが普及しています。IAサーバを採用したシステムでは、ス ケールアウトを行うように設計することでハードウェアのコストメリットが生まれます。しかし管理するサーバ台数が増加してしまうため、管理コストはそれに 反して増加する傾向があります。 システム全体を効率よく管理するためには、まずサーバのハードウェアリソースやネットワーク、OS、アプリケーションなどの状態を適切に把握できる ことが重要になります。そのため、常にシステムの稼働状況のデータを収集・監視する「監視システム」が必要とされています。 大規模システムではシステムを監視するために、大手ソフトウェアベンダーが販売する統合管理ツールを用いたり、データセンターが提供する監視サービ スを利用することが一般的

  • DBサーバーの負荷分散

    MySQLアクセスを負荷分散する ユーザーからのアクセス数が非常に多いWebサイトにおいて、MySQLのSLAVEサーバーを複数台並べて負荷分散させるということがよく行われています。ただ、Webアクセスの負荷分散は一般的なテーマなのでいろいろなところで語られているのに対し、DBアクセスの負荷分散というテーマは一般的でないのかあまり語られていないように感じます。 DBアクセスを負荷分散するにあたって一番荒っぽい方法は、Webサーバー上のプログラムの中でどのSLAVEサーバーに接続するかをランダムで決める方法です。ランダムと言っても長時間アクセスしているとほぼ接続先が均等化されるので、一見この方法でも問題ないように見えます。しかしこの方法だと、接続しに行こうとしたSLAVEサーバーが高負荷もしくはサービス停止中であっても構わず接続しに行ってしまうという問題があります。 このような問題を解決する

  • [Think IT] 第4回:チケットとソースコードを連携せよ! (2/3)

    【バグ管理の作法】Trac徹底活用! 第4回:チケットとソースコードを連携せよ! 著者:masuidrive 公開日:2007/12/27(木) SubversionとTracを連携しよう ではコミットメッセージとチケットを結び付けるために、trac-post-commit-hookを設置しよう。今回は、SubversionとTracが同一のサーバで動いていることを前提として解説していく。 まず、Tracのディレクトリに移動し(「cd Tracのディレクトリ」)、svn-contribディレクトリを作成し(「mkdir svn-contrib」)、svn-contribに移動する(「cd svn-contrib」)。 trac-post-commit-hookのダウンロード 通常は最新版のTracを公式リポジトリからダウンロードして利用する(リスト1)。 古いバージョンのTracを使用して

  • 詳細設計書(前半)

    前回までに表1の? 7「機能設計書」の基設計ドキュメントとして、「表紙」「I/O関連図」「画面レイアウト」「帳票レイアウト」について紹介しました。今回からは、詳細設計に関するドキュメントについて順に説明していきます。 "機能"単位での設計書 機能設計書は、機能単位でドキュメントが作成されます。例えば、「プロスペクト登録画面」と「プロスペクト一覧画面」と「プロスペクト一覧表」という3つの機能があれば、3セットの機能設計書を作ることになります。ここで注意して欲しいのは、設計書の記述はあくまでもユーザのイメージする"機能"単位で、プログラミング単位の"プロシージャ"や"クラス"ではないということです。この"機能"という概念について、図1「プロスペクト登録画面」を例に説明しましょう。 図1を見ると、「プロスペクト登録画面」という機能は、画面、イベント、BL(ビジネスロジック)などのオブジェクトか

  • 詳細設計書(後半)

    現在使われているの画面システムは、イベントドリブン(駆動)型のアプリケーションが主流です。イベントドリブンとは、画面のロード(呼び出し)やボタンのクリックなど、画面操作イベントをきっかけに処理が実行されるしくみを言います。アプリケーションは、プラットホームにより次のように3つの世代があります。 第1世代では画面単位で処理が行われていました。これは画面上の社員コードや商品コードなど複数項目に入力した状態で、「実行ボタン」を押してはじめて社員名や商品名、単価などが取得され画面上に表示されるしくみとなります。 第2世代とともに登場したイベントドリブン機能により、項目単位で処理が行われるようになりました。例えば社員コードを入力した場合、即座に社員名が取得され画面上に表示されます。コードの誤入力などがあっても、すぐにエラー表示されるのでユーザビリティが高い技法として広く普及しました。 第3世代のWe

  • [ThinkIT] 第4回:レプリケーションの比較 (1/4)

    今回はレプリケーションを取り上げます。まずレプリケーションとはどのようなものかを解説し、次にPostgreSQLMySQLそれぞれが持つレプリケーションの基構造を解説します。 RDBMSでいうプリケーションとは、ある1つのデータベースをまったく同じ内容で複製し、複製したデータベース(レプリカ)をネットワーク上に複数配置する機能です。レプリケーションにて作成した複製のデータベースは、様々な目的に活用できます。次にその使用例を紹介します。 目的の1つには、バックアップデータとしての活用があります。テープ装置などの外部記憶装置にバックアップデータを作成するかわりに、他のサーバ上のディスク内にデータベースを複製し、それをバックアップデータとします。 障害発生時には、バックアップデータとして作成した複製データベースを番データベースとして使用し、障害復旧のための時間を短縮する効果があります。 そ

  • [ThinkIT] 第6回:Mojaviで機能を実装してみよう (1/4)

    (1)のLoginAction.class.phpは、ログイン画面のログインボタンが押された時に実行されるアクションクラスです。 連載の第4回からの変更点としては、認証機能が追加されている点です。処理のreturn値が"View::SUCCESS"の場合は認証が成功したものと判断してLoginSuccessView.class.phpへ処理を移します。 一方、return値が"View::ERROR"の場合は認証が失敗したものと判断し、エラーメッセージを準備したうえでLoginErrorView.class.phpに処理を移します。 LoginAction.class.php <?php class LoginAction extends Action { public function execute () { // 画面よりログインIDとパスワードを取得する $request =

  • [Think IT] 第2回:言語開発者が目標にするパフォーマンス「Lua」 (3/3)

  • [ThinkIT] 第1回:PostgreSQL と MySQL の紹介 (1/4)

    共に連載執筆開始時点での最新安定バージョンですが、ある特定のバージョンに特化した内容を記述する予定はないため、基的にはPostgreSQLはバージョン8.1系、MySQLはバージョン5.0系の内容としてご理解ください。 また、PostgreSQLMySQLともに様々なOS上で動作可能ですが、特に断りのない場合はLinux版となります。 PostgreSQLは、1980年頃にUCB(カリフォルニア大学バークレイ校)の研究プロジェクトにて開発されたPOSTGRESというRDBMSが前身です。その後、1995年に同校の大学院生によりPostgres95としてリリースされ、現在の開発チームであるThe PostgreSQL Global Development Groupがこの開発を引き継いだのは1996年です。その際に、名称がPostgreSQLに改名され、ソースコードを公開し、現在もコミ

  • [Think IT] 第1回:携帯サイトとPCサイトはここまで違う! (1/3)

    XHTML Mobile Profileに対応したHTML 連載では、「PCサイトを制作してきたけど、携帯サイトは初めて」といった企業や個人クリエイター向けにPCとモバイルの違いなどをふまえ、携帯サイトを公開するまでの入門的なノウハウを紹介していきます。 まず、今回はHTMLの種類やタグ、CSSなど携帯ブラウザによる違いと、画面サイズやキャッシュ容量などの端末による違いについて紹介していきます。 では、早速携帯サイトを作る上でマークアップの基となるHTMLについて説明します(図1-1)。携帯電話はPCと比べても非常に早い進化を遂げてきたため、どれも基HTMLを基準に作られていますが、携帯ブラウザ(iモード、EZweb、Yahoo!ケータイ)で表示可能なHTMLの仕様には実に多くの種類が存在します。 現在市場に出回っている機種ということに限定すれば、XHTML Mobile Prof

  • [ThinkIT] 第1回:こんなにあるオープンソースのプロジェクト管理ツール (1/3)

    プロジェクト管理用のソフトウェアといえば、定番のMicrosoft Office Projectをはじめ、これまで様々な商用の製品が存在しました。一方で、従来からオープンソースのプロジェクト管理ソフトウェアにも様々なものがあります。 例えばソフトウェア開発に従事されている方であれば、Edgewall Software社が無償で提供している軽量バグトラッキングシステムの「Trac」を使ったことがあるのではないでしょうか(図1)。 ただし、このような従来のオープンソースのプロジェクト管理ソフトウェアの多くは、目的が限定されているものや基的な機能のみを実装するものが多く、企業の汎用的なプロジェクト管理に使えるものが少ないのが現状でした。 その背景の1つとして、オープンソースソフトウェアがWebアプリケーション技術に依存しているケースが多く、ガントチャートなど視覚に訴える機能を実現することが技術

  • [Think IT] 【新・言語進化論】次にくる!新登場言語

    プログラミングを嗜む普通の社会人。はじめてのプログラミングは「Hello World」ではなく、N88-BASICで画面上に円を描いたこと。「外国語のよいところはそれをいくつ学ぼうと構わないことだ」という或る言語学者の言葉はプログラミング言語にも当てはまると最近感じ始めている。 http://blog.so-net.ne.jp/rainyday/ 技術部 教育ビジネス担当部長 CやFORTRANコンパイラなどの言語処理系の設計・開発に約10年間従事。その後ユーザ系企業でUNIXによるクラサバの設計・開発を主導。同時に企業の内外で人材育成に注力する。現在はオープンソースソフトウェアの普及と教育のため OSS に関する教育事業を企画する傍ら、神戸情報大学院大学で講師として教鞭をとる。「ソフトウェア工学の基礎を勉強してオールラウンド・プレーヤーを目指せ」が技術者育成についての口癖。

  • [Think IT] 【新・言語進化論】言語選択の分かれ道

    コンシューマ系の機械翻訳ソフトの開発に10年ほど携わった後、活動の場を広げるべく、現Jurabiの設立に参加。自然言語処理やオープンソース開発などの技術指向をコアとしつつも、上流から下流までを見通せる高付加価値な技術者の育成を目指す。自身はC++の泥臭さとLispのシンプルな奥深さを愛する言語好き。 http://www.jurabi.jp/

  • Ruby on Rails入門 [ThinkIT] 第7回:Linux環境で動作させよう (1/3)

    最終回の今回は、これまでRuby on Rails(以下、Rails)で作ってきたアプリケーション「アドレス帳」をLinux環境で動作させます。連載では占有サーバ上に環境を構築するという前提で解説していきます。 現状においてRailsアプリケーションを公開するためのハードルはかなり高いといわざるを得ません。なぜならばRailsに対応しているレンタルサーバがほとんど存在しないからです。しかし今後Railsアプリケーションが増え、ユーザからの要望が高まれば状況は変わっていくでしょう。 Railsアプリケーションを動作させるためのミドルウェアは多数存在しており、いずれも長所と短所を持っています。それらの特徴を踏まえた上で、どのような環境を構築するのかについて決定していきましょう。 まずLinux環境を構築するために必要なソフトウェアについて、代表的なものを表1に紹介します。

  • [ThinkIT] 第2回:Subversionによるバージョン管理(前編) (1/3)

    今回は、Subversionによるバージョン管理方法とウノウでの導入事例について前編と後編にわけて紹介していきます。 Subversionとは、無償で利用できるバージョン管理システムです。現在もオープンソースで活発に開発が進んでおり、執筆時点の最新バージョンは1.4.2となります。バージョン管理システムとは、ソースコードや仕様書などを含むドキュメントなど、時間とともに内容が変化するファイルを管理するシステムの総称です。 Subversionと同じようなバージョン管理システムとしては、CVS(Concurrent Version System)が有名ですが、SubversionではこのCVSで使いにくかった点を改良した次世代バージョン管理システムというコンセプトで開発が続けらています。筆者が実際にどちらも利用してみた結論として、導入をおすすめするバージョン管理システムは、やはり「Subver

  • [ThinkIT] 第1回:SQLインジェクションによるデータベース操作 (1/3)

    SQLインジェクションでは、クエリなどの任意データを、データベースが実行するSQL文に挿入します。挿入されたクエリは、意図しないデータを検索したり、データベースの情報を変更したり削除したりするというように、様々な操作をデータベースに行います。問題を実証するために次の例を見てみましょう。 // 問題を実証するための入力 $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 上記の関数内では、ユーザが指定した名前とnameカラムの値が一致したデータをusersテーブルから取り出すことを想定しています。普通、$nameには、iliaといった文字列のように、アルファベットとスペースからできた文字列が格納されています。 しかしここでは、$nameにまったく新しいクエリ