こんにちは。

ビジネスパーソンとして仕事をする上で、ポータブルなスキルを意識する重要性はいくら強調してもしすぎることはありません。

もし人生のもっと早いタイミングでポータブルなスキルを意識し、鍛えることを開始していれば、今の自分はもっともっと出来ることが増えたかもしれない。そんなふうに考えています。

ということで、詳細の説明は省くとして(おい!)、僕がこれまで9年間の社会人人生の中で「これは役立つ!」と感じて磨いてきたスキルの一覧をまとめてみました。(法務、会計、人事、プログラミング等の専門スキルは除く)取り急ぎ結論めいたスライドを1枚だけシェアしてみます。

これから就活をする学生さんや、社会人としてキャリアを歩み始めた方々のお役にたてれば幸いです。

キャプチャ

ちなみに、僕自身はこのようなスキル体系を意識して鍛え始めたのは入社して4年が経過したときでした。全く別の部署に異動して全く仕事ができず「4年目なのにこんなこともできないの?」と言われ、非常に苦しい時期を過ごしました。

それまでに身に付けたスキルが如何にポータブルでないかを痛感し、「このままでは異動のたびにゼロリセットになってしまう。この部署でしか使えないスキルを磨き続けたとしても、それは自分の将来にとって嬉しいことなんだろか?」ということを本気で考えました。

そんな中で属人的に作ってきたスライドですので、万人にとって有効ではないかもしれませんが、誰かのお役にたてれば幸いです。

それでは。

こんにちは。

台風で外出できないので、ブログを更新。

結構な長文なのですが
簡潔にまとめると、
・プログラミング楽しすぎワロタ
・ビジネスにめっちゃ通じるとことあるじゃん


ということなのでが、下記つらつらと書いてみます。
なお、超スーパー素人の意見なので、体系的でも網羅的でもないのでご容赦を。

最近はエンジニアの方と一緒に仕事をすることが多くなってきました。一言でエンジニアといっても様々なお仕事があると思いますが、僕が日々接するのは、大学時代にコンピューターサイエンスを体系的に学んだような専門的なバックグラウンドを持つエンジニアの方々です。彼らと接する中で僕が学ぶことは本当に多く、その一部を知人と定期的にシェアをしていました。ふとその知人が「そんなに面白い発見があったなら、もっとみんなでシェアしようよ!」と勧めて下さったこともあり、このエントリーを書くことにしました。僕自身は当該分野に関しては完全に門外漢で、一つ一つのレベルが低いということは自覚しているのですが、そんな僕だからこそ持てる何らかの視点があるかもな、と思い、いろいろ感じたことを書こうと思います。(言葉の厳密な定義や専門的な観点からの考察はお詳しい人に譲ります。。。)


こんな人に読んでもらえると良いかもしれません
・プログラミング経験が無い自分に多少なりともコンプレックスを抱えている人
・プログラマーがやっていることを何となくでも知りたい人
・元エンジニアが企画職でも活躍できるのは何故か?を知りたい人



全体を通じて言いたかったこと
・プログラミングは(少しかじるだけなら)思ったほど敷居も高くないし、楽しい。コンプレックスをもっていては勿体ない。
・ただし、残念ながら素人レベルでやれる事は限定的である。やりたいことを随意に実現するためには広範な知識/経験と深い知恵が必要。
・プログラミングとビジネスって意外なほどたくさんの共通点がある。だからこそビジネス領域でも活躍できる人が多いのかもしれない。



なんで今更プログラミングをやろうと思ったか
一頃で言うと、エンジニアの頭の中を知りたいな、と思ったのです。

・エンジニア学生から学ぶことがとても多かったから
私事ですが、昨年の秋頃から某企業で新卒採用を担っておりまして。この採用って仕事が面白いなと感じています。これまで営業を通じて得た学びと、企画を通じて得た学び。その双方を混ざり合わせて実践していく領域が採用なんじゃないかな、と感じられるからです。じゃあなぜエンジニアなの?という点について。僕の会う学生さんはエンジニア志望の方が多く、彼らと話すたびに新たな学びのヒントを頂いているのです。純粋で強い知的好奇心が根底にあって、問題を解決するのが大好き。そのせいか「物事を面白がる力」「遊ぶ力」が高く、「創造力」に溢れているように感じます。彼らがビジネス分野でもっともっと活躍できる環境を作り、一緒に楽しく働きたいな、と素直に感じられます。(採用担当者としては幸せなことですね)

