<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../../../../css/rss/feedRss2.xsl" media="screen" type="text/xsl"?>

<rss version="2.0"> 
  <channel> 
    <title>A Day In The Boy's Life</title>  
    <link>http://ameblo.jp/itboy/</link>  
    <description>とあるエンジニアのとある1日のつぶやき。</description>  
    <language>ja</language>  
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" href="http://feedblog.ameba.jp/rss/ameblo/itboy/rss20.xml" type="application/rss+xml"/>  
    <item> 
      <title>クラウド時代のエンジニアの活きる道</title>  
      <description><![CDATA[<p>
 <p>数年前と比べてエンジニアを取り巻く環境は劇的に変わってきています。</p>
<p>クラウドサービスが提供 されるようになり、自社で構築しなくても素早く安価にサービスインできたり、非エンジニアでもアイデアを実現するツールとして比較的容易に利用できます。</p>
<p>こうなってくるとエンジニアの生きる道というのも限られてくるのではないかなと、自分としても不安に思ってきてしまいます。</p>
<br />
<br />
<div class="contents_sub_title"><h3>作る側と使う側という二極化</h3>
</div>
<br />
<p><strong>クラウドサービスがユーザーの要件を満たす環境を素早く提供しだすと、エンジニアの仕事はどんどんとそのサービスによって搾取されていきそう</strong>です。</p>
<p>今更BBSやブログシステムを一から作ってサービスとして公開しようと思うエンジニアはいないしょう。</p>
<p>その辺は既に大規模なサービスやパッケージやそしてオープンなライブラリが提供されており、自分で作るより高機能でそして優秀です。</p>
<br />
<p>また、個人レベルてはなくSIerのような受託開発業者も一からスクラッチで作ってくれという案件も減ってくるかもしれません。<br />
日本人は細かな所にこだわりますし、クラウドやパッケージで提供されるサービスが一見無駄と思える日本企業の文化に何処までマッチしてるかは不明ですが、要件に多少目を瞑れば遥かに高速、低コストで環境を揃えられるようになっています。</p>
<br />
<p>こうなってくるとエンジニアが例えシステムを作り上げる力量があったとしてもそれを活かす場が少なくなってきます。<br />
もはや、<strong>エンジニアはクラウドやパッケージなど、ある程度シェアを誇るサービスを提供する企業でその中の人をやるか、 サービスをカスタマイズしたり上手く組み合わせて付加価値を提供する使う側に回るという二極化をしてしまう</strong>かもしれません。</p>
<p><br />
前者は豊富な経験と知識を兼ね備えたエンジニアが求められますので狭き門になりそうですし、後者はエンジニア以外にもアイデア次第でどうにかなってしまうところもあるので厳しい競争になりそうです。</p>
<p>一から何かを作るにしても大規模なサービスが完全に覇権を握ってしまっている領域ではとても太刀打ちできないでしょうから、ひと昔前のようになかなか新たに開拓して切り開くのは難しく思えます。</p>
<br />
<br />
<div class="contents_sub_title"><h3>エンジニアが活きるニッチな領域を探す</h3>
</div>
<br />
<p>ここまでの事は少し前まで自分が思ってたことですが、最近はそんな事もないのかなと感じてきたりしています。</p>
<p>理由は、<strong>大きなサービスはその提供範囲が広い故に必ず隙間ができてしまう</strong>ということです。</p>
<p>その隙間、<strong>つまりはニッチな所で個人のエンジニアが活きる道はある</strong>のではないかなと。</p>
<p><br />
そのサービスのど真ん中に突っ込んで行くのは、先ほども言ったとおり到底太刀打ちできず、結果は目に見えているのでやめた方が良いでしょう。</p>
<p>しかし、大規模なサービスはその大きさゆえに小回りが効かなかったり、必ず取りこぼす領域がでてきます。</p>
<p><strong>マイノリティだけど確かにニーズがある機能や、特定の地域にフォーカスを当てたサービスや、他社との利権が絡むような領域であったり、ニーズは多いんだけどマネタイズすることが難しかったりと、それは大企業だと目に入らない領域であったり、大きなサービスをそのためだけにカスタマイズするのは採算が合わなかったり、そんな小さなところに目を向けるぐらいならもっと金のなる木を見つけようとしたりと、規模が大きくなるサービス故の問題点やジレンマも出てきます</strong>。</p>
<br />
<p>だからこそそんなニッチな所に個人が入り込む隙間があるのではないかなと思うわけです。<br />
大企業が手を出せない部分ってのはあるわけですから、そこを個としてのエンジニアがついていくというのはありでしょうし、小回りが効く故の利点もでてきます。<br />
すべての顧客が既存のサービスを使う事を望んでるわけでもないでしょうし、差別化を図るならそのニーズもより協力に生まれてきます。<br />
場合によっては大きく成長できる分野も出てくるのでしょうし、他の切り口から既存のサービスを切り崩していける可能性もあるでしょう。</p>
<br />
<br />
<div class="contents_sub_title"><h3>まとめ</h3>
</div>
<br />
<p>ここで書いた事は別に目新しい事ではありません。</p>
<p>IT業界を切り開いた先人も最初はそのニッチな分野から始めたという例も多々あります。</p>
<p><strong>似たようなサービスでも視点を変えて、自分ならこうするのにってアイデアとそれが実現できるというエンジニアならではの自負があるからこそ新たなサービスが生まれてくる</strong>のでしょう。</p>
<p>OSS界では、似たようなパッケージやライブラリが次々出てきたりすることが多いですが、その辺も見た目は同じでも設計思想やユーザーに与えるメリットが異なるものが多かったりします。</p>
<p><br />
これからのエンジニアはより、その隙間を見つける力も必要になってくるのだと思います。</p>
<p>この分野はあのサービスが抑えていると諦めるのではなく、ターゲットや切り口をを変えてみたりして隙間を狙って見ることも大事なんだなと最近感じます。<br />
</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=880197897" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=880197897" width="1" height="1" />安心の365日電話サポート付きWADAXレンタルサーバー。</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=880162006" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=880162006" width="1" height="1" />ビジネスの最前線で勝ち残るための必要な情報が凝縮　日経ビジネス</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=879480745" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=879480745" width="1" height="1" />集客にお困りの方は必見。Yahoo! JAPANが提案する集客アップの方法。</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-10887032123.html">クラウド化する世界</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11097986022.html">サービス構築の実行コストは構築側より提案側のほうが上回ってるんじゃないかって話</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11054195882.html">「イエス」から始める</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11053281804.html">プログラマが知るべき97のこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10970843898.html">要件定義の段階でユーザーが反射的に「YES」と答える理由</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10892995919.html">プログラマがプログラミング以外にしていること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10913575286.html">規模の大きなプロジェクト運営で気をつけたいこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10858007060.html">5年目のエンジニアと話してアドバイスしたこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10609422859.html">システム屋が非システム屋と話すときに留意すること</a>
 </p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11156595661.html</link>  
      <pubDate>Mon, 06 Feb 2012 00:21:37 +0900</pubDate> 
    </item>  
    <item>
      <title><![CDATA[PR: 《アプリ開発》エンジニア募集]]></title>
      <link>http://rss.rssad.jp/rss/ad/F4lXObcE89kB/Cje7va0u4wpo?type=2&amp;ent=849029a2b028f5d272740093209cabd7</link>
      <description><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/F4lXObcE89kB/Cje7va0u4wpo?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/F4lXObcE89kB/Cje7va0u4wpo?type=2&ent=849029a2b028f5d272740093209cabd7"/></a></td></tr><tr><td align="left" valign="top" > エンジニアの９割が元事務系SE・PG！注目企業「gloops」のエンジニア求人 </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div><img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/ibfeed/F4lXObcE89kB/Cje7va0u4wpo"/>]]></description>
      <pubDate>Mon, 06 Feb 2012 00:21:37 +0900</pubDate>
    </item>
    <item> 
      <title>部下ができたプログラマーのもどかしさ</title>  
      <description><![CDATA[<p>
 <p>今の会社には、世間一般の役職のような概念がないのでちゃんと部下と呼べないのかもしれませんが 、チームの中で一緒に働く下の子達がいて、その子に色々仕事を頼んだりするわけです。</p>
<p>勝手な想像としては、「○○くん、これを頼む」って言えば後は勝手に仕事が進むようなイメージを持ってたりもしたんですが、この状況は状況で別でやる事も増え、 返ってもどかしさが募るもんだなと感じたりします。</p>
<br />
<br />
<div class="contents_sub_title"><h3>現場を一歩離れる任せるもどかしさ</h3>
</div>
<br />
<p>そのもどかしさの一つが 、<strong>自分がやった方が早いという気持ちを抑える</strong>というものだったりします。</p>
<p>自分が下の立場だった時に上司も感じていたことなんでしょうけど、やはり何かとつたない感じで仕事をしているのを見ると、自分がやればすぐに終わる事でも想定以上の時間がかかり、何でこんなやり方してんだろって気持ちにもなります。</p>
<p>エンジニアの仕事柄、色んな技術やツールや手法があるわけですけど、そういったものって経験が優位に働くことも多いので、回りくどいやり方をしているのを見ると「それ、○○でできるよ」といちいちツッコミたくなるもどかしさがでてきます。</p>
<br />
<p>ただ、その気持ちを優先させて何でもやってしまうと、部下に経験を積ませる事もできませんし、自分も本来違う事をやる為に仕事を振ってるわけで、その本来やるべき事に注力できないという事態に陥ります。<br />
部下に任せる許容力が必要ですし、 何かあった際に責任をとる覚悟も必要でしょう。<br />
<br />
もう一つは、<strong>現場から離れるもどかしさ</strong>です。<br />
自分がやった方が早いというのは、どこかしらその現場に固執してる自分がいたりして、今までや自負みたいなものもあったりして捨てきれない気持ちがあります。</p>
<p>こういったもどかしさは、現場を離れて間もないうちなのかもしれません。<br />
現場での仕事がまだ頭から離れてないから、そういったもどかしさが募るわけで、もう頭の片隅からも消えたって状態になれば、部下がやってる内容を理解できず、一歩下がってスケジュールとタスク管理を淡々とこなせるのかなと。<br />
<br />
まぁ、その<strong>現場を理解できるというのは、何かあったら自分で責任取れるって強みにもなる</strong>と思います。<br />
なので、余計に強みがあるのに発揮できないもどかしさと、現場を忘れていくことへのもどかしさが複雑に絡まってくるのかなとも思います。</p>
<br />
<br />
<div class="contents_sub_title"><h3>部下に頼む仕事、自分がする仕事</h3>
</div>
<br />
<p>部下に仕事を頼めば時間に余裕ができ、随分と仕事も楽になるだろうなと思ってたりもしましたが、実際のところそこまで楽にはなりません。</p>
<p>部下がする仕事をマネジメントするのに時間がかかりますし、部下がした仕事をチェックする時間も必ず必要になりますので、<strong>100の仕事を割り当ててもそのうちの3割ぐらいは自分が担当する事になる</strong>のではないかと思います。 </p>
<p><br />
実際、タスクの量は同じでも処理する時間が違うため、これまた自分がやった方が早いとなるかもしれません。</p>
<p>下の子が書いたコードをレビューすることもあるでしょうし、その過程で指摘したことを積み上げると、自分で書いたのと変わらないじゃんという気持ちにもなったりするわけです。</p>
<p><br />
まぁ、それが上司の仕事なわけではありますが、部下は一人ではなかったりして、自分の時間が結構細切れに削り取られます。<br />
そういうのをなくす為には仕事を丸投げするしかないのかなと。<br />
ただ、自分が楽するだけでなく部下も与えられた範囲が多くなれば責任を感じたりもしますし、たまには丸投げも必要なんじゃないかなと思ったりします。<br />
もちろん、<strong>何かあった際の責任はとる覚悟は必要になってくるので、現場と一定の距離を置くとはいえ、そこでの知識や技能というのは常に持っていないといけない</strong>と感じます。</p>
<br />
<p>このあたりのことは、現場での最新技術についていけなくても、長年の現場の感って結構当たったりして、なんとなく何が悪いのかとか、どう直せばよいのかとかの気付きが得られたりもするものです。</p>
<p>ただ、何時までも同じコードを書くようなことには興味が薄れてきたりして、アーキテクチャやシステムデザインやら別のところへ移っていったりもしますので、同じレベルで仕事は出来ないなとも思ったりします。</p>
<p><br />
結局、部下が出来ても周りに気を使いながら自分の仕事をこなしていく起用さが必要になってきます。<br />
それはやっぱり仕事が楽にはならないわけで、ただ本来の仕事とは関係ないところで忙しくなってるわけですよね。<br />
上司だろってことで、本来のミッションとは違うところで時間が取られことが多くなるなと感じています。 <br />
</p>
<br />
<br />
<div class="contents_sub_title"><h3>まとめ</h3>
</div>
<br />
<p>エンジニアの35歳定年説とかを信じているわけではないですが、実際にそんな立場の変化によって、効率的に人を育てながらもエンジニアとして生き残っていくための術を身につけていく必要があるなと感じたりしています。</p>
最終的には、部下を育て上げて自分より現場が理解できる人が出てくれば自分の仕事も楽にはなるでしょうし、違ったミッションをこなしていくことが出来たりもします。 <br />
<br />
<p>優秀な部下が育つことはうれしいことですが、それはそれで現場から自分の必要性が失われるので寂しいとともに、競争による努力をよりいっそうする必要も出てきます。</p>
<p>そのためにも、もどかしさはあるもののそんな中でも一定の現場での空気感には触れておいた方がいいんでしょうね。</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=877921145" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=877921145" width="1" height="1" />エンジニアに特化！エンジニア専門の転職支援は「メイテックネクスト」</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=877098232" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=877098232" width="1" height="1" />光ファイバー/ADSLを楽しむなら「安心」「安全」の@nifty！</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=876795993" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=876795993" width="1" height="1" />ビジネスホテル予約サイト [Yahoo!ビジネストラベル]</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11156595661.html">クラウド時代のエンジニアの活きる道</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11097986022.html">サービス構築の実行コストは構築側より提案側のほうが上回ってるんじゃないかって話</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11054195882.html">「イエス」から始める</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10858007060.html">5年目のエンジニアと話してアドバイスしたこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10960021804.html">エンジニアを育てるということへのジレンマ</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10892995919.html">プログラマがプログラミング以外にしていること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10803767313.html">何でも屋であることの強みと危うさ</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10609422859.html">システム屋が非システム屋と話すときに留意すること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11126602208.html">30代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10908385104.html">9割がバイトでも最高のスタッフに育つ ディズニーの教え方</a>
 </p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11138750697.html</link>  
      <pubDate>Wed, 18 Jan 2012 00:25:39 +0900</pubDate> 
    </item>  
    <item> 
      <title>30代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則</title>  
      <description><![CDATA[<p>
 <dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=18386581" alt0="BlogAffiliate" target="_blank" rel="nofollow">30代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則/大塚寿<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/41F8pxugpIL._SL160_.jpg" /></a>
 </dt>
<dd style="MARGIN: 0px">￥1,500</dd>
<dd style="MARGIN: 0px">Amazon.co.jp</dd>
</dl>
<p><br />
2012年になり、「自分今年の誕生日迎えたら四捨五入して40歳になるんだ」とか思ったら急に焦燥感が生まれたりしまして、そんなときにふと本屋で目に留まった本です。</p>
<p>昨年結婚して急にプライベートでも時間も取れなくなってきたり、仕事ではやはり自分がやりたいことをやるというよりは部下をマネジメントしたり成長させる方向に仕事も向きだして、30代中盤になりこんな状態で本当にいいのかなという不安はやはり付きまとうものです。</p>
<br />
<p>30代も今年入れて残り6年となるわけですが、やはり今のペースのままで行くよりはしっかりと人生設計を立てなくてはいけないんだなとこの本を通して改めて思ったりもしました。</p>
<p>この本に書かれていることは、著者の経験だけでなく多くの人からヒアリングした30代の後悔というものが描かれています。</p>
<p>人生は一度きりであり、誰の生まれ変わりであろうと前の記憶というものを引き継ぐことは出来ません。</p>
<p>つまりは、<strong>誰しもが同じ間違いを身をもって味わうことでしか理解できないわけで、やはり他人の教訓というものは重く受け止めるべきなんだ</strong>なと感じたりします。</p>
<br />
<p>ここに書かれていることは、30代半ばになった自分もよく感じることも多々あります。</p>
<p>本の内容は「<a href="http://ameblo.jp/itboy/entry-10800316156.html">20歳のときに知っておきたかったこと</a>
 」に書いてある内容と近いものがありますが、より30代の現実というものにテーマを絞り込んだ内容になっています。</p>
<p>それをどう解決するかのアドバイスも含めて年初に味わった焦燥感を少しは軽減できたと感じます。</p>
<p><strong>人の後悔というのは、他人と比較してうまれたりするのだと思いますが、人間は経験しないとなかなかわからないもので、後悔をしないためにはそれを感じた人のアドバイスを受けて自分の人生を調整していくしかない</strong>のだと思います。</p>
<br />
<p>20代では何も考えず我武者羅に目の前にあることをこなしていくことで手一杯にもなっていたり、そもそもそんな不安さえも頭をよぎりませんでした。</p>
<p>しかし、歳を取っていくと時間は恐ろしいほど早く経過していくように感じますし、やはり後悔をせずに人生を終えたいという気持ちも強くなります。</p>
<p><strong>人生のテーマなんてそのうち見つかるだろうと思っていても、実際に30代になっても漠然とした自分の進む道が見えはするものの、本当にそれは自分がしたいことだったのだろうか？ただレールを歩いていたから今にたどり着いただけじゃないのか？って懐疑的になったり</strong>もします。</p>
<br />
<p>30代だけでなく、20代の人もぜひ読んで欲しいと思います。</p>
<p>今はそんなことは考えられないといっても、そのうち考えざるを得なくもなってくるものです。</p>
<p>早めにその種を自分の頭の中に植えつけておくことで、来るべき時にもっと柔軟に対応が出来るかもしれません。</p>
<br />
<p>ちなみに、著者は</p>
<dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=18386580" alt0="BlogAffiliate" target="_blank" rel="nofollow">40代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則/大塚　寿<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/41fdn5Hs4fL._SL160_.jpg" /></a>
</dt>
<dd style="MARGIN: 0px">￥1,500</dd>
<dd style="MARGIN: 0px">Amazon.co.jp</dd>
</dl>
<p><br />
という本も出しているようです。</p>
<br />
<div class="contents_sub_title"><h3>目次</h3>
</div>
<br />
<pre class="view_quote">第1章 この10年で何よりも大切にしたいこと
1  「自分のテーマ」が見つからなかった
2  「リアル人生設計」を描けなかった
3  憧れの理想像を持てなかった
4  誰と付き合うか真剣に考えるべきだった
5  「稼ぐ力」を身につけたかった
6  真面目だけではうまくいかなかった
7  もっと多くの人と出会っておけばよかった
8  失敗から真剣に学ぶべきだった
9  「良い習慣」を身につければよかった
10 偶然と上手に付き合うべきだった

第2章 プロフェッショナルとして絶対に必要なこと
11 コミュニケーション能力を高める努力をすればよかった
12 人前で話せるスキルを身につければよかった
13 「雑談力」を身につけたかった
14 会社や上司の「本音」を慮るべきだった
15 「段取り」のスキルを身につければよかった
16 チャンスにすぐ対応すればよかった
17 組織の中で「自分」を貫けなかった
18 「正しい努力」ができなかった
19 仕事とプライベートを線引きしなければよかった
20 大量行動ができなかった
21 「自分時間」を確保できなかった
22 「年収を上げる努力」をしていなかった

第3章 人生を左右する決断について知っておくべきこと
23 転職すればよかった
24 起業すればよかった
25 結局、「好き」を仕事にできなかった
26 家を買えばよかった
27 人生をともに過ごす仲間が見つからなかった
28 結婚すればよかった
29 結婚しなければよかった
30 一人で生きることを選んでしまった

第4章 「仕事以外」で必ず考えておくべきこと
31 「二つ以上の世界」を持っておけばよかった
32 体を鍛えておけばよかった
33 「大人の遊び」を知っておけばよかった
34 自分を磨くべきだった
35 気づいたらサラリーマンのレールの上を走っていた
36 もっと海外旅行に行けばよかった
37 忙しくても家事をもっとやればよかった
38 もっと子育てに参加すればよかった
39 子供の「叱り方」を学べばよかった

第5章 「お金のこと」で知っておくべきこと
40 お金を貯めるクセをつけておくべきだった
41 税金についてもっと勉強しておくべきだった
42 「生き金」は使うべきだった
43 お金に対する「自分のルール」をしっかり持つべきだった
44 家の買い方をもっと工夫するべきだった

第6章 揺れ動く心を支えるためにやっておくこと
45 利他の心を持つべきだった
46 他人の意見を聞くべきだった
47 自分が年をとることをもっと真剣に意識するべきだった
48 無意識に好奇心が衰えてしまった
49 「打たれ強さ」を身につければよかった
50 世間を意識しすぎた</pre>
<br />
<br />
<div class="contents_rel_link">
<p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-10800316156.html">20歳のときに知っておきたかったこと</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11126252223.html">イシューからはじめよ―知的生産の「シンプルな本質」</a>
<br />
<br />
<a href="http://ameblo.jp/itboy/entry-10908385104.html">9割がバイトでも最高のスタッフに育つ ディズニーの教え方</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10980085708.html">ドラッカー 時代を超える言葉―洞察力を鍛える160の英知</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10190283339.html">プロフェッショナルの条件</a>
</p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11126602208.html</link>  
      <pubDate>Wed, 04 Jan 2012 19:52:28 +0900</pubDate> 
    </item>  
    <item> 
      <title>イシューからはじめよ―知的生産の「シンプルな本質」</title>  
      <description><![CDATA[<p>
 <dl><dt><a href="http://click.affiliate.ameba.jp/affiliate.do?affiliateId=18381340" alt0="BlogAffiliate" target="_blank" rel="nofollow">イシューからはじめよ―知的生産の「シンプルな本質」/安宅和人<br />
<img border="0" src="http://ecx.images-amazon.com/images/I/41iUErzQk8L._SL160_.jpg" /></a>
 </dt>
<dd style="MARGIN: 0px">￥1,890</dd>
<dd style="MARGIN: 0px">Amazon.co.jp</dd>
</dl>
<br />
<p>あけましておめでとうございます。</p>
<p>11年のまとめも書いてないんですが、12年もゆったりと活動を開始していきたいと思います。</p>
<p>本年も本ブログの記事が何かお役に立てれば幸いです。</p>
<br />
<p>ということで、12年最初の記事は書評からスタートしたいと思いますが、この本自体は11年の積読してた本でありまして、帰省中に読んだものであります・・・。</p>
<p>この「イシューからはじめよ」は、私たちが仕事の中で取り組む目的や課題をよりはっきりさせ、意味のある成果をあげるための考え方やフローをまとめたものになっています。</p>
<br />
<p><strong>仕事をしていると色んなプロジェクトや資料作成を行ったりしていますが、途中で「何のためにこれをやっているんだっけ？」とか、当初の目的から方向性がずれだして取り合えず与えられた成果物を作ることだけが目的になっているということはよくあったり</strong>します。</p>
<p>プロジェクトの方向転換とかはよくあることでそれは特に問題ないとは思いますが、そもそもの目的設定が間違っていたり、意外と自分たちで「この目的設定は間違えていない」と思っていても視点を変えてみるとそれは全然必要ないことだったりで、プロジェクトが達成した翌年には別の課題が持ち上がってその解決に向けて別のプロジェクトが立ち上がるということもあったりします。</p>
<br />
<p>要は<strong>最初の課題の捕らえ方、目的の設定やそれを解決するためのフローがそもそも間違えている</strong>ということがあるわけです。</p>
<p>この本では、本当に価値ある仕事をするためにその「価値ある仕事」をどうやって見つけていくか、それを達成するためのフローが描かれています。</p>
<p>「数をこなしていけば真価にたどり着く」という発想は止めようということも書かれていたりして、自分の仕事のやり方に対してドキッとさせられたりもするんですが、なかなか本当に解決すべき問題というのを見つけ出すのは難しいものです。</p>
<br />
<p>よく上司から「こういう課題があがっている」ということを聞いたりして、それを解決するための施策が立ち上がったりしますけど、これって全然問題解決になってなかったりもするわけです。</p>
<p>その上司の課題設定が間違っていたら、先に書いたように別の課題が持ち上がったりもしますし、その上司もさらにその上の人から伝え聞いたことを伝言ゲームのように流してくることもあるわけで。</p>
<p>また、こういう仕事の進め方をしていたら、<strong>上下関係の権限の問題から課題の真価には何時まで経ってもたどり着かずに、お上が言うことを延々とこなしていくということにもなってしまうため、単なるインプットとしてその先に考えるべき問題って何があるんだろうというところ俯瞰的にみていく</strong>必要もあります。</p>
<br />
<p>今一度自分たちがやっている仕事の価値とは何か、達成すべき目的設定はどうあるべきかということを考えさせられる一冊でした。</p>
<br />
<br />
<div class="contents_sub_title"><h3>目次</h3>
</div>
<br />
<pre class="view_quote">第1章 イシュードリブン - 「解く」前に「見極める」
イシューを見極める
仮説を立てる
よいイシューの3条件
イシュー特定のための情報収集
イシュー特定の5つのアプローチ

第2章 仮説ドリブン1 - イシューを分解し、ストーリーラインを組み立てる
イシュー分析とは何か
イシューを分解する
ストーリーラインを組み立てる

第3章 仮説ドリブン2 - ストーリーを絵コンテにする
絵コンテとは何か
軸を整理する
イメージを具体化する
方法を明示する

第4章 アウトプットドリブン - 実際の分析を進める
アウトプットを生み出すとは
トラブルをさばく
軽快に答えを出す

第5章 メッセージドリブン - 「伝えるもの」をまとめる
「本質的」「シンプル」を実現する
ストーリーラインを磨き込む
チャートを磨き込む</pre>
<br />
<br />
<div class="contents_rel_link">
<p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-10418013001.html">ロジカル・シンキング―論理的な思考と構成のスキル</a>
<br />
<br />
<a href="http://ameblo.jp/itboy/entry-10980085708.html">ドラッカー 時代を超える言葉―洞察力を鍛える160の英知</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10190283339.html">プロフェッショナルの条件</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10423216247.html">小飼弾の「仕組み」進化論</a></p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11126252223.html</link>  
      <pubDate>Wed, 04 Jan 2012 11:57:23 +0900</pubDate> 
    </item>  
    <item>
      <title><![CDATA[PR: あなたの「今年こそ」を応援！日経Ｗプラン「初割」]]></title>
      <link>http://rss.rssad.jp/rss/ad/F4lXObcE89kB/FGw4kTrn_sp.?type=2&amp;ent=c041b077410e59ca7ebe7987bcefedb4</link>
      <description><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/F4lXObcE89kB/FGw4kTrn_sp.?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/F4lXObcE89kB/FGw4kTrn_sp.?type=3&ent=c041b077410e59ca7ebe7987bcefedb4"/></a></td></tr><tr><td align="left" valign="top" > 今月中に日経Ｗプランにお申し込みいただくと１月に加えて２月末まで電子版が無料！ </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></description>
      <pubDate>Wed, 04 Jan 2012 11:57:23 +0900</pubDate>
    </item>
    <item> 
      <title>[PHP] 余計なHTMLタグや属性を消してくれるHTML Purifier</title>  
      <description><![CDATA[<p>
 <p>HTMLタグをそのままユーザーに入力させ、それを正しい形で利用したいというケースは少ないかもしれませんが、ブログシステムやそれに似通った機能をユーザーに提供したい場合、その中から不正なHTMLタグをチェックするロジックを作ることは結構大変なことです。</p>
<p>こういったケースでは、<a href="http://htmlpurifier.org/" target="_blank">HTML Purifier</a>
 を使えば比較的容易に安全にHTMLタグを扱えるようになります。</p>
<br />
<p>OSSのブログシステム用プログラムとして有名な<a href="http://ja.wordpress.org/" target="_blank">Wordpress</a>
 も、HTMLタグのフィルタとしてHTML Purifierを利用しているようです。</p>
<p>Wordpressを使ってなくても、例えば「<a href="http://ameblo.jp/itboy/entry-10533294952.html">高機能でカスタマイズも容易なWYSIWYGエディタ [CKEditor]</a>
 」で書いたような独自の入力フォーム用のブログシステムを作りたいといったケースでも適用できるかもしれません。</p>
<br />
<br />
<div class="contents_sub_title"><h3>HTML Purifierの使い方</h3>
</div>
<br />
<p>HTML Purifierのインストール方法は何種類か用意されており、PEARからインストールすることや、ソースプログラムをダウンロードして適当なディレクトリに保存すること、gitからインストールするというパターンなどがあります。</p>
<p>ここでは、簡単に導入できるPEARを使うパターンで書いています。</p>
<br />
<pre class="view_program brush:plain;"># pear channel-discover htmlpurifier.org
# pear install hp/HTMLPurifier</pre>
<br />
<p>上記のようにインストールすると、PEARのディレクトリ内にHTML Purifierのプログラムが展開されます。</p>
<p>HTML Purifierの利用は、下記のように使います。</p>
<br />
<pre class="view_program brush:php;" title="HTML Purifierの使い方">&lt;?php

require_once 'HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$config-&gt;set('Core.Encoding', 'UTF-8');
$config-&gt;set('Core.Language', 'ja');
$config-&gt;set('HTML.AllowedElements', array('a', 'em', 'p', 'h2', 'span', 'br'));

echo $hp-&gt;purify($_POST['data'];</pre>
<p><br />
上記は、dataというパラメータで送られてきた値をHTML Purifierで処理しています。</p>
<p>基本的には、許可したいタグや動作をConfigオプションで指定し、処理させる変数に対して最後にpurify()メソッドを通すことで余計なタグを除去したりすることが出来ます。</p>
<br />
<p>HTML.AllowedElementsでは、入力を許可したいHTMLタグを指定します。</p>
<p>上記の場合はアンカータグや改行タグは許可しますが、記述していないタグは全て取り除かれます。<br />
<br />
</p>
<pre class="view_program brush:html" title="ユーザーの入力したHTMLタグ">&lt;h3&gt;foo&lt;/h3&gt;&lt;br /&gt;
&lt;span&gt;bar&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;hoge&lt;/div&gt;&lt;br /&gt;</pre>
<p><br />
上記のようなタグをユーザーが入力した場合、下記のように変換されます。 </p>
<br />
<pre class="view_program brush:html" title="HTML Purifire処理後のHTMLタグ">foo&lt;br /&gt;
&lt;span&gt;bar&lt;/span&gt;&lt;br /&gt;
hoge&lt;br /&gt;</pre>
<br />
h3やdivタグは許可するタグのリストに加えていないので全て除去されています。<br />
<br />
<br />
<div class="contents_sub_title"><h3>HTML Purifierを応用して独自のフィルタを作る</h3>
</div>
<br />
<p>使い方の基本系は、先に書いた例のようにConfigオプションを指定して、許可したいタグや属性を決めていきます。</p>
<p><a href="http://htmlpurifier.org/live/configdoc/plain.html" target="_blank">指定できるオプション</a>
 はかなり多いので、マニュアルも参照してみてください。</p>
<p>以下、よく使いそうなものから幾つかピックアップして解説します。</p>
<br />
<p><strong>・不許可にしたいHTMLタグを指定する</strong></p>
<br />
<p>HTML.AllowedElementsでは、ホワイトリスト方式で許可するHTMLタグを指定しましたが、HTML.ForbiddenElementsを使えば、その逆のブラックリスト方式で不許可にするHTMLタグを指定できます。</p>
<p>HTML.AllowedElementsを使わない場合でも、scriptタグやembedタグなど動作に問題がありそうなタグは一通り除去してくれたりします。</p>
<p>ここに許可するHTMLタグをリストアップするのが大変な場合は、こちらを使った方が楽に指定できます。</p>
<br />
<pre class="view_program brush:php;" title="table関連タグを禁止したい場合">$config-&gt;set('HTML.ForbiddenElements', array('table', 'tr', 'td', 'tbody'));</pre>
<p><br />
<strong>・特定のドメインへのリンクを禁止する</strong></p>
<br />
<p>問題のあるサイトへのリンクを作らせたくない場合は、下記のようにブラックリストのドメインを指定することができます。</p>
<br />
<pre class="view_program brush:php;">$config-&gt;set('URI.HostBlacklist', array('example.com'));</pre>
<br />
<p>処理例は、下記のようになります。</p>
<br />
<pre class="view_program brush:html;">&lt;a href=&quot;http://www.example.com&quot;&gt;こちらへ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.example.co.jp&quot;&gt;こちらへ&lt;/a&gt;</pre>
<p><br />
上記のHTMLタグが入力された場合、禁止しているexample.comの方のアンカータグが無効化されます。</p>
<p>一方、example.co.jpドメインは禁止していないのでそのまま通ります。</p>
<br />
<pre class="view_program brush:html">&lt;a&gt;こちらへ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.example.co.jp&quot;&gt;こちらへ&lt;/a&gt;</pre>
<p><br />
<strong>・リンク（アンカータグの使用）を禁止する</strong></p>
<br />
<p>こちらは、もう少し厳しくなりHTMLタグ内にアンカータグを使わせたくないという場合です。</p>
<br />
<pre class="view_program brush:php;">$config-&gt;set('URI.Disable', true);</pre>
<p><br />
結果は、URI.HostBlacklistを使った場合と同様に、アンカータグが無効化されます。</p>
<p><br />
<strong>・リンクのターゲットを限定する</strong></p>
<br />
<p>アンカータグ内で指定できるtarget属性を限定させるということも出来ます。</p>
<p>下記の場合は、targetに「_self」と「_top」しか指定できません。</p>
<br />
<pre class="view_program brush:php;">$config-&gt;set('Attr.AllowedFrameTargets', array('_self','_top'));</pre>
<br />
<p>例えば、新しいウィンドウを開く「_blank」を指定するとその属性値が丸ごと削除されます。</p>
<br />
<pre class="view_program brush:html;">&lt;a href=&quot;http://www.example.com&quot; target=&quot;_blank&quot;&gt;こちらへ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.example.co.jp&quot; target=&quot;_top&quot;&gt;こちらへ&lt;/a&gt;</pre>
<p><br />
以下のように、アンカータグは使えますがtarget属性が削除されています。</p>
<br />
<pre class="view_program brush:html;">&lt;a href=&quot;http://www.example.com&quot;&gt;こちらへ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.example.co.jp&quot;&gt;こちらへ&lt;/a&gt;</pre>
<p><br />
<strong>・指定できるクラス名を限定する</strong></p>
<br />
<p>例えば予め適用できるCSSがあり、そこに定義されているクラス以外を指定させたくないということも出来たりします。</p>
<br />
<pre class="view_program brush:php;">$config-&gt;set('Attr.AllowedClasses', array('foo', 'test'));</pre>
<p><br />
上記の場合は、class属性にfooとtestしか指定できません。</p>
<p>これ以外のクラス名を指定した場合は、class属性から削除されます。</p>
<br />
<p><strong>・要素と属性の組み合わせを限定する</strong></p>
<br />
<p>より厳密に利用できる要素と属性の組み合わせを指定したい場合は、HTML.AllowedAttributesを利用します。</p>
<br />
<pre class="view_program brush:php;">$config-&gt;set('HTML.AllowedAttributes', array('span.style', 'a.href', 'p.id' ,'div.class'));</pre>
<p><br />
上記の場合は、spanタグにはstyle属性を、aタグにはhref属性を、pタグにはid属性を、divタグにはclassタグを指定できますが、これ以外の組み合わせは利用できません。</p>
<br />
<pre class="view_program brush:html;">&lt;span class=&quot;foo&quot; style=&quot;color:#FF0000&quot;&gt;test&lt;/span&gt;
&lt;div class=&quot;bar&quot;&gt;hoge&lt;/div&gt;
&lt;p class=&quot;bar&quot;&gt;fuga&lt;/p&gt;</pre>
<br />
<p>上記のように入力された場合、HTML Purifierで処理後は下記のように変換されます。</p>
<br />
<pre class="view_program brush:html;">&lt;span style=&quot;color:#FF0000;&quot;&gt;test&lt;/span&gt;
&lt;div class=&quot;bar&quot;&gt;hoge&lt;/div&gt;
&lt;p&gt;fuga&lt;/p&gt;</pre>
<p><br />
spanとpタグの中ではclass属性は使えないので削除され、divタグは組み合わせが正しいのでclass属性を指定できています。</p>
<br />
<br />
<p>紹介できたのは本の一例なんですが、組み合わせ方ではかなり強力なHTMLタグのフィルタを書く事が出来るかと思います。</p>
<p>HTMLタグをそのままユーザーに入力させたいけど、セキュリティを考慮したら利用を一部制限したい、というようなケースにうまく使えるかもしれません。</p>
<br />
<div class="contents_pr">
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=878309158" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=878309158" height="1" width="1" border="0">お名前.comのホームページ作成ツール★誰でも簡単にWebクリエイターに</a>
<br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=880349766" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=880349766" height="1" width="1" border="0">Windows&nbsp;から&nbsp;Mac&nbsp;への引っ越しツール！</a>
<br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=877098232" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=877098232" height="1" width="1" border="0">光ファイバー/ADSLを楽しむなら「安心」「安全」の@nifty！</a>
</div>
<br />
<div class="contents_rel_link">
<p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11030523105.html">ノンプログラミングでも利用可能！PHPで多様なグラフを作れるpChart</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10701565030.html">PHP_CodeSnifferでコーディング規約に準拠しているかチェックをする</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10348052193.html">[PEAR] オリジナルのWikiエンジンを作れるText_Wiki</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10352912074.html">[PEAR] Text_Wiki_Mediawikiを使ってみる</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10521514570.html">PHPのプログラムをデーモンとして動かしてくれるPEAR::System_Daemon</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10911763553.html">JavaScriptからPHPの関数呼び出し</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10985322030.html">ApacheのプロセスがどのPHPプログラムの処理をしているか調べる方法</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10996769094.html">不要なApacheやPHPの拡張モジュールを削除するとどれくらい効果があるか調べてみる</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10557903887.html">PHPでブラウザのキャッシュを利用させる検証</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10515419822.html">cURLを使ってHTTPクライアントプログラムを作る</a>
</p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11110819159.html</link>  
      <pubDate>Fri, 23 Dec 2011 00:21:35 +0900</pubDate> 
    </item>  
    <item> 
      <title>サービス構築の実行コストは構築側より提案側のほうが上回ってるんじゃないかって話</title>  
      <description><![CDATA[<p>
 <p>一昔前ならシステム構築の手間って膨大な時間と労力をつぎ込んで作るものってイメージがありました。</p>
<p>例えちょっとした機能変更でさえも、開発側の担当者は「それは多くの機能に影響を与えるからかなり時間がかかる」とか何かと理由を付けて拒む姿勢もよく見かけました。</p>
<p>まぁ、これは担当者が面倒くさがっていたり、品質や納期の観点からこの時期にその要求を受け入れるリスクを嫌っていってたのかもしれません。</p>
<br />
<p>しかし、今ではその労力というのはだいぶ軽減されてきています。</p>
<p>もちろん要件の規模によりますけど、その一部の機能を構築するのにも昔に比べたらはるかに楽になっているでしょう。</p>
<p>技術の標準化や多様なライブラリ、ネット上に発信される多くのノウハウ、IDEなど開発環境の進化などその理由は多々ありますが、そういった開発コストの低下の中で思うのは、<strong>システムを構築する手間っていうのはもはや構築をする側より仕様を決める側の方が大きく、ボトルネックってむしろ提案側になってしまっている</strong>のではないかと感じたりもします。</p>
<br />
<br />
<div class="contents_sub_title"><h3>開発プロセスとボトルネックが発生する場所の変化</h3>
</div>
<br />
<p>この話はもちろん「一般的な」って枕詞が付くので、世の中にない先進的なサービスを作ろうとした場合は、その限りではありません。</p>
<p>まぁ、世の中にない先進的なサービスってのは多くは、それを生み出す技術が根幹にあったりして、そういうのって提案側と構築側が一緒になってたりもするのですが、ボトルネックが発生する場所としては同じかもしれませんけど。</p>
<br />
<p>要は、こういった問題を解決するためのサービスを提供し、その仕様としてこういうシステムを作りたいってのがあった場合に、その要求を取りまとめる側の方が今や多くの時間がかかったりします。</p>
<p>これは、別に今に始まったことではありません。</p>
<p>ただ、<strong>昔のようにウォータフォールモデルのシステム開発手法を主としていた頃には、要件定義に多くの時間を割くものの、それが終わってしまえば後は製作をスケジュールどおりに進めていくというスタイルのため、要件定義の遅れは製作全体がシフトするということで済みましたが（プロジェクトとしては済みませんけど）、今や製作にかかる時間が短縮され、機能構築をスパイラルに進めていくようなやり方を取ることが多くなってきた中で、要求が出てこないというのは、個々の製作が始まっているため、問題が大きくなりがち</strong>です。</p>
<br />
<p>機能ごとに要件決めとその構築を短い期間でまわしていくことになると、そのイテレーションの中では、都度提案側から要求を貰うことになりますが、提案側から出てくる要求というのは、構築期間より長く時間がかかることが多くあります。</p>
<p>元々、要件定義自体は開発プロセスに関わらず多くの時間が費やされます。</p>
<p>要求そのものを取りまとめることになるので当然なのですが、<strong>開発プロセスの変化に要求をまとめるプロセスが追いつけてない事は多い</strong>のではないでしょうか。</p>
<br />
<p>この要求をまとめるプロセスというのは、業務プロセスをモデル化するということもそうですし、具体的にITを頼って何をしたいのかという目的設定もそうですし、じゃあそのシステムっていうのはどういったもので、誰がどんなシーンで利用するものなのかっていうのもそうです。</p>
<p>業務プロセスをモデル化するってのは、過大や要求からシステム部門が作業を請け負うことも出来るでしょうが、もっと根本的な目的設定とかどんなシステムやサービスを作りたいのかってイメージが頭の中に思い描けてなかったりするのは、開発プロセス上では結構大きな問題だったりします。</p>
<br />
<br />
<div class="contents_sub_title"><h3>提案要求をまとめるときに気をつけたいこと</h3>
</div>
<br />
<p>IT自体がコモディティ化した今は、それを取り扱う人は専門家だけではありません。</p>
<p>人事や総務などの管理部門にいる人や、そのサービスを望んでいるが技術には全く詳しくないという人まで、「こういったものを作りたい」という漠然としたイメージしか持ってない人が提案側のメンバーとして入っています。</p>
<br />
<p>提案書の中には、たどたどしい感じで画面設計や状態遷移や機能要件などが盛り込まれていますが、実際それを具体的に頭の中でイメージできているのは、あまりいないのではないでしょうか。</p>
<p>要は、<strong>実際に動かしてみないとわからない、という人が多い</strong>ということです。</p>
<p>あとは、体制の話で「取り合えずチームで検討します」と言って決定までに1週間かかるとか。</p>
<br />
<p>こういった状況に追い込まれないためにも、提案側との要件決めには幾つか留意しておくことがあります。</p>
<br />
<p><strong>・ 何を解決したい（作りたい）のかということを双方ちゃんと理解する</strong></p>
<br />
<p>提案側から出された要求書は大体システムありきで書かれていて、それがなんの役に立つのかってことが頭の中から飛んでたりもします。</p>
<p>一昔前なら開発側で偏った思考によって起きる問題が今や提案側で起きてたりもします。</p>
<br />
<p><strong>・ 最低限作りたいものは何なのかを理解しておく</strong></p>
<br />
<p>提案側は、色んな機能を詰め込みたがりますが、それによって何時までもリリースできないプロジェクトを続けたり、時間がかかることで当初の目的がずれてくることもあるので、最低限何を実現してそのためにどんな機能が必要なのかをちゃんとヒアリングしておいた方がよいです。</p>
<p>もしそれが出来たなら、その時点で一旦リリースしてしまうということで、運用を開始することで得るものも数多くあったりします。</p>
<br />
<p><strong>・ 提案された設計はゼロベースで考え直す</strong></p>
<br />
<p>一旦向こうから提案された画面イメージとかは忘れて考え直すのも視野に入れてた方が良かったりします。</p>
<p>目的設定がずれていたら、何も解決しないシステムを作るだけになってしまいますので。</p>
<br />
<p><strong>・ 共有イメージを持っておく</strong></p>
<br />
<p>今や似たようなサービスというのは数多く存在するので、事前に「このサイトみたいなレイアウトですかね？」とか、この機能というのは「このサイトのこの部分のようなイメージですか？」ってことを共有しておくと楽になります。</p>
<p><br />
<strong>・ なるべく早く動くものを共有しておく</strong></p>
<br />
<p>提案側にある漠然としたイメージをより具体化するためにも、早めに動くものを見せておいた方がよいでしょう。</p>
<p>これは、裏側が張りぼての機能がない状態でも問題ありません。</p>
<p>気にされるのはだいたい画面上のUIであり、裏側の状態遷移やロジックというのは気にされません。（というか「そこは良いようにやってよ」ってまかせっきりになってたりもしますので）</p>
<br />
<p><strong>・ 決定権を持つ人を巻き込んでおく</strong></p>
<br />
<p>ボトルネックになるのが偉い人へのお伺いだったりするので、予めそういった決定権を持つ人も巻き込んでシステムレビューを進めた方が話が早かったりします。</p>
<p>仕様の決定、製作、確認（確定）と製作の過程で間に2つの確認事項が含まれるのでそれに割かれる時間というのは馬鹿になりません。</p>
<br />
<p><strong>・ システム構築には時間がかかるという概念を払拭しておく</strong><br />
<br />
もちろん、全体を通しては長い時間がかかるプロジェクトにはなりますけど、先に書いたように機能一つ一つにかかる時間はそれほど多くはなくなってきています。</p>
<p>ボトルネックが提案側に移ってきているので、さっさと作って見せたところで仕様確認に時間がかかり、先に進めなくなる事態に陥ることも多々あります。</p>
<p>ある程度の目処を早めに伝え、提案側にタスク期限を明確にしておくことでボトルネックの解消につなげることもできるかもしれません。</p>
<br />
<br />
<div class="contents_sub_title"><h3>まとめ</h3>
</div>
<br />
<p>開発の主導者が変遷していく中で、それに適した開発プロセスというものも求められてきていますし、問題が発生するポイントも変化してきています。</p>
<p>サービスの構築は、システム担当者だけでということも行かない時代になってきていますし、それは別に面倒なことが増えたというよりは、より多くの可能性を広げているとも捉えられます。</p>
<br />
<p>ただ、構築が楽になったとは言っても話が二転三転されたりすると、納期だけでなく開発側にも大きなストレスとなりますので、提案側と構築側のギャップを埋めてうまく進めていく仕組みづくりというものにも気を使わないといけないと感じたりします。</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=880162006" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=880162006" width="1" height="1" />ビジネスの最前線で勝ち残るための必要な情報が凝縮　日経ビジネス</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=879480745" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=879480745" width="1" height="1" />集客にお困りの方は必見。Yahoo! JAPANが提案する集客アップの方法。</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=877861155" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=877861155" width="1" height="1" />【パソナの人材紹介】 パソナキャリアの転職情報、求人情報</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11156595661.html">クラウド時代のエンジニアの活きる道</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11054195882.html">「イエス」から始める</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10970843898.html">要件定義の段階でユーザーが反射的に「YES」と答える理由</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10892995919.html">プログラマがプログラミング以外にしていること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11026487613.html">形骸化しやすい運用プロセスとその設計</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10913575286.html">規模の大きなプロジェクト運営で気をつけたいこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10858007060.html">5年目のエンジニアと話してアドバイスしたこと</a>
 <br />
<br />
<a href="http://ameblo.jp/itboy/entry-10609422859.html">システム屋が非システム屋と話すときに留意すること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10617058758.html">運用の中で崩壊していくシステム</a>
 </p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11097986022.html</link>  
      <pubDate>Tue, 06 Dec 2011 00:55:07 +0900</pubDate> 
    </item>  
    <item> 
      <title>[お名前.com] Postfixによるメール送信・転送設定作業あれこれ</title>  
      <description><![CDATA[<p>
 <p>「<a href="http://ameblo.jp/itboy/entry-11066966355.html">[お名前.com] サービスを構築するまでに行ったサーバー設定作業もろもろ</a>
」の続き。</p>
<p>次は、メール関係の設定です。</p>
<p>Postfixを使ってSMTP-Authによるメール送信とメール転送設定を行います。<br />
<br />
</p>
<div class="contents_sub_title"><h3>メールサーバーの設定作業</h3>
</div>
<br />
<p><strong>・ 必要なパッケージのインストール</strong></p>
<br />
<p>メール送信には、Postfixを使います。</p>
<p>また、SMTP-Authに対応するためにcyrus系のパッケージを追加インストールします。</p>
<br />
<pre class="view_program brush:plain;"># yum install postfix.x86_64
# yum install cyrus-sasl-devel.x86_64
# yum install cyrus-sasl-plain.x86_64
# yum install cyrus-sasl-md5.x86_64</pre>
<br />
<p><strong>・ main.cfファイル編集</strong></p>
<br />
<p>メールを送信するためのPostfix設定作業を行います。</p>
<p>なお、メールのリレー先のサーバーなど、お名前.com用の設定が混じってます。</p>
<p>下記、詰めて編集箇所のみを書いてますので、実際の設定ファイル（/etc/postfix/main.cf）内から、適宜該当箇所を修正してください。</p>
<p>また、設定箇所が無い場合は追記します。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/postfix/main.cfの編集">myhostname = smtp.example.jp
mydomain = example.jp
myorigin = $myhostname
inet_interfaces = all
#inet_interfaces = localhost
mydestination = localhost.$mydomain, localhost, $myhostname
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/

#virtualmailbox setting
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:6001
virtual_gid_maps = static:1000
virtual_mailbox_domains = hash:/etc/postfix/virtual_domain_maps
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps

#smtpauth setting
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
   permit_sasl_authenticated,
   permit_mynetworks,
   reject_unauth_destination,
   reject_invalid_hostname,
   reject_non_fqdn_recipient,
   reject_non_fqdn_sender,
   reject_unknown_sender_domain,
   reject_unknown_recipient_domain,
   reject_unauth_pipelining
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd

#ssl
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_cert_file= /etc/pki/tls/certs/mail.pem
smtpd_tls_loglevel = 1
smtpd_tls_recived_header = yes
smtpd_tls_session_cache_timeout = 3600s
broken_sasl_auth_clients = yes

relayhost = [mailgw.vps.gmoserver.jp]</pre>
<p><br />
<strong>・ vmailユーザーの作成</strong></p>
<br />
<p>main.cfファイルの「#virtualmailbox setting」の項目で記載しているvmailユーザーを作成します。</p>
<p>なお、ユーザーIDとグループIDは予め指定して作成します。</p>
<br />
<pre class="view_program brush:plain;" title="vmailユーザーの作成"># groupadd -g 1000 vmail
# useradd -u 6001 -g 1000 -d /var/vmail -s /sbin/nologin vmail</pre>
<br />
<p><strong>・ virtual_alias_maps、virtual_domain_maps、virtual_mailbox_mapsファイルの作成</strong></p>
<br />
<p>main.cfファイルの「#virtualmailbox setting」の項目で記載しているvirtual_alias_maps、virtual_domain_maps、virtual_mailbox_mapsの3ファイルを作成します。</p>
<p>virtual_alias_mapsファイルでは、バーチャルユーザーのメールの転送設定（メールのエイリアス設定）を行います。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/postfix/virtual_alias_mapsファイルの作成">##### virtual email alias list #####
webmaster@example.jp itboy.org@gmail.com</pre>
<br />
<p>上記のように設定することで、<a href="mailto:webmaster@example.jp">webmaster@example.jp</a>
 宛のメールを別の個人のメールアドレスへ転送することができます。</p>
<br />
<p>virtual_domain_mapsファイルでは、バーチャルドメインのリストを記述しておきます。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/postfix/virtual_domain_mapsファイルの作成">##### virtual domain list #####
example.jp OK</pre>
<br />
<p>最後のvirtual_mailbox_mapsでは、バーチャルユーザーのメールボックスのパスを指定します。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/postfix/virtual_mailbox_mapsファイルの作成">##### virtual email mailbox list #####
webmaster@example.jp example.jp/webmaster/Maildir/</pre>
<p><br />
ファイルの作成後は、postmapコマンドを利用してDBファイルを作成します。</p>
<br />
<pre class="view_program brush:plain"># postmap virtual_alias_maps virtual_domain_maps virtual_mailbox_maps</pre>
<br />
<p>これで、virtual_xxxx_maps.dbファイルが作成されます。</p>
<br />
<p><strong>・ 証明書および秘密鍵の作成</strong><br />
</p>
<br />
<p>main.cfファイルの「#ssl」の項目で設定した独自の証明書と秘密鍵ファイルを作成します。</p>
<br />
<pre class="view_program brush:plain"># cd /etc/pki/tls/certs
# make mail.pem</pre>
<br />
<p>下記のように証明書に埋め込む情報を幾つか質問されるので、適宜情報を入力します。</p>
<br />
<pre class="view_program brush:plain">Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Shibuya
Organization Name (eg, company) [My Company Ltd]:Foo
Organizational Unit Name (eg, section) []:Bar
Common Name (eg, your name or your server's hostname) []:example.jp
Email Address []:webmaster@example.jp</pre>
<p><br />
<strong>・ master.cfファイルの編集</strong></p>
<br />
<p>Postfixのもう1つの重要な設定ファイルであるmaster.cfファイルを編集します。</p>
<p>master.cfファイルでは接続方式やデーモンの挙動を定義するファイルになっています。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/postfix/master.cfファイルの編集">submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=no
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}</pre>
<p><br />
<strong>・ smtpd.confファイルの編集</strong></p>
<br />
<p>SASLの設定ファイル「/usr/lib64/sasl2/smtpd.conf」を編集して、SASLのパスワードファイルを利用するように設定します。</p>
<br />
<pre class="view_program brush:plain;" title="/usr/lib64/sasl2/smtpd.confの編集">pwcheck_method: auxprop</pre>
<br />
<p><strong>・ ユーザーとパスワードの設定</strong></p>
<br />
<p>メールアカウントとそのパスワードを設定します。</p>
<br />
<pre class="view_program brush:plain;"># saslpasswd2 -u example.jp webmaster</pre>
<br />
<p>メールアカウントが作成されたか確認しておきます。</p>
<br />
<pre class="view_program brush:plain;"># sasldblistusers2
webmaster@example.jp: userPassword</pre>
<br />
<p>ユーザーリストを作成すると/etc/sasldb2ファイルが出来上がるので、権限を変更しておきます。</p>
<br />
<pre class="view_program brush:plain"># chown root:postfix /etc/sasldb2</pre>
<br />
<p><strong>・ デーモンの起動</strong></p>
<br />
<p>一通り設定が終わったのでPostfixとSASLのデーモンを起動します。</p>
<br />
<pre class="view_program brush:plain;"># /etc/init.d/postfix start
# /etc/init.d/saslauthd start</pre>
<br />
<p>自動起動するように設定するのもお忘れなく。</p>
<br />
<pre class="view_program brush:plain"># chkconfig --level 3 postfix on
# chkconfig --level 3 saslauthd on</pre>
<br />
<p><strong>・ メールサーバーへの接続確認</strong></p>
<br />
<p>最後に、メールサーバーへの接続確認を行います。</p>
<p>まずは、telnetを使った接続・認証テストです。</p>
<br />
<pre class="view_program brush:plain"># telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.example.jp ESMTP Postfix
EHLO localhost
250-smtp.exapmle.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN CRAM-MD5 LOGIN DIGEST-MD5
250-AUTH=PLAIN CRAM-MD5 LOGIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH CRAM-MD5
334 PDIxNzY5NTM1MTUuMTM1MjY4MzdAc210cC5pbmRvZy5qcD4=
d2VibWFzdGVyQGV4YW1wbGUuanAgN2FjOGIxNGQ5YzQxZGUzZTI4MDc3ZDYxOTlkYzgzMzI
235 2.0.0 Authentication successful</pre>
<br />
<p>※ ハイライト箇所は手動で入力した箇所です。</p>
<br />
<p>ちゃんと認証が成功しました。</p>
<p>CRAM-MD5による認証方法（MD5ダイジェストの作成）に関しては、下記のサイトを参考にさせていただきました。</p>
<p><br />
<a href="http://nai.homelinux.net/telnet_smtp_auth.html" target="_blank">telnetでsmtp-auth ＠ Kung Noi</a>
 </p>
<br />
<p>コードは、「AUTH CRAM-MD5」と入力した後に返ってくる「334 XXXXX」の部分（334以降）を指定します。</p>
<p>なので、2つ端末を開いて一方でtelnet接続し、もう一方で上記サイトで紹介されているPerlスクリプトのコード部分に埋め込んで結果を貼り付けたりすればよいかと思います。</p>
<br />
<p>次に、PHPからメール送信テストを行います。</p>
<p>SMTP-AUTHを通して、メールを送信するためPEARパッケージを使います。</p>
<br />
<pre class="view_program brush:plain"># pear install Mail
pear install Net_SMTP</pre>
<p><br />
メールを送信するPHPプログラムは、下記のサイトを参考にしました。</p>
<p><br />
<a href="http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm" target="_blank">How to Send Email from a PHP Script Using SMTP Authentication ＠ about.com</a>
 </p>
<br />
<pre class="view_program brush:php;" title="SMTP-Authを使ったPHPメール送信プログラム">&lt;?php

require_once &quot;Mail.php&quot;;

$from = &quot;webmaster &lt;webmaster@example.jp&amp;&gt;&quot;;
$to = &quot;Foo &lt;foo@bar.com&gt;&quot;;
$subject = &quot;Hi!&quot;;
$body = &quot;hello world&quot;;

$host = &quot;smtp.example.jp&quot;;
$username = &quot;webmaster@example.jp&quot;;
$password = &quot;HogeHoge&quot;;
$port = &quot;587&quot;;

$headers = array ('From' =&gt; $from,
  'To' =&gt; $to,
  'Subject' =&gt; $subject);
$smtp = Mail::factory('smtp',
  array ('host' =&gt; $host,
    'auth' =&gt; true,
    'port' =&gt; $port,
    'username' =&gt; $username,
    'password' =&gt; $password));

$mail = $smtp-&gt;send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo(&quot;&lt;p&gt;&quot; . $mail-&gt;getMessage() . &quot;&lt;/p&gt;&quot;);
} else {
  echo(&quot;&lt;p&gt;Message successfully sent!&lt;/p&gt;&quot;);
}</pre>
<br />
<p>長くなってしまいましたが、これで一通り設定完了です。</p>
<br />
<div class="contents_pr">
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=877302261" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=877302261" height="1" width="1" border="0">マルチドメイン無制限・大容量100GB・月額1,365円～&nbsp;⇒&nbsp;共用サーバー&nbsp;SD</a>
<br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=877246272" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=877246272" height="1" width="1" border="0">世界にたった一つ、あなただけのドメインを登録しよう！</a>
<br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&pid=879314029" target="_blank" ><img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&pid=879314029" height="1" width="1" border="0">SSLサーバ証明書なら[ドメインキーパー]◆VeriSign/GlobalSign/他取り扱い</a>
</div>
<br />

<div class="contents_rel_link">
<p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11066966355.html">[お名前.com] サービスを構築するまでに行ったサーバー設定作業もろもろ</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10224044862.html">[24時間365日] サーバ/インフラを支える技術</a></p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10484615897.html">[Linux] ファイルを暗号化する方法あれこれ</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10339290260.html">CSRと秘密鍵のペアを確認する方法</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10450936017.html">Jmeterでメール送受信の負荷テストをやってみよう！</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10036520531.html">PHPでメールに添付ファイルをつけて送る方法</a>
</p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10018306820.html">メール本文の1行の文字数制限 －PHPアプリ－</a></p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10051133432.html">Logwatchでサーバー上のログを集約する</a>
</p>
</div>
<br />
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11089372843.html</link>  
      <pubDate>Sat, 26 Nov 2011 23:28:17 +0900</pubDate> 
    </item>  
    <item>
      <title><![CDATA[PR: 広報・宣伝・販促部の求人・転職支援はマスメディアン]]></title>
      <link>http://rss.rssad.jp/rss/ad/F4lXObcE89kB/LXUCeCTfTVv.?type=2&amp;ent=73e0214f0305b08be3c6832351f4cf1f</link>
      <description><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/F4lXObcE89kB/LXUCeCTfTVv.?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/F4lXObcE89kB/LXUCeCTfTVv.?type=2&ent=73e0214f0305b08be3c6832351f4cf1f"/></a></td></tr><tr><td align="left" valign="top" > 広報・宣伝・販促部関連職種の求人数・転職支援実績NO.1クラス。求人情報毎日公開 </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></description>
      <pubDate>Sat, 26 Nov 2011 23:28:17 +0900</pubDate>
    </item>
    <item> 
      <title>[お名前.com] サービスを構築するまでに行ったサーバー設定作業もろもろ</title>  
      <description><![CDATA[<p>
 <p>ひょんなことからお名前.comのVPS環境に触れる機会があったので、その上でシステムを作るまでに行ったサーバー設定作業のメモを残しておきます。</p>
<p>システム自体は、PHPアプリが動くことを想定しています。</p>
<p>お名前.com用の設定を基本としていますが、その他のサーバーでも応用できるかと思います。</p>
<br />
<p>なお、記事が長くなってしまったので2回に分割しています。</p>
<p>後半は、<a href="http://ameblo.jp/itboy/entry-11089372843.html">メール設定作業</a>
 をまとめています。</p>
<br />
<br />
<div class="contents_sub_title"><h3>サーバー周りの設定作業</h3>
</div>
<br />
<p><strong>・ OSを変える</strong></p>
<br />
<p>デフォルトはCentOS5.3だったのですが、CentOS5.5へ（最終的にはyum updateで5.7へ）変更しました。</p>
<p>OSが古いというよりは、デフォルトの5.3環境の場合、お名前.comのコントロールパネルが結構権限を握っていて自由度が低かった、というのが変更理由です。</p>
<br />
<p>Apacheの設定ファイルも別の場所に用意されていてDocumentRootも変更できないような感じになっていましたので。</p>
<p>まぁその分、iptablesの設定やメール設定とかはコントロールパネルからできなくなるので、運用の手間は増えてしまいますが。</p>
<p>コマンドラインからガリガリと設定ファイル変更するのは苦手という場合は、デフォルトのOSのまま利用していた方がよいかと思います。</p>
<br />
<p>OSの変更は、コントロールパネルから行います。</p>
<br />
<p>※ 必要があれば、事前にちゃんとバックアップを取っておきましょう。</p>
<p><br />
<a href="http://stat.ameba.jp/user_images/20111121/00/itboy/9e/40/j/o0527031011624054217.jpg"><img border="0" alt="A Day In The Boy&amp;#39;s Life-お名前.comコントロールパネル-1" src="http://stat.ameba.jp/user_images/20111121/00/itboy/9e/40/j/o0527031011624054217.jpg" /></a>
 </p>
<p><br />
</p>
<p><strong>・ パッケージのアップデート</strong></p>
<br />
<p>取り合えず、</p>
<br />
<pre class="view_program brush:plain;"># yum -y update</pre>
<br />
<p>で、全パッケージをアップデート。</p>
<p>これによりCentOS release 5.7 (Final)へアップグレードされます。</p>
<br />
<pre class="view_program brush:plain;"># more /etc/redhat-release
CentOS release 5.7 (Final)</pre>
<br />
<p><strong>・ 必要なパッケージを追加インストール</strong></p>
<br />
<p>PHPやPostgreSQLやvsftpdなど。</p>
<p>この辺は、サービスで利用したいパッケージを適宜インストールします。</p>
<br />
<pre class="view_program brush:plain"># yum install php53.x86_64</pre>
<p><br />
あと、PHPでPEARを使いたいので追加インストール。</p>
<p>ただし、x86_64のパッケージが用意されていないみたいなんで、下記のようにnoarchのPEARをインストールした後に強制的にアップグレードしました。</p>
<br />
<pre class="view_program brush:plain;"># yum install php-pear.noarch
# pear upgrade --force PEAR</pre>
<br />
<p>途中でereg系の関数を利用してエラーが出まくりますが、アップグレード自体は完了します。</p>
<br />
<pre class="view_program brush:plain;"># pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.8   stable
Console_Getopt   1.3.1   stable
PEAR             1.9.4   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.0   stable
XML_Util         1.2.1   stable</pre>
<br />
<p><strong>・ yumのアップデート除外設定</strong></p>
<br />
<p>運用開始後は、何でもかんでもパッケージをアップデートしてたらバージョンアップによってトラブルが起きたりするので、アプリに蜜に連携するパッケージを取り合えずアップデート対象外にしおきます。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/yum.confに追加">exclude=kernel* php* httpd* postgresql*</pre>
<br />
<p><strong>・ yumの自動アップデート設定変更</strong></p>
<br />
<p>とはいえ、毎回新しく出たパッケージを1つずつ確認していくのも手間なんで、関係なさそうなパッケージは自動アップデート（実際には、パッケージのダウンロードだけで適用させませんが）を設定しておきます。</p>
<br />
<p>まず、yum-updatesdパッケージをインストール。</p>
<br />
<pre class="view_program brush:plain;"># yum-updatesd.noarch</pre>
<br />
<p>次に、設定ファイルを編集します。</p>
<br />
<pre class="view_program brush:plain;" title="/etc/yum/yum-updatesd.confを編集"># yum updateの実行間隔（秒）
run_interval = 86400
updaterefresh = 6000

# アップデートがあった場合の通知方法（E-Mail）
emit_via = email
email_to=webmaster@example.jp
email_from=yum-updatesd@localhost
smtp_server=localhost:25

# 更新があった場合、関連するパッケージも含めてダウンロード（ただし勝手にアップデートしない）
do_update = no
do_download = yes
do_download_deps = yes</pre>
<br />
<p>最後に、yum-updatesdのデーモンを起動。</p>
<br />
<pre class="view_program brush:plain"># /etc/init.d/yum-updatesd start</pre>
<br />
<p><strong>・ logrotate.conf設定変更</strong></p>
<br />
<p>デフォルトだと4週分しかログが保存されないので変更（24週分保存へ）</p>
<br />
<pre class="view_program brush:plain" title="/etc/logrotate.confを編集">rotate 24</pre>
<br />
<p>あと、/var/log以下でほっとくと大容量になってしまうログファイルを幾つかローテーションの対象へ追加。</p>
<br />
<pre class="view_program brush:plain" title="/etc/logrotate.d/syslogを編集">/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/btmp /var/log/lastlog /var/log/wtmp {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2&gt; /dev/null` 2&gt; /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2&gt; /dev/null` 2&gt; /dev/null || true
    endscript
}</pre>
<br />
<p><strong>・ SSH設定変更</strong></p>
<br />
<p>お名前.comの場合、デフォルトの状態で作業用ユーザー（vpsXXXXXXXX）が作られてたりしますが、ユーザー名が覚えにくいので、別のユーザーを追加しそのユーザーSSH接続できるようにします。</p>
<br />
<pre class="view_program brush:plain"># useradd -m -d /home/hogeuser -s /bin/bash hogeuser
# passwd hogeuser</pre>
<br />
<p>続いて、セキュリティを考慮してSSHできるユーザーを限定し、利用するポートを変更しておきます。</p>
<p>（ポートを変えるだけで単調なアタックをかなり防げたりもします）</p>
<br />
<pre class="view_program brush:plain" title="/etc/ssh/sshd_configへ追加・編集">Port 10022
AllowUsers vpsusername hogeuser</pre>
<br />
<p>※ iptablesの設定が済んでいないので、この時点でSSHDを再起動するとサーバーへ接続できなくなります。</p>
<br />
<p>より、サーバーをセキュアにするなら<a href="http://ameblo.jp/itboy/entry-10261055970.html">公開鍵認証方式</a>
 を取るのもよいかもしれません。</p>
<br />
<p><strong>・ FTP設定変更</strong></p>
<br />
<p>標準のCentOS5.3だとProFTPDを利用しているのですが、個人的な好みでvsfptdを利用します。</p>
<p>OSユーザーを使うのではなく、バーチャルユーザーを使ってFTP接続させるように設定を変更します。</p>
<p>設定方法は、以前に書いた「<a href="http://ameblo.jp/itboy/entry-10156682738.html">OS上にいないバーチャルユーザーを使ってFTP接続する</a>
 」を参照。</p>
<br />
<p>なお、FTP接続はパッシブモードで30000番から31999番ポートまでを利用しています。</p>
<p>設定方法は、「<a href="http://ameblo.jp/itboy/entry-10249857007.html">FTPのアクティブモードとパッシブモード ＋ vsftpdでの設定方法</a>
 」を参照。</p>
<br />
<p><strong>・ iptables設定</strong></p>
<p><br />
お名前.comの場合、CentOS5.5へ変更してもデフォルトで幾つかファイアーウォールの設定が既にされていたりもするんですが、SSHのポートを変えたり、FTP用のポート（30000 ～ 31999番ポート）を開放をしておきます。</p>
<p>あと、後述するメール設定のためにサブミッション・ポート（587）も許可しています。</p>
<br />
<pre class="view_program brush:plain"># iptables -A INPUT -m state --state NEW -m multiport -p tcp --dports 20,21 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m multiport -p tcp --dports 30000:31999 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10022 -j ACCEPTiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT</pre>
<br />
<p>設定が終わったら確認し、不要なポートを削除しておきます。</p>
<br />
<pre class="view_program brush:plain"># iptables -L --line-number
Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere
2    REJECT     all  --  anywhere             127.0.0.0/8         reject-with icmp-port-unreachable
3    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:smtp
6    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
7    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:pop3
8    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW multiport dports ftp-data,ftp
10   ACCEPT     tcp  --  anywhere             anywhere            state NEW multiport dports 30000:31999
11   ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:10022
12   ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
13   ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
14   ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:submission

Chain FORWARD (policy DROP)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere</pre>
<br />
<p>今回、SSHのポートを変更していますので22番ポートを削除しておきます。</p>
<p>iptablesのフィルタ削除は、下記のように左端に表示される番号を指定して削除できます。</p>
<br />
<pre class="view_program brush:plain;"># iptables -D INPUT 4</pre>
<br />
<p>設定が完了したら、iptablesの設定を保存しておきます。</p>
<br />
<pre class="view_program brush:plain;"># service iptables save</pre>
<br />
<p>念のために、iptablesのデーモンを再起動してフィルタが正しいかと、別の端末からSSHやFTPでサーバーへ接続可能かを確認しておきます。</p>
<p>接続できない場合、SSHDやvsftpdの設定かiptablesの設定に誤りがある可能性があります。</p>
<p>全ての端末を閉じてしまうと、二度とサーバーへ接続できないという自体にもなりかねないので注意が必要です。（実際、やってしまいましたし・・・）<br />
</p>
<br />
<p><strong>・ デーモンの自動起動</strong></p>
<br />
<p>追加でインストールしたパッケージや必要なデーモンを自動起動するように設定しておきます。</p>
<br />
<pre class="view_program brush:plain"># chkconfig --level 3 vsftpd on
# chkconfig --level 3 httpd on
# chkconfig --level 3 rsyslog on</pre>
<br />
<p><strong>・ 不要なデーモンの停止</strong></p>
<br />
<p>さっきとは逆に、不要なデーモンが起動しないように停止しておきます。</p>
<br />
<pre class="view_program brush:plain"># chkconfig mcstrans off
# chkconfig lvm2-monitor off
# chkconfig netfs off
# chkconfig rawdevices off
# chkconfig iscsi off
# chkconfig iscsid off</pre>
<br />
<p>この辺は、環境によって異なると思いますので、chkconfig --listで結果を見て不要なものを適宜停止していきます。</p>
<br />
<p>余談にはなりますけど、iscsiとiscsidデーモンを起動していたら/var/log/brcm-iscsi.logに毎秒ごとに下記のようなエラーが吐き出されてかなり大きなファイルとなっていました。</p>
<br />
<pre class="view_program brush:plain;">ERR [Sun Nov 20 22:17:08 2011]NIC_NL waiting binding to NETLINK_ISCSI socket
ERR [Sun Nov 20 22:17:09 2011]NIC_NL waiting binding to NETLINK_ISCSI socket</pre>
<br />
<p>実害は無いと思ってたんですが、上記のような理由から停止しました。</p>
<br />
<p><strong>・ sysstatの設定</strong></p>
<br />
<p>サーバーに異常があったときにその際の状況を確認したいという場合がありますので、sarコマンドでCPUの統計を取れるようにしておきます。</p>
<br />
<pre class="view_program brush:plain"># yum install sysstat.x86_64</pre>
<br />
<p>デフォルトだと10分ごとに統計が取られますが、もう少し間隔を短くしたいのでCronで定期実行されている設定を変更します。</p>
<br />
<pre class="view_program brush:plain" title="/etc/cron.d/sysstatの編集"># run system activity accounting tool every 5 minutes
*/5 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A</pre>
<br />
<p>コマンドの使い方などについては「<a href="http://ameblo.jp/itboy/entry-10035725081.html">サーバー管理で知っておきたいコマンドあれこれ。 - sysstat編 -</a>
 」を参照。</p>
<p><br />
<strong>・ logwatchの設定</strong></p>
<br />
<p>サーバー上には大量のログが出力されますが、それを1つずつ確認するのはかなり手間になります。</p>
<p>なので、Logwatchを使って問題のありそうなログのレポートを送ってもらうようにします。</p>
<br />
<pre class="view_program brush:plain"># yum install logwatch.noarch</pre>
<br />
<p>次に、レポートの詳細やメールの送信先を設定します。</p>
<br />
<pre class="view_program brush:plain" title="/etc/logwatch/conf/logwatch.confの編集">MailTo = webmaster@example.jp
Detail = Med</pre>
<br />
<p>ログの見方などは、「<a href="http://ameblo.jp/itboy/entry-10051133432.html">Logwatchでサーバー上のログを集約する</a>
 」を参照。</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=878309158" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=878309158" width="1" height="1" />お名前.comのホームページ作成ツール★誰でも簡単にWebクリエイターに</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=877122523" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=877122523" width="1" height="1" />【早い者勝ち！】　.com／.net／.jp　ドメイン取るならお名前.com</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=880010049" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=880010049" width="1" height="1" />格安固定IPが【５分で発行】＋【初期無料】＋【２ヶ月無料体験】</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11089372843.html">[お名前.com] Postfixによるメール送信・転送設定作業あれこれ</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10644154156.html">サーバーレンタルする際に考慮したいサーバー管理ツールによる差異</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10224044862.html">[24時間365日] サーバ/インフラを支える技術</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10639625404.html">ソフトウェアアーキテクトが知るべき97のこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10249857007.html">FTPのアクティブモードとパッシブモード ＋ vsftpdでの設定方法</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10261055970.html">[SSH] 公開鍵認証方式で接続する</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10035725081.html">サーバー管理で知っておきたいコマンドあれこれ。 - sysstat編 -</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10028063448.html">logrotateでローテーションされるファイル名を変更する</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10150752521.html">不要なファイルやディレクトリを削除できる「tmpwatch」コマンド</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10310140340.html">Linuxサーバー上でデータ操作に便利な10のコマンド</a>
 </p>
</div>
<br />
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11066966355.html</link>  
      <pubDate>Sat, 26 Nov 2011 01:15:26 +0900</pubDate> 
    </item>  
    <item> 
      <title>jQuery UI Sortableを使ってドラッグ＆ドロップでリストを並び替える</title>  
      <description><![CDATA[<p>
 <p><a href="http://stat.ameba.jp/user_images/20111024/23/itboy/fa/19/j/o0408022411568481885.jpg"><img border="0" alt="A Day In The Boy&amp;#39;s Life-jQueryUI-sotable1" src="http://stat.ameba.jp/user_images/20111024/23/itboy/fa/19/j/o0408022411568481885.jpg" /></a>
 <br />
</p>
<br />
<p>うまく説明するのが難しいので、一番は<a href="http://jqueryui.com/demos/sortable/" target="_blank">デモ</a>
 を見てもらうことでしょうか。</p>
<p>（この記事の最後にもデモを用意しています）</p>
<br />
<p>リスト表示をしていてその順番を入れ替えたいときに、古典的なやり方をしようとしたら、プルダウンメニューで順番に選択して言ったり、ボタンで画面遷移を繰り返しながら順番を入れ替えるという方法があるかもしれませんが、jQuery UIを使えば簡単にスタイリッシュな並び替え画面を実装することが出来ます。</p>
<br />
<br />
<div class="contents_sub_title"><h3>jQuery UI Sortableの使い方</h3>
</div>
<br />
<p>まず始めに、jQuery本体とjQuery UIをロードできるようにしておきます。</p>
<p>自サーバーに無い場合は、Google code上にホストされているものを利用してもよいかもしれません。</p>
<p>最も簡単な使い方は、下記のようにulタグにidを指定して実際に動かすためのliタグを記述します。</p>
<br />
<pre class="view_program brush:html; highlight: [12,13,14,15];">&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;style&gt;
    #sortable { list-style-type: none; margin: 0; padding: 0; width: 300px; }
    #sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size:
1.4em; height: 18px; border: solid 2px #ccc; }
&lt;/style&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery/jquery-ui.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
    $(function() {
        $(&quot;#sortable&quot;).sortable({ items: 'li', cursor: 'move', opacity: 0.6 });
        $(&quot;#sortable&quot;).disableSelection();
    });
&lt;/script&gt;

&lt;ul id=&quot;sortable&quot;&gt;
    &lt;li id=&quot;list-1&quot;&gt;Item 1&lt;/li&gt;
    &lt;li id=&quot;list-2&quot;&gt;Item 2&lt;/li&gt;
    &lt;li id=&quot;list-3&quot;&gt;Item 3&lt;/li&gt;
    &lt;li id=&quot;list-4&quot;&gt;Item 4&lt;/li&gt;
    &lt;li id=&quot;list-5&quot;&gt;Item 5&lt;/li&gt;
&lt;/ul&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p><br />
実際にSortableの機能を制御しているjQueryスクリプトは、ハイライト表示している4行のみです。</p>
<p>ulタグに指定するidは、jQueryの制御スクリプト内に指定している「$(&quot;#id名&quot;)」部分と一致していれば何でもかまいません。</p>
<p>liタグの各々にidを指定しているのは、並べている状態をシリアライズしてURL用のパラメータとして取得するためです。（詳しくは後述）</p>
<p><br />
Sotableには幾つかのオプションがあります。</p>
<p>上記で指定しているのは、「items」で動かす対象のDOM要素（デフォルトでもliタグは自動認識してくれますが）、cursorで要素をドラッグしたときのマウスカーソルのスタイル、opacityで動かした際の透明度を指定しています。</p>
<p>なんとなく、スタイル系の変更はCSSで直接した方が早いような気もしますが。</p>
<br />
<p>この他にも多くのオプションや、動作時のイベントをフックさせることも出来ます。</p>
<p>詳しくは、下記のサイトが参考になるかと思います。</p>
<br />
<p><a href="http://stacktrace.jp/jquery/ui/interaction/sortable.html" target="_blank">jQuery UI API 1.8.4 日本語リファレンス &gt; Interactions &gt; Sortable ＠ Stack Trace</a>
 </p>
<br />
<p>上記の例では、liタグを動かす対象にしましたが、その他にもdivタグやtableタグでも動かすことが可能です。</p>
<br />
<pre class="view_program brush:html" title="table要素内でソート可能にする例">&lt;table id=&quot;sortable&quot;&gt;
    &lt;tr&gt;&lt;td&gt;Item 1&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Item 2&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Item 3&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Item 4&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;Item 5&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</pre>
<p><br />
ただし、divタグは自動で要素を認識しえくれますが、tableタグを使う場合は、itemsオプションにtrを指定する必要があります。</p>
<p>（じゃないと、テーブルごと動いてしまいます）</p>
<br />
<pre class="view_program brush:js">$(&quot;#sortable&quot;).sortable({ items: 'tr' });</pre>
<p><br />
簡単に導入できるので、既存のサイトでもそんなに手を加えることなく変更することも可能ではないでしょうか。</p>
<br />
<br />
<div class="contents_sub_title"><h3>jQuery UIのSotableを使ったちょっとしたサンプルコード</h3>
</div>
<br />
<p>せっかくなので、デモサイトに少し手を加えてソート対象要素の追加・削除や送信時のパラメータ取得ができるサンプルコードを書いてみました。</p>
<p><br />
<strong>- リストの並び替え、追加、削除、送信（するためのパラメータ取得）をするデモ</strong></p>
<br />
<ul id="jquery-sortable">
</ul>
<div><span class="ui-icon ui-icon-plusthick"><br />
</span><a id="addItem">Add Item</a>
 </div>
<div><span class="ui-icon ui-icon-transferthick-e-w"><br />
</span><a id="sendData">Send Data</a>
 </div>
<span class="demo_show_param"><br />
</span>
<br />
<br />
<p>リストをドラッグ＆ドロップで並び替えるだけでなく、「Add Item」のリンクからリストを追加できます。</p>
<p>削除はリストの右脇にある「×」ボタンで行います。</p>
<p>「Send Data」のリンクをクリックすると、リストの状態をシリアライズしてURLパラメータに変換してくれます。</p>
<p>実際には、送信先にこのURLを付け加えれば状態を保存するということも出来るでしょう。</p>
<br />
<p>ソースコードは下記のようになります。</p>
<br />
<pre class="view_program brush:html">&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/ui-lightness/jquery-ui.css&quot;&gt;
&lt;style&gt;
    #sortable { list-style-type: none; margin: 0; padding: 0; width: 400px; }
    #sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
    #sortable li span.ui-icon-arrow-4 { position: absolute; margin-left: -1.3em; }
    #sortable li span.ui-icon-circle-close { position: absolute; margin-left: 330px; }
    span.ui-icon-plusthick, span.ui-icon-transferthick-e-w { float:left; }
    a.link { cursor: pointer; }
&lt;/style&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery/jquery-ui.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
    $(function() {
        for (item_cnt = 1; item_cnt &lt; 6; item_cnt++) {
            addItem(item_cnt);
        }
        $(&quot;#sortable&quot;).sortable({ items: 'li', cursor: 'move', opacity: 0.6 });
        $(&quot;#sortable&quot;).disableSelection();
        $(&quot;#addItem&quot;).click(function() {
            addItem(item_cnt);
            item_cnt++;
        });
        $(&quot;#sendData&quot;).click(function() {
            $(&quot;span.param&quot;).text($(&quot;#sortable&quot;).sortable(&quot;serialize&quot;));
        });
    });
    function addItem(cnt) {
        $(&quot;#sortable&quot;).append('&lt;li id=&quot;list-' + cnt + '&quot; class=&quot;ui-state-default&quot;&gt;&lt;span class=&quot;ui-icon ui-icon-arrow-4&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-icon ui-icon-circle-close delete_item&quot;&gt;&lt;/span&gt;アイテム' + cnt + '&lt;/li&gt;');
        $(&quot;.delete_item&quot;).click(function() {
            $(this).parent().remove();
        });
    }
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul id=&quot;sortable&quot;&gt;
&lt;/ul&gt;
&lt;span class=&quot;ui-icon ui-icon-plusthick&quot;&gt;&lt;/span&gt;&lt;a id=&quot;addItem&quot; class=&quot;link&quot;&gt;Add Item&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;ui-icon ui-icon-transferthick-e-w&quot;&gt;&lt;/span&gt;&lt;a id=&quot;sendData&quot; class=&quot;link&quot;&gt;Send Data&lt;/a&gt;
&lt;br /&gt;
&lt;span class=&quot;param&quot;&gt;&lt;/span&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><br />
シリアライズの部分で少しはまったので補足しておくと、動かす対象のliタグのid名で「id名-数値」のようにしておくことで、パラメータは「id名=数値」というように分割して生成されます。</p>
<p>意図的にURLのキーを変更したい場合は、</p>
<br />
<pre class="view_program brush:js">$(&quot;#sortable&quot;).sortable(&quot;serialize&quot;, {key:'order[]'})</pre>
<br />
<p>のように、第2引数の「key」にキー名を指定します。</p>
<p>こうすることで、</p>
<br />
<pre class="view_program brush:plain;">order[]=1&amp;order[]=2&amp;order[]=3&amp;order[]=4&amp;order[]=5</pre>
<br />
<p>というようなURLを生成することができます。</p>
<p>jQuery UIのマニュアルを見ると、ポートレットのような機能を作ることも出来るみたいなので、用途の幅は結構広いかもしれません。</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=880010049" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=880010049" width="1" height="1" />格安固定IPが【５分で発行】＋【初期無料】＋【２ヶ月無料体験】</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=877755464" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=877755464" width="1" height="1" />送料無料でご自宅まで集荷いたします。eBOOKOFFのらくらく買取サービス！</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=879314029" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=879314029" width="1" height="1" />SSLサーバ証明書なら[ドメインキーパー]◆VeriSign/GlobalSign/他取り扱い</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-10938717727.html">アメブロで「続きを読む」を実装する方法</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10917580201.html">AmebloにGoogle+1ボタンを設置してみたよ</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10911763553.html">JavaScriptからPHPの関数呼び出し</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10764481837.html">Twitter入力フォームのように文字カウントしてくれるcharacter count</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10589905463.html">Googleサジェストが実装できるjQuery Autocomplete Mod</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10715380924.html">jQueryでnoscriptを実装するためのお作法</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10533294952.html">高機能でカスタマイズも容易なWYSIWYGエディタ [CKEditor]</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10497560936.html">[jQuery] 外部JavaScriptファイル読込みに関する考察</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10583575870.html">[jQuery] マウスオーバー・マウスアウトで画像を表示・非表示にする方法</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10160551552.html">[JS] thickboxを活用して利用者に分かりやすいサイトを作ろう</a>
 </p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11058191199.html</link>  
      <pubDate>Wed, 26 Oct 2011 00:56:08 +0900</pubDate> 
    </item>  
    <item> 
      <title>「イエス」から始める</title>  
      <description><![CDATA[<p>
 <p>このタイトルは、先日読んだ「<a href="http://ameblo.jp/itboy/entry-11053281804.html">プログラマが知るべき97のこと</a>
 」の74番目に登場します。</p>
<p>そこには、下記のようなことが書かれています。</p>
<br />
<pre class="view_quote">私はテクニカルリーダーという立場になったばかりの頃、自分の役目は、プロダクトマネージャやビジネスアナリストから来るバカげた要求をはねつけ、自分たちのチームの素晴らしソフトウェアを守ることだけと思っていました。何か要求が来た時には、それを「受け入れるべきもの」ではなく、常に「却下するもの」と捉え、その前提でほとんどの会話を始めていたのです。
（略）
「イエス」から始めるようにする、という簡単な変化だけで、私の仕事への取り組み方は劇的に変わりました。わかったのは「イエス」という返事の仕方にも多くの種類があるということです。</pre>
<br />
<p>こういったことを思い当たる人、または周りにいるって人は多いのではないでしょうか。</p>
<p>IT部門に勤めていると、絶えず顧客からの要求にさらされます。</p>
<p>その中には、聞くに堪えないものも数多くあり、一通りの話を終える前にその話を握りつぶすかのように反論を始めたりもします。</p>
<p>しかし、そんな話の中にでもユーザーは目的を持って話しており、論点がずれていたりはするものの確かに解決すべき課題というのが見えてくることも多々あります。</p>
<br />
<br />
<div class="contents_sub_title"><h3>「ノー」と答えて行き場を失ったユーザー要求</h3>
</div>
<br />
<p>立場の違いから、言われたことは受け入れざるを得ないというエンジニアも数多くいると思います。</p>
<p>そういった人から見れば、<strong>要求に「イエス」ということへのリスクというもの強く認識している</strong>でしょう。</p>
<p>要求を受け入れることで面倒な仕事は増えるは、何らかの変化をもたらすことで実行リスクが大きくなるは、スケジュールがタイトな中でリソースは不足するは、丸投げされるは、とネガティブな要素しか考えられなくなってしまったりもします。</p>
<br />
<p>過去に一度痛い経験をしてしまうと、もう二度と簡単に「イエス」なんて言うもんかという態度も取りがちです。</p>
<p>そんな経験があるかないかはわかりませんが、まずは「ノー」と突き放す人は自分たちの領域を守ろうとえらく保守的になってしまっていたりもします。</p>
<br />
<p>「ノー」という答えの中には、<strong>「それは自分たちの仕事ではない」という意味が含まれている</strong>ことがあります。</p>
<p>しかし、自分たちがノーと突き放したその要求は誰が解決するのでしょうか。</p>
<p>確かに、しかるべきところがまずは要件を固めるべきという問題もあります。</p>
<p>システム化の施策の中で解決を図ろうにも、IT部門で考える前にその業務であったりルールであったりを整備する担当部門というものの存在があり、そっちで検討してきてから話しましょうね、というような意味合いでノーと答える人もいるのでしょう。</p>
<br />
<p>「ノー」という人の中には、<strong>ノーといった理由を示さないでただ拒否する人や、たいしたリスクではないのだけど、さも致命的であるかのように拡大解釈して理由を付ける</strong>という人もいます。</p>
<p>「客先で資料を参照したいのですが」と聞かれれば「セキュリティの関係でそれは無理です」と答え、「じゃあオンラインストレージでファイル転送とか出来ませんか？」と聞かれれば「予算がありません。おたくの部門で費用を持ってもらえるんですか？」ってな具合で、押し問答を繰り返したり。</p>
<br />
<p>頭ごなしに「ノー」と言ってしまうとそのユーザーの要求は行き場を失い、ただただその人の心のうちで消滅するしかなくなってしまいます。</p>
<p>それが本当に会社にとって解決すべき重要な要求や課題であったとしても。</p>
<p>情報システム部門の役割は、自社の業務ドメインを認識し、そこでの問題や変化に対してITを投入して管理していくというものがあるでしょうが、自分たちの領域を守ろうとするあまり、そこに踏み入る勇気を失っていたりもします。</p>
<p>ITのプロ集団であるはずなのに、ITによる解決案さえも出さないのは悲しいことではありますが。</p>
<br />
<br />
<div class="contents_sub_title"><h3>「ノー」では始まらず「イエス」では始まること</h3>
</div>
<br />
<p>ノーと答えることで「情報システム部門がノーと言ったのでダメになった」という変な軋轢も生まれます。</p>
<p>まぁ、イエスと答えると、「じゃあ、後は情報システム部門でよろしく」と丸投げされたりもするので、それはそれでユーザー部門への疑心が募る結果となり、そのバランスの取り方も難しい場合がありますが。</p>
<br />
<p>一昔前では、システムは魔法のように思われていたのかもしれません。</p>
<p>そして、餅は餅屋にのように魔法は魔法使いにと情報システム部門に頼っておけばどうにかなるという考えの人も多かったのでしょう。</p>
<p>現在では、ITサービスはコモディティ化しており、魔法使いとしての威厳や持ち味も失われつつあります。</p>
<p>その過去にいいように扱われた苦い経験からか、ユーザー部門と情報システム部門との信頼関係も失われつつあるように思えます。</p>
<p>「イエス」と答えてきた過去があるがその報いが無いからこそ、現在は「ノー」と答えたくなるのかもしれません。</p>
<p>または、「イエス」と答えるだけの力を持ち合わせなくなってしまったということも考えられます。</p>
<br />
<p>ただ、それは「イエス」の答え方にもよるもので、きちんと解決すべき課題に対して要求する部門とシステム部門とでどのような体制で取り組んでいくべきかという検討が必要でしょう。</p>
<p>その中には、業務担当部門でしか考えることが出来ないプロセスであったり、解決手法というものが存在します。</p>
<p><strong>お互いがその問題を解決するためにどのように取り組んでいくべきかというのを、双方の役割を明確にしながら進めていけばいいわけで、その一部を担うことに対して「イエス」と答えればいい</strong>わけです。</p>
<br />
<p>まさに<strong>「イエス」にも様々な種類がある</strong>ということです。</p>
<p>ユーザーの要求というのはいきなりゴールかのように見えて、実際は方向違いでスタートを切っていることも多々あります。</p>
<p>その要求の向こうにある本質的な課題を聞き、別の手段からのアプローチを提供すれば解決する問題かもしれません。</p>
<p><strong>「イエス」から始めれば道は開けますが、「ノー」から始めれば始まりもしません。</strong></p>
<p><br />
「Yes or No」の二極化した答えしかないわけではありません。</p>
<p>その答えはそんなに単純なものではなく、ずっと複雑であり紐解かなくてはならないものでしょう。</p>
<p>それはお互い認識しつつも、双方が自分たちの利益を守るためのカードとしてしか使ってないようであれば本末転倒ではあります。</p>
<p>そのきっかけである「イエス」という回答が望まれるのだと感じます。</p>
<br />
<div class="contents_pr">[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=875970230" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=875970230" width="1" height="1" />独立・開業・起業のサポート情報の検索・資料請求サイト「アントレnet」</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=876283262" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=876283262" width="1" height="1" />忙しい人に朗報！【便利な出前】ネットでらくらく注文♪</a>
 <br />
<br />
[PR]<a href="http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2340425&amp;pid=879480745" target="_blank"><img border="0" src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=2340425&amp;pid=879480745" width="1" height="1" />集客にお困りの方は必見。Yahoo! JAPANが提案する集客アップの方法。</a>
 </div>
<br />
<div class="contents_rel_link"><p>関連記事</p>
<p><a href="http://ameblo.jp/itboy/entry-11156595661.html">クラウド時代のエンジニアの活きる道</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11138750697.html">部下ができたプログラマーのもどかしさ</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11097986022.html">サービス構築の実行コストは構築側より提案側のほうが上回ってるんじゃないかって話</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-11026487613.html">形骸化しやすい運用プロセスとその設計</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10970843898.html">要件定義の段階でユーザーが反射的に「YES」と答える理由</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10913575286.html">規模の大きなプロジェクト運営で気をつけたいこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10892995919.html">プログラマがプログラミング以外にしていること</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10858007060.html">5年目のエンジニアと話してアドバイスしたこと</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10743896069.html">内製化することの幻想と現実</a>
 </p>
<br />
<p><a href="http://ameblo.jp/itboy/entry-10609422859.html">システム屋が非システム屋と話すときに留意すること</a>
 </p>
</div>
<br />
<br />
 
</p>]]></description>  
      <link>http://ameblo.jp/itboy/entry-11054195882.html</link>  
      <pubDate>Sat, 22 Oct 2011 01:13:56 +0900</pubDate> 
    </item> 
  </channel> 
</rss>

