A Day In The Boy's Life -55ページ目

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

30代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則/大塚寿
¥1,500
Amazon.co.jp


2012年になり、「自分今年の誕生日迎えたら四捨五入して40歳になるんだ」とか思ったら急に焦燥感が生まれたりしまして、そんなときにふと本屋で目に留まった本です。

昨年結婚して急にプライベートでも時間も取れなくなってきたり、仕事ではやはり自分がやりたいことをやるというよりは部下をマネジメントしたり成長させる方向に仕事も向きだして、30代中盤になりこんな状態で本当にいいのかなという不安はやはり付きまとうものです。


30代も今年入れて残り6年となるわけですが、やはり今のペースのままで行くよりはしっかりと人生設計を立てなくてはいけないんだなとこの本を通して改めて思ったりもしました。

この本に書かれていることは、著者の経験だけでなく多くの人からヒアリングした30代の後悔というものが描かれています。

人生は一度きりであり、誰の生まれ変わりであろうと前の記憶というものを引き継ぐことは出来ません。

つまりは、誰しもが同じ間違いを身をもって味わうことでしか理解できないわけで、やはり他人の教訓というものは重く受け止めるべきなんだなと感じたりします。


ここに書かれていることは、30代半ばになった自分もよく感じることも多々あります。

本の内容は「20歳のときに知っておきたかったこと 」に書いてある内容と近いものがありますが、より30代の現実というものにテーマを絞り込んだ内容になっています。

それをどう解決するかのアドバイスも含めて年初に味わった焦燥感を少しは軽減できたと感じます。

人の後悔というのは、他人と比較してうまれたりするのだと思いますが、人間は経験しないとなかなかわからないもので、後悔をしないためにはそれを感じた人のアドバイスを受けて自分の人生を調整していくしかないのだと思います。


20代では何も考えず我武者羅に目の前にあることをこなしていくことで手一杯にもなっていたり、そもそもそんな不安さえも頭をよぎりませんでした。

しかし、歳を取っていくと時間は恐ろしいほど早く経過していくように感じますし、やはり後悔をせずに人生を終えたいという気持ちも強くなります。

人生のテーマなんてそのうち見つかるだろうと思っていても、実際に30代になっても漠然とした自分の進む道が見えはするものの、本当にそれは自分がしたいことだったのだろうか?ただレールを歩いていたから今にたどり着いただけじゃないのか?って懐疑的になったりもします。


30代だけでなく、20代の人もぜひ読んで欲しいと思います。

今はそんなことは考えられないといっても、そのうち考えざるを得なくもなってくるものです。

早めにその種を自分の頭の中に植えつけておくことで、来るべき時にもっと柔軟に対応が出来るかもしれません。


ちなみに、著者は

40代を後悔しない50のリスト 1万人の失敗談からわかった人生の法則/大塚 寿
¥1,500
Amazon.co.jp


という本も出しているようです。


目次


第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 世間を意識しすぎた




イシューからはじめよ―知的生産の「シンプルな本質」/安宅和人
¥1,890
Amazon.co.jp

あけましておめでとうございます。

11年のまとめも書いてないんですが、12年もゆったりと活動を開始していきたいと思います。

本年も本ブログの記事が何かお役に立てれば幸いです。


ということで、12年最初の記事は書評からスタートしたいと思いますが、この本自体は11年の積読してた本でありまして、帰省中に読んだものであります・・・。

この「イシューからはじめよ」は、私たちが仕事の中で取り組む目的や課題をよりはっきりさせ、意味のある成果をあげるための考え方やフローをまとめたものになっています。


仕事をしていると色んなプロジェクトや資料作成を行ったりしていますが、途中で「何のためにこれをやっているんだっけ?」とか、当初の目的から方向性がずれだして取り合えず与えられた成果物を作ることだけが目的になっているということはよくあったりします。

プロジェクトの方向転換とかはよくあることでそれは特に問題ないとは思いますが、そもそもの目的設定が間違っていたり、意外と自分たちで「この目的設定は間違えていない」と思っていても視点を変えてみるとそれは全然必要ないことだったりで、プロジェクトが達成した翌年には別の課題が持ち上がってその解決に向けて別のプロジェクトが立ち上がるということもあったりします。