・尊敬するビジネスパーソンが元エンジニアだったから
また、これは採用とは関係ありませんが、「この人は仕事がデキるな」と感じたビジネスパーソンにバックグラウンドを聞きまくっていた時期があったんです。そうすると、元エンジニアだという人が多かった。論理的に物事を考えることができ、大量の業務を効率よく分解してチームメンバーと一緒に片付けていける。自分にはない強みをもった人がいて、その人たちには何らかの共通のバックグラウンドがありそうだ。もしかしたらエンジニアという仕事(※趣味、志向なども含む)の中にヒントがあるのかもしれない、と思うようになりました。

そんなエンジニアの皆さんの頭の中を少しでも知りたいと思い、一念発起してプログラミングをかじってみることにしました。大学の授業で " hello world " を出力するのに四苦八苦した経験しかありませんが(汗)、「何かを学ぶということに遅すぎるということはない。」という格言に勇気をもらいました。本論とは関係ありませんが、格言って大事だな、と常々感じます。個人の弱い意志を、後ろから力強く支えてくれるような気がします。


何のためにやるのか
ということで、下記のことにチャレンジをすることにしました。
・とにかく自力で一つのプログラムを書き切ってみる
・それを通じて、プログラミングやエンジニアに関する理解を深める
・同時に、エンジニアとビジネスの共通点と相違点を自分なりに仮説立てる



どんなテーマを設定したか
テーマを決めるにあたって考慮したのは下記の4条件です。
結果的に、processingを用いた面積図の自動生成プログラムを組むことにしました。その題材として、全国47都道府県における年齢×性別の構成比率を可視化することにしました。


・テーマ設定のポイント
1.自分が使いたいと思うものを作る
2.何らかのアルゴリズムを含んだものを作る
3.初心者が頑張って到達できる技術的な範囲を大きく逸脱しない
4.その代わり、ビジネスインパクトのあるものを作る

簡単ですが、下記にそれぞれの条件について記載しました。個人的な志向も多分に含まれていますので、万人にお勧めの方法という感じでもないかも知れません。

1.自分が使いたいと思うものを作る
自分がやりたいことじゃないと長続きしない。というのは人の常です。なので、せっかくチャレンジするならば自分が使いたい、つまり役に立つものを作ろうと考えました。私が大学時代に学んだプログラミングは" Hello world "のみでした。大学の授業でよくわからない呪文をコピーして、よくわからない謎の画面にペーストし、これまたよくわかならい謎のボタンをクリックすると、" Hello world "という文字列が出力される。この体験を非常に楽しんだ友人もいましたが、ビジネス領域に関心の強かった当時の僕には、残念ながらそれは無味乾燥な経験として頭に残りました。

2.何らかのアルゴリズムを含んだものを作る
昨年の秋から学生さんと話をする中で「HTMLやCSSはプログラミングじゃありません」という主張をよく耳にしました。「え、なんで?」と聞くと、概ね「計算を含んでいないから」という意味の答えが返ってきました。この主張について詳しいところは専門家に譲りますが、こんなやりとりもあって、せっかくだから何らかの計算(アルゴリズムという人もいた)を含んだテーマを選ぼう、と決めました。

3.初心者が頑張って到達できる技術的な範囲を大きく逸脱しない
素人は素人なりに出来る範囲で学んでいけばいいと、というのが僕の信念です。素人がプロ野球に出てもホームランは打てませんからね。そんな考えもあり、例えばオブジェクト指向については、練習こそしたものの(テキストを読んで基本的な構文を理解と実装をする程度)、使いこなすには結構な慣れが必要そうな気配をムンムンに感じたため、最終的なプログラムには組み込みませんでした。

4.その代わり、ビジネスインパクトのあるものを作る
これは1.とも関係します。私はビジネスの世界に身を置いてきた人間なので、有り難いことに解決したいビジネス課題を山ほど抱えていました。その中で特に関心が強かった「情報伝達」に関係するテーマを選ぼうと考えました。具体的には、ドキュメンテーションの武器の一つである「面積図」を作ろうと決めました。なぜなら、面積図の情報伝達力は極めて大きいにも関わらず、手元の既成ソフト( officeとか)ではサポートされておらず、作成に時間がかかっていたからです。※ビジネスにおける面積図の威力はコチラが詳しい。


