<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>面白法人KAYAC-静岡支社Blog-</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/" />
    <link rel="self" type="application/atom+xml" href="http://shizuoka.kayac.com/atom.xml" />
    <id>tag:shizuoka.kayac.com,2007-09-14://1</id>
    <updated>2008-01-26T17:43:26Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.0</generator>

<entry>
    <title>CakePHPでGeocoding</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2008/01/cakephpgeocoding.html" />
    <id>tag:shizuoka.kayac.com,2008://1.23</id>

    <published>2008-01-26T16:21:32Z</published>
    <updated>2008-01-26T17:43:26Z</updated>

    <summary>庄司です。yahoo mapsやgoogle mapsで提供されているGeoco...</summary>
    <author>
        <name>支社長：庄司容崇</name>
        <uri>http://shizuoka.kayac.com/</uri>
    </author>
    
    <category term="cakephp" label="CakePHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="geocoding" label="Geocoding" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[庄司です。<br /><br />yahoo mapsやgoogle mapsで提供されているGeocoding APIを使って、世界の都市名と緯度・経度情報をマッピングした静的なテーブルを作成してみます。プログラムはCakePHPを使って作成します。 ]]>
        <![CDATA[<br />Geocoding APIは住所情報から緯度・経度情報を取得するAPIです。<br />今回はyahoo maps のAPIを利用します。<br /><br />せっかくなのでCakePHPで作ってみようと思い参考情報をBakeryで探していた所、Geocoding APIを利用しているコードがあったので参考にします。<br /><br />the Bakery: Geocoding in CakePHP <br /><a href="http://bakery.cakephp.org/articles/view/geocoding-in-cakephp">http://bakery.cakephp.org/articles/view/geocoding-in-cakephp</a><br /><br />国・都市情報は<br />MaxMind社が配布しているGeoIP APIライブラリにデータがあるのでそれを利用します。<br /><br />MaxMind社ダウンロードページ<br /><a href="http://www.maxmind.com/download/geoip/api/php/">http://www.maxmind.com/download/geoip/api/php/<br /></a><br />利用するライブラリは以下の二つです。<br />geoip.inc<br />geoipregionvars.php<br /><br /><br />CakePHP(1.2)でテーブルにデータを突っ込むバッチプログラムを作ってみました。<br /><br /><blockquote>&lt;?php<br />/**<br />&nbsp;* CakePHP batch<br />&nbsp;*/<br />class ImportGeo2Shell extends Shell {<br /><br />&nbsp;&nbsp;&nbsp; var $uses = array('Country', 'City');<br /><br />&nbsp;&nbsp;&nbsp; // Yahoo MAPs API<br />&nbsp;&nbsp;&nbsp; var $yahoo_geocode_api_url = 'http://api.local.yahoo.com/MapsService/V1/geocode?appid=%key&amp;location=%address';<br />&nbsp;&nbsp;&nbsp; var $yahoo_maps_api_key&nbsp;&nbsp;&nbsp; = 'YAHOO MAPs API KEY';<br /><br />&nbsp;&nbsp;&nbsp; function main()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * include geoip library<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; require_once VENDORS . 'geoip/geoip.inc';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; require_once VENDORS . 'geoip/geoipregionvars.php';<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $geo_ip = new GeoIP();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($geo_ip-&gt;GEOIP_COUNTRY_CODES as $country_code) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$country_code) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $country_number = $geo_ip-&gt;GEOIP_COUNTRY_CODE_TO_NUMBER[$country_code];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $country_name&nbsp;&nbsp; = $geo_ip-&gt;GEOIP_COUNTRY_NAMES[$country_number];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;Country-&gt;save(array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Country' =&gt; array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'id' =&gt; null,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name' =&gt; $country_name,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name_short' =&gt; $country_code),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'City' =&gt; array(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $country_id = $this-&gt;Country-&gt;getLastInsertID();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!isset($GEOIP_REGION_NAME[$country_code])) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($GEOIP_REGION_NAME[$country_code] as $city_code =&gt; $city_name) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // geocoding city<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $yahoo_geocode_api_url = r(array('%key', '%address'),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array($this-&gt;yahoo_maps_api_key,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rawurlencode($city_name . ' ' . $country_name)),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;yahoo_geocode_api_url);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $xmlstring = file_get_contents($yahoo_geocode_api_url);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $simplexml = simplexml_load_string($xmlstring);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!$simplexml-&gt;Result-&gt;Latitude || !$simplexml-&gt;Result-&gt;Longitude) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "ERROR: Can't geocoding: $address\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;City-&gt;save(array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'City' =&gt; array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'id' =&gt; null,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'country_id' =&gt; $country_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'name' =&gt; $city_name,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'lat' =&gt; $simplexml-&gt;Result-&gt;Latitude,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'lng' =&gt; $simplexml-&gt;Result-&gt;Longitude)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}<br /></blockquote><br />※yahoo八分にならないようにご注意下さい。]]>
    </content>
</entry>

<entry>
    <title>symfony X PHP</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/10/symfony-x-php.html" />
    <id>tag:shizuoka.kayac.com,2007://1.16</id>

    <published>2007-10-06T18:15:33Z</published>
    <updated>2007-10-06T18:19:39Z</updated>

    <summary>こんにちわ。静岡支社のnagayasuです。 One day, One symf...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="symfony" label="symfony" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        こんにちわ。静岡支社のnagayasuです。

One day, One symfonyを心に掲げて3日目にして締め切りを破ってしまいました。しかもこのまま進めたとしても24日掛かってしまう！

衝撃の事実です。さすがに24日延々と書いていくと間延びしてしまうので、アクセントとして別の情報も取り上げたいと思います。

今回は初めて日本語で出版された書籍ということで、[symfony X PHP](http://www.gihyo.co.jp/books/syoseki.php/978-4-7741-3237-2/)を取り上げたいと思います。実際締め切り破った原因はふらりと立ち寄った本屋でこの本を見つけて読みふけっていたというのが真相です。

        <![CDATA[<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=houseco-22&o=9&p=8&l=as1&asins=4774132373&fc1=000000&IS2=1&lt1=_blank&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&f=ifr&nou=1" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

symfonyの綴りは全部小文字でsymfonyが正しいそうです。ずっと大文字で書いてましたが、間違いを改めて今後は小文字で書いていきます。

symfonyの入門書としてかなりよく書かれた本だと思います。mojaviを使い始めた頃はまるごとPHPを片手に仕事をしていましたが、PHP初心者だった私には書いてある事がちっともわからずに非常に苦労した記憶があります。

以下、章ごとに感想を

### Chapter 1
symfony-projectについての概要とsymfonyについてのざっくりとした説明。名前の話はここに書いてありました。symfonyの開発はフランスのSensio社を中心に進められている為mojaviみたいに廃れたりする心配は無さそうです。

### Chapter 2
symfonyに触れるにあたって必要となる知識が簡単に説明されています。PHP5からの新機能やsymfonyで多く使われるYAMLフォーマット、最近のフレームワークでは常識となっているMVCパターンの説明などがあります。

### Chapter 3
symfonyのインストールから始まって、プロジェクトやモジュールの自動生成について、symfonyの基本となるaction, validator, viewの説明があります。この章を読んで理解出来るかどうかがsymfonyを使いこなせるかどうかの分水嶺になる気がします。mojaviや他のフレームワークを使った事がある人なら問題なく読みこなせると思います。

### Chapter 4
ここがこの本の山場です。各ディレクトリやファイルの説明に始まってDBライブラリとして使用されているPropelの説明などがあります。非常に内容が濃い反面、これでも説明しきれてないというのがsymfonyの巨大さを物語っている気がします。この章を読み終わって、やっとsymfonyの全景がうっすら見えてきた気がしました。

### Chapter 5
4章までの知識を前提にサンプルとしてRSSリーダーを作るという内容になっています。私は時間が無かったので軽めに読み流しました。

全体としてsymfonyの入門書として非常に良く書かれた本だと思います。ただし、そのボリュームの薄さの割りに内容が濃い為、ある程度の前提知識が必要になります。私のように他のMVCフレームワークを使った事があり、symfonyに興味を持っているという人には良い本だと言えるでしょう。]]>
    </content>
</entry>

<entry>
    <title>Subversionとコラボレーション開発</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/10/subversion.html" />
    <id>tag:shizuoka.kayac.com,2007://1.12</id>

    <published>2007-10-03T03:28:50Z</published>
    <updated>2007-10-04T01:37:05Z</updated>

    <summary>こんにちわ。静岡支社のnagayasuです。 前回、前々回はxamppというパッ...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="subversion" label="subversion" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        こんにちわ。静岡支社のnagayasuです。

前回、前々回はxamppというパッケージを使って、コーディングを行う方法を紹介しました。今回はコラボレーション開発で使用されるSubversionというツールを紹介したいと思います。

        <![CDATA[###上書きや紛失の問題

様々な受託案件の中には、複数の人が同時に携わるものが多くあります。こういった開発ではテストサイト上で他の人が作成したファイルを上書きしてしまったというトラブルが良く起こります。

DreamWeaverのサイト管理には簡易的なチェックイン／チェックアウト機能が用意されていますが、あまり使用されていないようです。

###コラボレーション開発としてのSubversion

複数の人（他社も含む）が関わるコラボレーション開発では、こういったトラブルを防ぐ為のツールとしてSubversionが有用です。

Subversionとはバージョン管理システムとして使われるサーバ／クライアントソフトウェアです。
サーバ側のソフトウェアも必要ですが、インフラとして整備されていれば意識する事はないでしょう。
一般的に開発者が利用するクライアントソフトウェアには以下のようなものがあります。

- svn（主にプログラマが使用）
- TortoiseSVN（WindowsのExplorerに統合されたGUIクライアント）
- SCPlugin（MacのFinderに統合されたGUIクライアント、別途svnのインストールが必要）

バージョンを管理するという事は、いつでもバックアップを取り出す事ができるということです。
ほとんどの場合はそういった必要はありませんが、バックアップがあるという安心感はとても大きいです。

Subversionを使用すると他の人の修正内容を容易に自分の環境に取り込む事ができます。ファイルの修正がぶつかった場合の検出もSubversionが自動的に通知してくれる為安心して開発する事ができます。

###Subversionで用いられる用語

Subversionには普段聞きなれていない、いくつかの独自の用語があります。ここでは独自の用語について簡単に説明します。

<dl>
<dt>repository / リポジトリ</dt>
<dd>サーバ側でファイルを管理する為の場所。すべてのファイルはリポジトリに保管されます。一般的にリポジトリはURLの形式で表現されます。</dd>
<dt>working copy / 作業コピー</dt>
<dd>リポジトリから自分のパソコンにダウンロードしたファイル一式。作業中はそのファイルに対して追加・修正などを行います</dd>
<dt>checkout / チェックアウト</dt>
<dd>リポジトリから作業コピーを取り出す為の操作。</dd>
<dt>commit / コミット</dt>
<dd>自分が作業コピーに対して行った修正を、リポジトリに登録する為の操作。この操作を行うまで作業コピーに対して行った修正内容はリポジトリには反映されません。</dd>
<dt>update / 更新</dt>
<dd>他の人が行った修正内容を自分の作業コピーに取り込む為の操作。一度チェックアウトを行った後は、updateを通して自分の作業コピーを最新の状態に保ちます。</dd>
<dt>コミットログ</dt>
<dd>commitの操作時に、行った修正についての記録を残す事ができます。この記録をコミットログと呼びます。</dd>
</dl>

###開発前の準備

弊社では下記のステップで開発をスタートしています。

+ 案件の立ち上げ時にテストサイトを設置
+ 同時にSubversionのリポジトリを作成
+ コミットログ用のMLを作成し、関係者を登録
+ 関係者が作業コピー（working copy）をチェックアウト（checkout）する
+ それぞれ自分の担当の作業を行いコミット（commit）する
+ コミットされたデータは5分程度の周期でテストサイトに反映

他の人の作業成果を取り込むにはある程度の周期で自分の作業コピーに更新（update）を掛ける必要があります。更新を掛けると、他の人がコミットしたデータが自分の作業コピーに反映されます。

誰がいつどういう内容をコミット（commit）したかはコミットログ用のMLにメールで通知されます。その為、自分がコミットした内容はすぐに他の人に通知されます。

###使用における注意

この開発スタイルを取り込む為には、前回紹介したXAMPPを用いて自分のパソコンにプレビューできる環境を用意する必要があります。これはテストサイトに不適切な状態でファイルをアップロードさせない為にも必要な事です。XAMPPを使っていれば自分のパソコンで確認を行える為、テストサイトで確認する為という理由でコミットする事が無くなります。

プログラマは担当者が誰でも更新を行えるように全体を設計する必要があります。これはサイト全体に一貫した規約を適用するということです。担当者以外でも問題なく作業を行えるようにディレクトリやファイルの配置などについて具体的な規約を用意します。XHTMLやCSSについても分業する為の規約を用意すると良いでしょう。
]]>
    </content>
</entry>

<entry>
    <title> XAMPPを利用した効率的なコーディング (2)</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/xampp-2.html" />
    <id>tag:shizuoka.kayac.com,2007://1.11</id>

    <published>2007-09-28T09:13:34Z</published>
    <updated>2007-09-29T13:19:43Z</updated>

    <summary>こんにちは、静岡支社のnagayasuです。 前のエントリではXAMPPという開...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="apache" label="apache" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        こんにちは、静岡支社のnagayasuです。

前のエントリではXAMPPという開発環境を紹介し、Apacheの設定を行いました。今回はApacheの設定についてもう少し深く見て行きたいと思います。

        <![CDATA[
### 前回の設定の問題点

前回、サイトの設定をDocumentRootで行いますと説明しました。この方法だと複数のサイトを同時並行で作成している場合、毎回設定を切り替える必要があり、あまり効率的とは言えません。

そこで、今回は複数のサイトの設定を行う機能、VirtualHostの紹介をします。

### VirtualHostの設定

VirtualHostとは1台のウェブサーバで複数のドメインを運用する為の機能です。サイトの設定の前に初期設定を行います。

- xamppディレクトリのapache/confディレクトリ内にvhostsというディレクトリを作成します
- apache/conf/extra/httpd-vhosts.confをエディタで開き、ファイルの最後に以下の1行を追加します

		Include conf/vhosts/*.conf

これでApache側の初期設定は終わりです。次はサイトの登録手順を説明します。

### サイトの登録

- 作成したvhostsディレクトリ内にexample.confというテキストファイルを作成し、以下の内容を追記します（サイト名はここではexampleとしています）

<作業ディレクトリのパス>は適宜自分の環境に置き換えてください。またパスに日本語が含まれていると正しく動作しません

		 <VirtualHost *>
		   ServerName <サイト名>
		   DocumentRoot <作業ディレクトリのパス>
		   
		   <Directory "<作業ディレクトリのパス>">
		      Order allow,deny
		      Allow from all
		   </Directory>
		 </VirtualHost>

- xamppのコントロールパネルからApacheをStartします（既に起動済みの場合は Stop してから Start）

これでサイトの登録は完了です。ただし、このままではサイトにアクセス出来ない為、exampleというサイト名をパソコンに登録します。

- C:\WINDOWS\system32\drivers\etc\hostsの最後に以下の1行を追加します

		127.0.0.1	example

これでブラウザに http://example/ でアクセスすると正しくサイトが表示されます。

複数のサイトを設定したい場合は、サイト名「example」を別のものにして設定を追加していきます。]]>
    </content>
</entry>

<entry>
    <title>PHPフレームワーク考察</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/php.html" />
    <id>tag:shizuoka.kayac.com,2007://1.10</id>

    <published>2007-09-27T16:33:19Z</published>
    <updated>2008-01-26T14:03:26Z</updated>

    <summary> 支社長の庄司です。mojaviを本格的に使い始めて早3年。本格的にphp5・新...</summary>
    <author>
        <name>支社長：庄司容崇</name>
        <uri>http://shizuoka.kayac.com/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[
<p>支社長の庄司です。<br /></p><p>mojaviを本格的に使い始めて早3年。本格的にphp5・新しいフレームワークへの移行をして行く必要が出てきた今日この頃。新しいフレームワークの簡単なレビュー。<br /></p>
<p>&nbsp;</p>]]>
        <![CDATA[<ul>
<li>symfony<br />ずっとmojaviでやってきたんで、symfonyが一番しっくりくるなと。<br />これをベースにうちでは開発プロセスを確立していきたいなと。</li>
<li>CakePHP<br />RoRのPHP版。今のバージョンだと実用にはちょっと厳しい感じですが、<br />とにかく楽したいです。1.2に期待してます。</li>
<li>ZendFramework<br />設計・実装が抜群に堅実で美しく、ZendFrameworkのソースを眺めるのは非常に勉強になります。<br />が、各コンポーネントが疎結合で独立しておりできのいいライブラリの<br />集まりといった感じです。<br />勉強になるのでソースレビューはしていきたいですね。</li></ul>
<p>&nbsp;</p>
<p>今後はsymfonyを採用することが増えそうです。<br />PHP4しか利用できない環境ではCakePHPを使ってみたいですね。<br /></p>]]>
    </content>
</entry>

<entry>
    <title>XAMPPを利用した効率的なコーディング</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/xampp.html" />
    <id>tag:shizuoka.kayac.com,2007://1.9</id>

    <published>2007-09-27T09:47:40Z</published>
    <updated>2007-09-28T09:45:53Z</updated>

    <summary>こんにちわ。静岡支社のnagayasuです。 今回はPHPからちょっと離れて開発...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="apache" label="apache" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        こんにちわ。静岡支社のnagayasuです。

今回はPHPからちょっと離れて開発環境について触れてみたいと思います。

        <![CDATA[
### よくある悩み

プログラマとコラボレーションするデザイナやマークアップエンジニアはデザインやコーディングのツールには詳しいもののサーバ関係のソフトウェアはさっぱりという場合がよくあります。

もっとも多いのがDreamWeaverを利用したコーディングの際に行われるリソースの相対パス指定です。

	<img alt="" src="../../shared/images/btn_input.jpg" />

こういった記述は、そのページのURLが変わるとパスの指定が無効になってしまいます。動的なページを作成する場合、実際のURLはプログラマが変更したり、さまざまなURLで同一のソースを使う場合があります。その為、デザイナやマークアップエンジニアにはサイトのルート「/」からの絶対パスで指定するようにと依頼するようにしています。

絶対パスによる指定は、コーディングする側からはプレビューが使えないと不便だという意見をよく耳にします。そんなデザイナ、マークアップエンジニアにはXAMPPをおすすめしています。


### XAMPP とは

XAMPPとはWindows + Apache + MySQL + PHP + 便利なツール類がセットになったパッケージです。XAMPPを利用すると絶対パスで記述したページもブラウザから直接確認することができます。

下記のURLからダウンロードします。

> http://www.apachefriends.org/jp/xampp-windows.html#2671

個人的にはzipパッケージを推奨しています。インストールの手順は下記の通りです。

- ダウンロードして保存します
- Cドライブの直下に解凍します
- xamppディレクトリ内のsetup_xampp.batを実行します
- xampp-portcheck.exeを実行し80がfreeになっていることを確認します。（Skypeなどで80が使用されている場合は、Skypeの設定から80を使用しないように設定します）
- xampp-control.exeを実行し、コントロールパネルのapacheのStartボタンを押します
- 任意のブラウザで http://localhost/ にアクセスしてXAMPPの初期画面が表示されるかを確認します

表示が確認できればひとまず、XAMPPのインストールは完了です。ここからはもっとも使用するApacheソフトウェアの設定を説明します。

### Apache の設定

ApacheはオープンソースのWEBサーバで、WEBブラウザのリクエストに基づいてページを送信するサーバソフトウェアです。Apacheを自分のパソコンにインストールしていれば、あたかもインターネット越しにサイトを見ているかのようにコーディングしたHTMLをブラウザで閲覧する事ができます。

その為にはコーディングしている作業ディレクトリをサイトとしてApacheに設定する必要があります。Apacheではその設定をDocumentRootと呼びます。設定の手順は以下の通りです。

- xamppディレクトリ内のapache\conf\httpd.confをエディタで開きます
- エディタの検索機能を利用して「DocumentRoot」を検索します（176行目付近）

		DocumentRoot "C:/xampp/htdocs"

- DocumentRoot "C:/xampp/htdocs" の 「C:/xampp/htdocs」の部分を置換機能を利用して作業ディレクトリのパスに変更します

		<Directory "C:/xampp/htdocs">  

- 203行目付近に同様のパスの記述がありますが、置換機能でこちらも変更します
- XAMPPのコントロールパネルから　apache の Startボタンを押し、Apacheを起動します（既に起動済みの場合は一旦Stopを押して停止してください）
- ブラウザで「http://localhost/」を開き、自分のコーディングしているページが正しく表示されているかどうか確認します

これでXAMPPを使用してあたかもサイトにアクセスしているかのようにコーディングデータを確認できるようになります。非常に便利なので一度試してみてはいかがでしょうか。]]>
    </content>
</entry>

<entry>
    <title>人材募集</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/post-4.html" />
    <id>tag:shizuoka.kayac.com,2007://1.8</id>

    <published>2007-09-27T06:48:08Z</published>
    <updated>2008-01-31T06:21:37Z</updated>

    <summary>WEBプログラマー大歓迎！　とりわけPHPに強い方！ 寝る間も惜しんでプログラミ...</summary>
    <author>
        <name>管理者</name>
        
    </author>
    
        <category term="recruit" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[<p><font style="FONT-SIZE: 1.25em"><b>WEBプログラマー大歓迎！　とりわけPHPに強い方！</b></font><br /></p>
<p>寝る間も惜しんでプログラミングに勤しみたいという方も初心者だけどやってみたいという方も、カヤックサイトを見て共感できればぜひご応募ください。</p>
<p>現在、都内にいるんだけど...という方にも朗報！静岡支社は社宅完備。<b>Uターン、Iターン就職、新卒も歓迎します</b>。</p>
<table summary="静岡支社の募集要項について">
<tbody>
<tr>
<th scope="row"><b>募集職種</b></th>
<td>WEBプログラマー／システムエンジニア</td></tr>
<tr>
<th scope="row"><b>雇用形態</b></th>
<td>インターン、正社員、契約社員</td></tr>
<tr>
<th scope="row"><b>勤務地</b></th>
<td>もちろん静岡<br />※希望があれば鎌倉および東京・自由が丘への転勤も有</td></tr>
<tr>
<th scope="row"><b>勤務時間</b></th>
<td>10:30?16:00をコアタイムとしたフレックスタイム制 </td></tr>
<tr>
<th scope="row"><b>休日</b></th>
<td>完全週休2日制(土日)、祝日、夏季休暇、年末年始休暇 </td></tr>
<tr>
<th scope="row"><b>給与・賞与</b></th>
<td>各職種の給与体系は、詳しくは募集職種を参照。 </td></tr>
<tr>
<th scope="row"><b>交通費</b></th>
<td>全額支給（上限2万円まで）</td></tr>
<tr>
<th scope="row"><b>福利厚生</b></th>
<td>各種保険完備。</td></tr>
<tr>
<th scope="row"><b>応募方法</b></th>
<td>カヤックの応募フォームからエントリーください。<br />&gt;　<a href="http://www.kayac.com/recruit/career" target="_blank">中途</a>　&gt;　<a href="http://www.kayac.com/recruit/intern" target="_blank">インターン</a>　&gt;　<a href="http://www.kayac.com/recruit/fresh" target="_blank">新卒採用</a><br />※<strong>静岡支社希望</strong>と明記してください！</td></tr></tbody></table>]]>
        
    </content>
</entry>

<entry>
    <title> PEARのインストール</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/pear.html" />
    <id>tag:shizuoka.kayac.com,2007://1.7</id>

    <published>2007-09-25T07:37:02Z</published>
    <updated>2007-09-26T06:59:49Z</updated>

    <summary>こんにちわ。静岡支社のnagayasuです。 今時にPHPっ子ならPEARを使う...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pear" label="PEAR" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        こんにちわ。静岡支社のnagayasuです。

今時にPHPっ子ならPEARを使うのはある意味当たり前になっています。
ただ、いつもサーバに自分の使いたいパッケージがインストールされているとは限りません。
また、サーバにインストールされているPEARパッケージを使用した場合、サーバのメンテナンスや移転に伴うトラブルに巻き込まれる可能性があります。

そこで、今日はユーザ領域へのPEARのインストールのやり方を紹介します。Linuxでコンソールでログインしている状況を想定しています。


        <![CDATA[
PEARのインストールにはpearコマンドが必要になります。pearコマンドがインストールされていない場合は

> http://go-pear.org/

からpearコマンドをインストールします。インストール方法はpearのオンラインマニュアルを参照してください。

> http://www.go-pear.org/manual/ja/installation.getting.php

	pear config-creapte /path/to/install_dir .pearrc

上記でpearの設定ファイルである.pearrcが作成されます。この設定は

	pear -c .pearrc config-show

で確認できます。-cオプションに.pearrcファイルを指定する事で設定ファイルを使用する事ができます。設定内容に含まれるディレクトリは色々あります。 

- bin_dir
- doc_dir
- ext_dir
- php_dir
- cache_dir
- data_dir

php_dir にはPEARの各種パッケージがインストールされます。

インストールも-cオプションを指定して行います。

	pear -c .pearrc install -a <package>

これで /path/to/install_dir にインストールされます。

こうしてユーザ領域にインストールしておけば、サーバの共有領域にインストールされたPEARパッケージに依存する事なくアプリケーションを構築する事ができます。]]>
    </content>
</entry>

<entry>
    <title>静岡支社へのお問い合わせ</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/post-3.html" />
    <id>tag:shizuoka.kayac.com,2007://1.6</id>

    <published>2007-09-25T06:55:22Z</published>
    <updated>2007-09-25T07:07:40Z</updated>

    <summary>静岡支社住所〒420-0851静岡県静岡市葵区黒金町11-7 三井生命静岡駅前ビ...</summary>
    <author>
        <name>管理者</name>
        
    </author>
    
        <category term="contact" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[静岡支社住所<br /><ul class="adr"><li class="postal-code">〒420-0851</li><li><span class="region">静岡県</span><span class="locality">静岡市</span><span class="street-address">葵区黒金町11-7<br />
三井生命静岡駅前ビル8F</span><br /></li></ul><br />静岡支社へのお問い合わせは、面白法人カヤックよりお問い合わせ下さい<br /><ul><li><a href="http://www.kayac.com/contact">お問い合わせフォーム</a><br /></li></ul> ]]>
        
    </content>
</entry>

<entry>
    <title>面白法人カヤック　静岡支社ブログについて</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/post-2.html" />
    <id>tag:shizuoka.kayac.com,2007://1.5</id>

    <published>2007-09-25T06:44:09Z</published>
    <updated>2007-09-26T02:21:02Z</updated>

    <summary>このブログは、面白法人カヤック静岡支社のブログです。日々起きる静岡での出来事や、...</summary>
    <author>
        <name>管理者</name>
        
    </author>
    
        <category term="about" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[このブログは、面白法人カヤック静岡支社のブログです。<br />日々起きる静岡での出来事や、技術情報をお届けする予定です。<br /><ul><li><a href="http://www.kayac.com/">面白法人カヤック</a>とは？</li></ul>静岡支社についてのお問い合わせ<br /><ul><li><a href="http://shizuoka.kayac.com/contact">静岡支社お問い合わせ</a><br /></li></ul> ]]>
        
    </content>
</entry>

<entry>
    <title>MDB2の便利な機能</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/post-1.html" />
    <id>tag:shizuoka.kayac.com,2007://1.4</id>

    <published>2007-09-25T04:36:53Z</published>
    <updated>2007-09-25T05:40:13Z</updated>

    <summary>初めまして。静岡支社で働く事になりましたnagayasuです。このブログでは技術...</summary>
    <author>
        <name>永安隆史</name>
        <uri>http://www.cuppy.co.jp/</uri>
    </author>
    
        <category term="technical" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pear" label="PEAR" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[初めまして。静岡支社で働く事になりましたnagayasuです。<br />このブログでは技術的な情報をメイン書いていきたいと思います。<br /><br />今回は初めての投稿なので、日頃よく使うPEAR::MDB2を取り上げたいと思います。<br /><br /><br />]]>
        <![CDATA[<p>
PEAR::MDB2はPEAR::DBの代替として開発が進んでいるDB抽象化ライブラリです。<br />
使用方法はPEAR::DBを意識して作られているため、PEAR::DBの経験があれば比較的簡単に使えると思います。<br />
<br />
PEAR::MDB2ではExtendedモジュールをロードする事で、便利なメソッドを使用できるようになります。<br />
</p>

<ul>
	<li>autoExecute</li>
	<li>autoPrepare</li>
	<li>getAfterID</li>
	<li>getAll</li>
	<li>getAssoc</li>
	<li>getBeforeID</li>
	<li>getCol</li>
	<li>getOne</li>
	<li>getRow</li>
	<li>limitQuery</li>
</ul>

<p>Extendedモジュールはロードしてから使用します。</p>

<pre class="prettify"><code class="prettify">
$mdb2 =&amp; MDB2::singleton(DSN);
$mdb2-&gt;loadModule('Extended');
$mdb2-&gt;extended-&gt;getOne("SELECT COUNT(*) FROM t_foo");
</code></pre>

<p>更新クエリでは便利なautoExecuteを利用します。</p>

<blockquote> autoPrepare() および  autoExecute()  は、うんざりするような INSERT、UPDATE、DELETE  や SELECT 文を書く手間を軽減します。 これらの SQL 文を使用していると、例えばテーブルにフィールドを追加した場合などの メンテナンスが大変ですよね?  autoPrepare() および  autoExecute()  を使用するには、  Extended モジュールを 使用する必要があります。</blockquote>

<p>http://pear.php.net/manual/ja/package.database.mdb2.intro-auto.php</p>

<p>メソッドの使用方法はマニュアルに記載があります。</p>

<pre class="prettify"><code class="prettify">
$mdb2-&gt;extended-&gt;autoExecute('t_foo', $insertValues, MDB2_AUTOQUERY_INSERT);
$mdb2-&gt;extended-&gt;autoExecute('t_foo', $updateValues, MDB2_AUTOQUERY_UPDATE, 'id=' . $mdb2-&gt;quote($id));
$mdb2-&gt;extended-&gt;autoExecute('t_foo', null, MDB2_AUTOQUERY_DELETE, 'id=' . $mdb2-&gt;quote($id));
</code></pre>

<p>
quoteメソッドは第二引数に第一引数の型を指定しますが、省略した場合MDB2が内部で自動的に型判定を行います。
APIの様なシンプルな取得／更新クエリであれば、Extendedモジュールを使用する事で簡単に作成する事ができますね。
MySQL5.0からはViewに対応している為、最近は結合したViewに対してSELECTするやり方を多用しています。
</p>
]]>
    </content>
</entry>

<entry>
    <title>面白法人カヤック静岡支社設立</title>
    <link rel="alternate" type="text/html" href="http://shizuoka.kayac.com/2007/09/post.html" />
    <id>tag:shizuoka.kayac.com,2007://1.2</id>

    <published>2007-09-17T11:38:48Z</published>
    <updated>2007-09-21T01:50:33Z</updated>

    <summary> 面白法人カヤックの静岡支社がスタートしました！同時にこのブログもスタートしまし...</summary>
    <author>
        <name>支社長：庄司容崇</name>
        <uri>http://shizuoka.kayac.com/</uri>
    </author>
    
        <category term="news" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://shizuoka.kayac.com/">
        <![CDATA[<span class="mt-enclosure mt-enclosure-image"><a href="http://shizuoka.kayac.com/img/entry/20070917-001.html" onclick="window.open('http://shizuoka.kayac.com/img/entry/20070917-001.html','popup','width=400,height=300,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://shizuoka.kayac.com/img/entry/20070917-001-thumb-200x150.jpg" alt="20070917-001.jpg" style="margin: 0pt 20pt 20px 20px;" align="right" height="150" width="200" /></a></span> 面白法人カヤックの静岡支社がスタートしました！<br />同時にこのブログもスタートしました！<br />今後このブログには「支社日記」や技術的な記事を掲載していく予定です。<br /><br />静岡支社の設立経緯や概要は<br />弊社代表柳澤のBLOGや<a href="http://www.kayac.com/">弊社ホームページ</a>を参照下さい。<br /><br />▼代表柳澤 日経BPオンライン連載ブログ<br /><a href="http://pc.nikkeibp.co.jp/article/NPC/20070910/281517/" target="_blank">面白法人カヤックのいきかた</a><br /><br />静岡支社ではWEBプログラマーを絶賛募集中です。<br />静岡で働きたいWEBプログラマーの皆さん。<br />カヤック静岡支社へぜひ！<br /><br /><a href="http://www.kayac.com/shizuoka#recruit" target="_blank">カヤック静岡支社求人ページ</a><br />]]>
        
    </content>
</entry>

</feed>