要は最初の課題の捕らえ方、目的の設定やそれを解決するためのフローがそもそも間違えているということがあるわけです。

この本では、本当に価値ある仕事をするためにその「価値ある仕事」をどうやって見つけていくか、それを達成するためのフローが描かれています。

「数をこなしていけば真価にたどり着く」という発想は止めようということも書かれていたりして、自分の仕事のやり方に対してドキッとさせられたりもするんですが、なかなか本当に解決すべき問題というのを見つけ出すのは難しいものです。


よく上司から「こういう課題があがっている」ということを聞いたりして、それを解決するための施策が立ち上がったりしますけど、これって全然問題解決になってなかったりもするわけです。

その上司の課題設定が間違っていたら、先に書いたように別の課題が持ち上がったりもしますし、その上司もさらにその上の人から伝え聞いたことを伝言ゲームのように流してくることもあるわけで。

また、こういう仕事の進め方をしていたら、上下関係の権限の問題から課題の真価には何時まで経ってもたどり着かずに、お上が言うことを延々とこなしていくということにもなってしまうため、単なるインプットとしてその先に考えるべき問題って何があるんだろうというところ俯瞰的にみていく必要もあります。


今一度自分たちがやっている仕事の価値とは何か、達成すべき目的設定はどうあるべきかということを考えさせられる一冊でした。



目次


第1章 イシュードリブン - 「解く」前に「見極める」
イシューを見極める
仮説を立てる
よいイシューの3条件
イシュー特定のための情報収集
イシュー特定の5つのアプローチ

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

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

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

第5章 メッセージドリブン - 「伝えるもの」をまとめる
「本質的」「シンプル」を実現する
ストーリーラインを磨き込む
チャートを磨き込む




HTMLタグをそのままユーザーに入力させ、それを正しい形で利用したいというケースは少ないかもしれませんが、ブログシステムやそれに似通った機能をユーザーに提供したい場合、その中から不正なHTMLタグをチェックするロジックを作ることは結構大変なことです。

こういったケースでは、HTML Purifier を使えば比較的容易に安全にHTMLタグを扱えるようになります。


OSSのブログシステム用プログラムとして有名なWordpress も、HTMLタグのフィルタとしてHTML Purifierを利用しているようです。

Wordpressを使ってなくても、例えば「高機能でカスタマイズも容易なWYSIWYGエディタ [CKEditor] 」で書いたような独自の入力フォーム用のブログシステムを作りたいといったケースでも適用できるかもしれません。



HTML Purifierの使い方


HTML Purifierのインストール方法は何種類か用意されており、PEARからインストールすることや、ソースプログラムをダウンロードして適当なディレクトリに保存すること、gitからインストールするというパターンなどがあります。

ここでは、簡単に導入できるPEARを使うパターンで書いています。


# pear channel-discover htmlpurifier.org
# pear install hp/HTMLPurifier

上記のようにインストールすると、PEARのディレクトリ内にHTML Purifierのプログラムが展開されます。

HTML Purifierの利用は、下記のように使います。


<?php

require_once 'HTMLPurifier.auto.php';

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