やったこと
1.プログラムを書くための準備(1週間ぐらい)
 1-1.開発環境構築(Java,processing)
  − Java SE Development Kit (JDK) のインストールと設定※ここを見ながら
  − Processingのインストールと設定※ここを見ながら

 1-2.予備知識の取得(データ型、四則演算、if文、for文、配列、入出力、コンパイル)
  −「スッキリわかるJava入門」という本を通読し、RPG的を作る気分で基礎を勉強
  −「Built with Processing」という本を通読し、描画の基礎を勉強

 1-3.使用データの取得と整形
  − これと言った面白いデータを持っていなかったので総務省HPから人口統計をダウンロード
   オープンデータの文化は素晴らしいっすね。
  − 自分が処理できる形式(csv)に整えて、無理矢理inputできるようにした

2.実際のプログラム作成(1日ぐらい)
 2-1.外部データを配列に格納
  − Processingファイルで配列を作成し.csvを読み込む
  − .csvファイルは4×47個の数値データ+項目名で構成した
  − グラフタイトルの描画を自動化したかったので、配列の型はstringにした

 2-2.描画に必要なタテヨコのサイズを算出する
  − 格納した値をfloat型に変換し、行、列、行列合計をforループを用いて算出
  − 描画に必要な各行、および各要素の面積を決定するため下記を実施
   − 行合計を行列合計で除し、各行の存在割合を算出(=各都道府県の太さ)
   − 行内の要素を行合計で除し、各要素の存在割合を算出(=各要素の太さ)

 2-3.描画
  − チャートタイトル、横軸、縦軸の描画(描画エリアの全体を規定)
  − forループを用いた各要素(四角形+数値)の描画


できたもの
・input file:こいつを視覚化しました。都道府県別かつ年齢帯別かつ性別の人口がまとめられています。
26 PM

・processing file:このエントリーの最下部に貼付けました

・output file:こんな感じで視覚化できました。チャートタイトルとメインメッセージ以外は全て自動で作れるようになっているので、行数や列数が増えても、中の数値が変わってもサイズが自動で調整されるようになっています。今回はデータ項目数が多すぎて、かえってシンプルさを失ってしまった感があります。この点はプログラムの反省というよりはデータ選択やグルーピングが稚拙だったという点が改善ポイントになりそうです。
44 PM


大変だったこと
・開発環境の構築手順が全然わかんなかった → Google先生に感謝
 − Javaって何?PATHって何?
 − エディタの使い方がわからないから結局miという標準エディタで乗り切った
 − Eclipseの使い方がわからなさすぎて、結局ターミナルから全てコンパイル&実行
 ※初心者の壁は、実際の開発よりも、そのための準備(上記1.1や1.2)かもしれない。
  特に開発環境は慣れてる人に手伝ってもらった方が絶対に良い

・一連の作業をMacで実行したのだが、Windowsに慣れきった自分には辛かった
 − ファイルの保存や名前の変更の仕方がわからん
 − エクセルが使えないので、仕方なくOpenOfficeとかいう神ソフトを使用

・嫌というほど自分のミスに向け合わなければならない
 − プログラムは基本的に動かないものだと感じた
 − タイポ、型間違い、配列要素数超過の嵐で全く前に進まない
 − しかも全て自分が原因なので、気づいたら自分を責めがちになっている
 ※なので、仕事に直接使えるプログラムを作るんだ!というモチベーションは大事
 ※「というか、これをスラスラっと書けるエンジニアってすごくね?」と思った

得られたもの
結構大変なことばかり書きましたが、それ以上に貴重なものを得ることができました。
それは、自分で作ったプログラミングが動く瞬間を目にする快感です。
ひとたびプログラムが動く瞬間を体験してしまったら最後。
もはや全てのバグ取りは、完成という大きな道に落ちている石コロにしか思えなくなります。(時には大岩のようなものもありますが。笑)



今後やりたいこと
・GUIを駆使した直感的なプログラムに昇華させたい
・外部サイトからデータを取得してリアルタイムに反映できるようにしたい
・そのためにデータベース設計とかもトライしてみたい
・大きなプログラムを作るためにチーム開発もしてみたい
・計算量の工夫を要する面白い問題にトライしたい


おまけ(プログラミングと自分がやっている仕事の共通点)
・明確な目的(解決したい課題)を持つ。さもなければ作業が目的化する。
10年近くビジネスの世界に身を置いて痛感することですが、人は目の前のことに没頭するあまり、当初の目的を忘れてしまいがちです。目の前の作業は、もっと大きな何かのための手段であるはず。その大きな目的を達成するために必要とあらば、手段は常に見直さなければならないのです。プログラミングにおいてもそれは同じで、より上位の目的のためには、当初計画していた作業を見直して随時修正をすることが必要かもしれません。手段を修正するのは、体力的にも精神的にも結構しんどいプロセスなのですが、当初の計画に固執して突っ走ることが必ずしも良い結果にならないことを、経験豊富な開発者はご存知ではないでしょうか。

・予め機能毎の優先順位をつけておくこと。さもなければ無為に資源(=特に時間)を溶かす。
例えば私の担当している採用業務では、やりたい企画が100個あったとしても、その中で現実的に実行できるのはほんの一握りに留まります。それは人・物・金・時間・情報など組織の保有する資源が限られているからです。だからこそ、本当にどの企画に価値があるのかを見極めるために、事前に徹底的な優先順位付けを行います。優先順位の無い中で闇雲に資源をまき散らしていては、お客様に提供する価値が減少し、競合他社の後塵を拝するからです。今回のプログラミングにおいても、私が実装したい機能や、その機能水準はたくさんありましたが、その多くは断念しました。なぜなら、インプットに多くの時間を費やした結果、実装にかける時間が充分に確保できなかったからです。これは日々の仕事と通じるところがあり、多いに反省の材料になりました。

・優秀な人ほど謙虚(ネタです)
才能を持つ若者(特に競技プログラミング界隈)には「僕は世界一プログラミングができない」という自虐的な発言が散見されます。でも実際にはそう言った人たちはかなりプログラミングのできる人であることが多い。自分よりも更に優秀な人と比べることでそのような認識に至っていると思いますが、言ってみればそれは「無知の知」ともとれる発言であり、ソクラテスの域に達していると言っても過言ではないと思います。仮に彼らがネタとしてそのようなことを言っているのであれば、それは初心者に対するパワハラにもなりかねないので若干の注意が必要かも。


おまけ(プログラミングと自分がやっている仕事の相違点)
・とにかく対峙する相手が圧倒的にロジカル
プログラミングは言わば「鬼のようにロジカルな上司を相手に仕事をする」ようなものだと感じた。人を相手にする職業では、上司のご機嫌が良い時は提案が通りやすい、みたいなラッキーパンチがごくまれに存在する。しかしプログラミングにはそんなことは無い。きちんと設計して、実装したとしても、そこにバグがあったら正しい挙動はしない。そんな環境で成果を出し続けてきたエンジニアはきっと論理的で実践的。ビジネスパーソンとして活躍する人が多いことも納得できる。

・出来る事を広げるには猛烈なインプットが必要
これは仕事も同じじゃないか?と思っていたのですが、やろうとしてみてその違いに気づきました。例えば営業と企画をやっていた人が採用業務をやる場合、全然inputをしないでひたすら実務にあたるだけで、なんとかギリギリ最低限(50点ぐらい)のレベルはクリアできたりします。なぜなら、いずれも人間を相手にするお仕事だから。もちろん、しっかりと仕事をするにはそれ相応の努力が必要なのですが、プログラミングほど痛烈に「歯が立たない」感覚はありませんでした。しかし、僕にとってのプログラミングは、言わば弁護士や医師のような、圧倒的な壁を感じました。例えばサーバー関連やDB関連のお題が目の前に提示されたときに、なんとなくやって50点がとれるような感覚がまるで湧きませんでした。この意味で、やっぱり相手がコンピュータであるということの違いは大きいように感じます。