echo $hp->purify($_POST['data'];


上記は、dataというパラメータで送られてきた値をHTML Purifierで処理しています。

基本的には、許可したいタグや動作をConfigオプションで指定し、処理させる変数に対して最後にpurify()メソッドを通すことで余計なタグを除去したりすることが出来ます。


HTML.AllowedElementsでは、入力を許可したいHTMLタグを指定します。

上記の場合はアンカータグや改行タグは許可しますが、記述していないタグは全て取り除かれます。

<h3>foo</h3><br />
<span>bar</span><br />
<div>hoge</div><br />


上記のようなタグをユーザーが入力した場合、下記のように変換されます。


foo<br />
<span>bar</span><br />
hoge<br />

h3やdivタグは許可するタグのリストに加えていないので全て除去されています。


HTML Purifierを応用して独自のフィルタを作る


使い方の基本系は、先に書いた例のようにConfigオプションを指定して、許可したいタグや属性を決めていきます。

指定できるオプション はかなり多いので、マニュアルも参照してみてください。

以下、よく使いそうなものから幾つかピックアップして解説します。


・不許可にしたいHTMLタグを指定する


HTML.AllowedElementsでは、ホワイトリスト方式で許可するHTMLタグを指定しましたが、HTML.ForbiddenElementsを使えば、その逆のブラックリスト方式で不許可にするHTMLタグを指定できます。

HTML.AllowedElementsを使わない場合でも、scriptタグやembedタグなど動作に問題がありそうなタグは一通り除去してくれたりします。

ここに許可するHTMLタグをリストアップするのが大変な場合は、こちらを使った方が楽に指定できます。


$config->set('HTML.ForbiddenElements', array('table', 'tr', 'td', 'tbody'));


・特定のドメインへのリンクを禁止する


問題のあるサイトへのリンクを作らせたくない場合は、下記のようにブラックリストのドメインを指定することができます。


$config->set('URI.HostBlacklist', array('example.com'));

処理例は、下記のようになります。


<a href="http://www.example.com">こちらへ</a><br />
<a href="http://www.example.co.jp">こちらへ</a>


上記のHTMLタグが入力された場合、禁止しているexample.comの方のアンカータグが無効化されます。

一方、example.co.jpドメインは禁止していないのでそのまま通ります。


<a>こちらへ</a><br />
<a href="http://www.example.co.jp">こちらへ</a>


・リンク(アンカータグの使用)を禁止する


こちらは、もう少し厳しくなりHTMLタグ内にアンカータグを使わせたくないという場合です。


$config->set('URI.Disable', true);


結果は、URI.HostBlacklistを使った場合と同様に、アンカータグが無効化されます。


・リンクのターゲットを限定する


アンカータグ内で指定できるtarget属性を限定させるということも出来ます。

下記の場合は、targetに「_self」と「_top」しか指定できません。


$config->set('Attr.AllowedFrameTargets', array('_self','_top'));

例えば、新しいウィンドウを開く「_blank」を指定するとその属性値が丸ごと削除されます。


<a href="http://www.example.com" target="_blank">こちらへ</a><br />
<a href="http://www.example.co.jp" target="_top">こちらへ</a>


以下のように、アンカータグは使えますがtarget属性が削除されています。


<a href="http://www.example.com">こちらへ</a><br />
<a href="http://www.example.co.jp">こちらへ</a>


・指定できるクラス名を限定する


例えば予め適用できるCSSがあり、そこに定義されているクラス以外を指定させたくないということも出来たりします。


$config->set('Attr.AllowedClasses', array('foo', 'test'));


上記の場合は、class属性にfooとtestしか指定できません。

これ以外のクラス名を指定した場合は、class属性から削除されます。


・要素と属性の組み合わせを限定する


より厳密に利用できる要素と属性の組み合わせを指定したい場合は、HTML.AllowedAttributesを利用します。


$config->set('HTML.AllowedAttributes', array('span.style', 'a.href', 'p.id' ,'div.class'));


上記の場合は、spanタグにはstyle属性を、aタグにはhref属性を、pタグにはid属性を、divタグにはclassタグを指定できますが、これ以外の組み合わせは利用できません。


<span class="foo" style="color:#FF0000">test</span>
<div class="bar">hoge</div>
<p class="bar">fuga</p>

上記のように入力された場合、HTML Purifierで処理後は下記のように変換されます。


<span style="color:#FF0000;">test</span>
<div class="bar">hoge</div>
<p>fuga</p>


spanとpタグの中ではclass属性は使えないので削除され、divタグは組み合わせが正しいのでclass属性を指定できています。



紹介できたのは本の一例なんですが、組み合わせ方ではかなり強力なHTMLタグのフィルタを書く事が出来るかと思います。

HTMLタグをそのままユーザーに入力させたいけど、セキュリティを考慮したら利用を一部制限したい、というようなケースにうまく使えるかもしれません。