最後に
つらつらと書いてきましたが、30歳になって初めてプログラミングをしてみた感想は、それ自体がとても楽しく、仕事にも活かせる気付きを得られるチャレンジだった、ということです。今までは「エンジニアってどんな仕事なんだろう?」「なんでこんなに楽しそうにしているんだろう?」って不思議に思うことが多かった。でも、自分の手を実際に動かして、自分の頭でウンウン苦しんで、そして自分の作ったプログラムが動く楽しみを知って。そんなプロセスを踏めたおかげで、ほんの少しだけ、彼らのすごさの片鱗を感じることができたように思います。自分が知らなかったことに、少しだけ踏み込んで体験してみることで、かえって自分の得意なことや、向き合うべきテーマが明確になったような気がします。


男30歳。プログラミング童貞を捨てて良かったなと。
みなさんもどんどん捨てていきましょう。

何かを学ぶということに遅すぎるということはない。



以上。


※下記は参考文献と、僕の書いたコード(こちらは非参考文献。笑)です。

参考文献

・スッキリわかるJava入門



・Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門


・ビューティフルビジュアライゼーション (THEORY/IN/PRACTICE)



作成したコード
--------------------------------
size(840, 840);
colorMode(HSB, 100);
background(100);

int r = height*8/10;
float y = 0;
float x = 0;

//N setting
int n = 5;

String file[] = loadStrings("file.csv");
String[][] data = new String[file.length][n];

float[] sumRow = new float[file.length];
float[] sumColumn = new float[n];
float sum = 0;

//data input
for (int i=0; i < file.length; i++) {
String tmp[] = split(file[i], ";");
for (int j=0; j < tmp.length; j++) {
data[i][j] = tmp[j];
}
}

//calculate Sum
for (int i=1; i < file.length; i++) {
for (int j=1;j sum += float(data[i][j]);
sumRow[i] += float(data[i][j]) ;
sumColumn[j] += float(data[i][j]) ;
}
}

//Chart Title
textSize(20);
fill(0);
text("Chart Title :: messages",width/20,height/20);

translate(width/20, height/7);

//Draw Area
strokeWeight(1);
fill(99);
rect(0, 0, r, r);

//memori yoko
line(0,-height/36,r,-height/36);
line(0,-height/36+5,0,-height/36-5);
line(r,-height/36+5,r,-height/36-5);
textSize(height/48);
fill(0);
text("X-axis Name (e.g.AGE)",3,-height/36-10);

//memori tate
line(r+width/12,0,r+width/12,r);
line(r+width/12+5,0,r+width/12-5,0);
line(r+width/12+5,r,r+width/12-5,r);
fill(0);
pushMatrix();
translate(r+width/12+3,0);
rotate(radians(90));
text("Y-axis Name (e.g.AREA)",3,-10);
popMatrix();


//Byouga
for (int i=1;i float h = r*sumRow[i]/sum;

for (int j=1;j
//Draw each Rectangle
strokeWeight(0.5);
stroke(50);
fill(100*float(j%((n-1)/2))/float(n),50);
rect(x, y, r*float(data[i][j])/sumRow[i], h);

//Draw figure
textSize(height/96);
textAlign(CENTER);
text(data[i][j],x+(r*float(data[i][j])/sumRow[i])/2,y+h/2);

//Draw Yoko Name
if (i==1) {
textSize(height/80);
textAlign(CENTER);
text(data[0][j], r*(1+2*float(j-1))/(float(n-1)*2), y-height/80);
line(x+r*float(data[i][j])/sumRow[i]/2, h/4, r*(1+2*float(j-1))/(float(n-1)*2), -height/120);
}

//Draw Mid Line (Not Usual)
if (j==(n+1)/2) {
stroke(0, 99, 99);
strokeWeight(3);
line(x, y, x, y+h);
}
x+= r*float(data[i][j])/sumRow[i];
}

//Draw Tate Name
textAlign(LEFT);
textSize(height/80);
text(data[i][0], r+5, y+3+h/2);

//Prepare for Next i
y += h;
x = 0;
}
--------------------------------

帰省中。実家は最寄り駅から徒歩1時間以上。頼りのバス便も絶賛激減中。

そんな感じですが、施設に入っているおばあちゃん(齢89)に会えたので、今年は大吉です。とうに呆けて、手術で身体に機械もいれていて、目も不自由になってしまっているのですが、ベッドの横で何度も何度も話しかけていたら、目を瞑って必死に思い出そうとしてくれて、最後に僕の名前を呼んでくれました。「声を聴けばわかるよ。大事な孫のことは忘れるわけがない」って言ってくれました。

両親が共働きの家庭で育った僕は、根っからのおばあちゃんっ子でした。幼稚園の送り迎えもおばあちゃん、週三回通っていた塾のお弁当もおばあちゃんの手作り。おばあちゃんの作る油っぽいキンピラは、今でも僕の一番の大好物です。

なので、たとえ呆けても、たとえ僕のことがわからなくなっても、たとえ大好物のキンピラを作れなくなってしまっても、やっぱりおばあちゃんが大好きで、会いに行くんだと思います。まともに会話できるのは今回が最後かも、、、と覚悟しながらいつも半ベソでバイバイするのですが、最近は特に辛い気持ちになります。

でも、僕がベソかいてクヨクヨしている姿を、おばあちゃんは望んでいないと思います。なので、せめて僕ぐらいはクヨクヨせず、何にも負けずに、強く、元気に生きて行こうという気持ちになりました。この歳になっても、結局、僕がおばあちゃんに支えられているんだと思いました。

というわけで、今年は大吉です。

928ec36f.jpg













「江戸っ子」という言葉で、
世間は何を思い浮かべるだろう。


宵越しの金は持たず、負けず嫌い。
「夕日が目に沁みるぜ」と涙をごまかし、
奥さんに素直に「ありがとう」を言えず、
口癖は「てやんでぇ。」

と、いったところだろうか。


■江戸っ子(wikipediaより)
「細かい事にはこだわらず商売下手、人情家で正義感に溢れるものの、意地っ張りで喧嘩早く、駄洒落ばかり言うが議論は苦手」


実は、江戸っ子と聞いたとき、
ふっと頭に浮かんでくる人が居る。


浅草の「色川」の大将だ。
(↑微妙に所ジョージ似)


色川は、雷門近くの住宅街の一角に、
ひっそりと暖簾を出す、風情あるお店。
ここの大将、とにかく良くしゃべる。
そして、江戸っ子の例にもれず、口が悪い。


いつものようにそろりと暖簾をくぐり、
「まだやってますか?」と聞いてみると、


「入れ。今日はお前が最後だ。」

「さっさと食って帰れよな。」

「暖簾しまわなきゃなんねぇな」


と、早速のマシンガントーク。


好き嫌いがはっきりと分かれるだろうが、
自分は、小綺麗なお店なんかよりもずっと好き。


老舗の店主は、
誰よりも自分の仕事にこだわりを持っている。
納得できないものは、お客に提供しない。

だから、市場が休みの日曜日は、店も休みだ。
他のお店が営業をしていても、大将には関係ない。
その日に卸した新鮮なウナギを出せるか出せないか。
こだわりの仕事ができるかどうか。


店内はお世辞にも広いとは言えないが、
だからこそ、大将の江戸っ子トークを満喫できる。
その仕事の背景にある「こだわり」に触れることができる。


それを知っているから、
今日も、ついつい、
色川の暖簾をくぐってしまうのだ。


「まだやってますか?」

色川のれん

995fdadd.jpg











世間では、
元清純派アイドルが麻薬使用疑惑か?
なんて事が話題になっている。


「妻もやっていた」と、夫。

「夫に勧められた」と、妻。


このやり取りを見ていて、
「マンモス悲ピィ夫婦だなぁ」と思ってしまった。


なんて時事ネタを書いてみたものの、
もちろん大した関心があるわけでもない。
自分にとって最大の関心事は、今日のメシ

大学時代の同期BOAと二人で、
青山の焼肉屋「よろにく」を訪問。
ずっと前から行きたかったのだが、
予約がとれず、先延ばしになっていたお店。

入り口からして、
どこぞやの料亭の雰囲気。


「サンダルで入って良いのか…?」

と、一瞬だけ足が止まったが、気にせず入店。
せっかくだから、と迷わず9000円のコースを選択。
雰囲気、味、サービス、店員さん、全て◎
予想を超える満足度だった。
(メニュー詳細はリンク先のblogを参照)


代表のVANNEさんと、焼肉話で盛り上がり、
東京焼肉番長なるサイトを教えてもらう。

美味いもん好き同士は、つながるものだと実感。

食後は渋谷まで散歩しながら帰宅。
ドアを開けたら、ひんやり…。。。

エアコン付けっぱなしで出かけていたー

↑このページのトップヘ