日記:物事を教える順序の重要性

今、うちの会社に研修生が来ているのだけれど、その人にHTMLとCSSについて講義を行いました。まずは何が分かっていて、何が分かっていないのか。そこを見極めてから教えていかなければ、教える事ができないので、そこからです。

そもそも、教わる側が初心者の場合は、わからないことがわからないという場合が多いです(つまり事前知識がないという意味)。なので、いきなり「わからないところはどこですか?」と言われても、答えられません。特に勉強範囲が広い場合はなおさら。

今回は、他の人がその研修生の教育係をやっていたのだけれど、いきなりCMSを勉強しなさいというところに話が飛んでしまっていたようでした。そういう話が聞こえていた時点では、自分はもうすぐ会社を辞める身なので、あれこれ口を出すのは憚られるなぁと思っていたのだけれど、その教育係はちょうどお休みで、自分に講師をやってほしいという機会が巡ってきたので話を聞いてみたら「なんでこれをやるのか?」が理解出来ていなかったです。ちゃんと相手の状態を確認してから教育しろよ!と思いましたが、まぁなんというか、こういう人がうちの会社は多いような気がします…。

研修にくる前の授業でも、あまり身にならない授業を受けていたみたいで、「こんなので就職できるのかな?」という気持ちになってほとんど諦めていたらしいし、研修になったらなったで、理解できていない状態で「これやってね!」って言われても、身に付くはずがないですね。自分が何をやっているのかさえわからないのだから…。なんか話を聞いていたら、途中から研修生の愚痴がものすごくなって、全部聞いたのだけれどw、かなりの不満が募っていたようでした。

ハローワークでの職業訓練校だと思うのですが、何年も前の既にほとんど使われていないような技術を教える学校。そこで学んだ(?)技術をもって就職活動しても、即戦力になり得ないから、まぁほとんど落とされますわね…。もし自分が採用側なら、よほど学習意欲が強い人じゃない限りは落とす。そして就職できない、と。本人も、企業も、ハローワークも幸せになれないこの負の連鎖は一体何なのでしょう…。まさにこの前のオープンセミナーの話ですが、戦略的にスキルアップして企業に技術力をアピールできる人材じゃないとこの業界は厳しいでしょう。そのための足がかりを行政がやっているフリですよ、このままでは…。研修生の愚痴っぷりから、その惨状がよくわかりました。

その研修生はまずCMSが何の略なのか?というところから知らなかったので、そこを説明して(Contents Management System)、その後、CSSを使うのは何故か?HTMLのマークアップの正しいやり方の概要と、なぜそうする必要性があるのかを説明して、まずはHTMLとCSSを使えるようになること!これが最優先です!と伝えたところで、2ヶ月くらい溜まっていたモヤモヤが吹っ飛んだようで、スッキリしましたと言われました。そう言っていただけると講師をした自分としても嬉しかったですね。よかった!まぁ何度も同じようなことは教えているので、ここら辺は慣れているんですけどね。

理解と納得があって前に進められるようになるので、「何故これをやるのか?」を一番最初にわかってもらうようにすること。「何故」が腑に落ちたら、あとは分からないところは質問できるようになるし、なにより自発的に動けるようになるので、ここが一番重要ですよね。人間は行動に意味を求める生き物なので、意味がわからないとやる気もでないし。それでやる気を出せって言われても、ねぇ…。無理でしょ…。


日記:オープンセミナー2010@徳島に参加

土曜日にオープンセミナー徳島に参加してきたのでその模様をば。
今回のオープンセミナーのテーマは『オープン技術者とワークライフバランス』でした。

講演内容は以下の通り。

  • 「企業にとってのHacker-Centric Culture」
    楽天株式会社 吉岡 弘隆さん
  • 「僕の異常な就職活動 〜または僕は如何にしてESを書くのを止めてコードを書くに至ったか〜」
    KLab株式会社 坂本 和大さん
  • 「マイクロソフトにおける女性のワークライフバランス」
    マイクロソフト株式会社 オーディエンスマーケティングマネージャー 舟越 美宝さん
  • 「勉強会開催に必要なもの」
    中国GTUGマネージャー 横山 隆司さん

最初の楽天の吉岡さんは、勉強会を何度も主催され、若いハッカーの発掘や育成に精力的に活動されている方でした。講演の内容は以下のような感じでした。

イノベーションは企業ではなく、人が起こすもの。そのような優秀な人材が育つ土壌をどのように準備するか。有能な技術者は新しい事を知りたいという欲求があるのでセミナーに勝手に出かけていく。そこで同じような人達と出会い、繋がりができて、楽しくなり、モチベーションがあがる。

学生とかでも、中学生・高校生の頃にプログラミングに興味があるような人っていうのはおそらく学年に一人いたらいいほうで、そういう子たちも孤独を味わっている。しかし学生を対象にしたITキャンプを開催したら、全国から似たような連中が集まってきて、同世代で話が通じるのだから楽しくない訳がない。そしてリアルにすげぇ奴がいっぱいいるということを知る。
「自分は一人じゃないんだ」という気持ちが支えになり、またこういうイベントに来たい!と思うようになる。それが新たな価値を生み出すエンジンになる。

こういう活動から生まれた価値を企業や組織に還元されると、個人・企業ともに得られるものがある。例えば、社外で学んできた内容を社内勉強会に持ち帰り、社内でシェアすれば組織としても成長する。

また、オープンソースに積極的に関わることで、ハッカーにとって働きやすい環境を作る。Web屋さんは(開発者・サーバ屋さんともに)OSSを積極的に使い、不具合を直したり、ノウハウを共有したり、それらをコミュニティに還元したりしている。
企業として、ノウハウの流出を怖れて活動させないのではなく、そのような活動を行う個人をどう応援するか?まずコミュニティでの活動を応援する。また、日本の企業のエンジニアはなぜかハンドルネームで(プライベートを強調して)OSSに関わっているパターンが多くて企業としても勿体ないことをしていると感じる。そこで、会社の公なガイドラインを策定する(情報発信は、我が社のエンジニアとして発言してもらうというような)。

といいつつも、実は宴会がやりたくて勉強会やるけどどうだ?と声をかけたら見知らぬ30人が集まって異常に盛り上がったのが事の発端。やっぱり勉強会は(懇親会も含めて)楽しい!!

というような内容でした。(たぶんあってると思うけど…間違ってたらご指摘ください)

【追記】2010/10/27
吉岡さんのセミナーのスライドが公開されていました!
ありがとうございます!

次に、坂本さんの講演。これは学生のみならずフリーランスや転職組にも必ずためになる内容でした。

昨年(2009年)の9月からプログラミングを勉強して、3月にmixiアプリをリリース。その開発経緯をブログに公開し、仕事・就職先を募集したところ、その記事がハテブされまくり、実際に数社からオファーがあり、その中から企業を選んで就職したという話。

その勉強経緯が非常に戦略的である。内容は以下。

IT系の仕事をやろうとは最初から決めていた、と。そこで、普通に就職活動を行って一般的なSIerに入り、プログラミング研修を受けて…という道も考えたが、遠過ぎやしないか?と。本当に自分がやりたいのはそれか?と。
現在はブログやtwitterなどがあるのだがら、とにかくオープンに活動をしていれば、他の人や企業に見つけられるような場が存在する。そこからレスポンスが貰える。だったらもうコード書いてしまったほうが就職活動するよりも早いんじゃないか?というふうに考えが至った。
勉強する言語をphpとjavascriptに絞る。Amazonでレビューを見て良書を探し、詰まったらGoogleで検索して似たようなことを解決している情報を探し、twitterで最前線で活躍しているエンジニアからアドバイスを貰うことができたので、短期間で高速に成長できた。インターネットがあるのでそのような土台がもう既にある。

当時、mixiアプリがまだ情報も少なく、しかし流行りそうだった。またアプリはあっても質が悪いものが溢れていたので、それなりのものでも評価してもらえる=チャンス!と判断。そこで一行小説を思いついた。
まずプロトタイプを作成。しかし、一行小説といわれても何を書けばよいのかわからない。そこで、制限を設けた。タイトルの自動設定。プロローグの自動生成など。入り口があるのでユーザが何を書けばよいのかで迷わなくなった。

なぜこの就職活動が上手く行ったのか?それは、とにかく動くものを作り上げること。それを公開する場が存在したこと。mixiアプリに関する情報があまりない時期に記事をまとめる事ができたこと。そしてタイミングが良かった、と。

ここからは私の思うことですが、まずはその人がどのくらいのポテンシャルがあって、どんなものを作れるのか、伸びしろはあるのか等が、エンジニアを雇う際の重要な点になるかと思います。採用側がそれを知るには、どういう活動をしているかがオープンであればあるほど有利です。技術ブログを書いているというだけでなく、できればオープンな形で自らアプリをリリースしていること。これが一番の履歴書・経歴書になると思います。紙上に書かれている資格やほとんど実際には関わっていないかもしれない職務経歴書などはエンジニア採用側からすれば(業務の必須資格でない限り)、ほとんど参考になりません。
楽天の吉岡さんも言われていましたが、これはむしろ正攻法だと。自分もそう思いました。

坂本さんのハテブされまくった記事はこちらからどうぞ

さて次は、舟越さんの講演。
ワークライフバランスなので、まさに今回のテーマにドンピシャな内容でした。

マイクロソフトに入社して10年間のワークライフバランスの遷移に関してグラフで表現。入社したての頃は仕事一筋で忙しく、プライベートの充実度は低いままだった。その後、出産で休職。ここで子育てに専念し、プライベートの充実度が100%に。その後、復職・移動があって子育てしながらの慣れない職場での仕事でハードワークになったけれど、現在は周囲の人達の支えもあって、ちょうど良いバランスですという話でした。

ハードワークになってくると、あまり家庭の事が考えられなくなってしまうので、そういうときは一旦自分の気持ちを整理することが重要だということを強調されてました。なにが大事かを見失ったら、何のために働いているかもわからなくなりますしね…。

そして、バランスを取るために社内制度とテクノロジーを活用するというお話がありました。マイクロソフトは週に2日以内の在宅勤務が可能で、その在宅時の際にはLive Meetingを活用。自宅にいながらにして会議をしたり情報共有が可能であり、家で仕事をするうえでとても便利である。こういうテクノロジーによって在宅勤務しやすい環境も整っていると。たしかにそうだなと思いました。自分も遠方の方との会議はよくスカイプ会議やってます(マイクロソフトの技術じゃなくてすみません!)。
また、ワークライフバランスがよいと、生活が活き活きとするため、アウトプットの精度がよくなるということでした。

そして、舟越さん自身はマーケティング部門の方なので、マイクロソフトの技術部門の方達にワークライフバランスについてアンケートを取ってこられてて、それを公開してくれました。見る限り、非常にやりがいのある環境みたいだなと感じました。また、その中で「仕事をしないことがワークライフバランスではない。エンジニアはテクノロジーに触れているときが至福であるため、そのような機会を損失させるような強制力は鬱陶しい」という意見があり、すごく共感できました。たぶんこれはエンジニアだったら、みんな考えるところじゃないかなーと思いました。

そして最後は中国GTUGマネージャーの横山さんの講演。
ちゃんと聞いてほしいということで、twitterとUstream禁止ということでした。
ブログにはまとめてもよいと思いますので(勝手にですが)まとめます。

勉強会開催に必要なものは、やる気と場所とテーマ。
twitterやUstreamは別になくてもいいので、もし出来たらやる程度の考えでいい。

実際に講師を呼んだり、日程調節したり、場所を確保したり、告知したり、スポンサー付けたりするのは大変!これを実行委員長がやろうとしているのは失敗の可能性が高い。もっとうまく人に協力してもらうべき。
また、開催者がいないとイベントは開催できないのだから、我こそはという方は、なんでも自分のできることからでいいから、主催者をサポートしてあげてください!そして参加者の方々からアンケートなどにも意見がいただけると、次回の参考になりますし、参加者が希望するテーマを優先してイベントを行うことができます、と。

200人近くの参加者のイベントを成功させた元実行委員長の言葉というだけあって、非常にためになるお話でした。自分としても自宅で勉強会をやっているのだけれど、これが規模が大きくなると自宅でというのも難しくなっていくかもしれませんし、また初心者向けにハンズオンをやってみたいなとか考えていたので、考えなければならないことが多いなと改めて思いました。
まぁ、無理をしないようにやればよいというところでしたが、そうですね。
イベントの主催者にはなるべく協力していきたいと思います。

この後LTの司会で、メイドと猫娘が登場するなど、非常に盛り上がりました。
(なぜメイド?と思ったら、オーダーメイドというシステムのキャラらしい…が合ってる?)

懇親会もとても楽しかったです!!2日続けて飲み会で(まぁ僕はちょっとしか飲まないんですが)、いろんな話が聞けて、充実した2日間でした。やっぱり勉強会には参加したほうがいいよ!?と思います。楽しいし。


日記:Androidセミナー in 徳島に参加!

有給休暇を取って、金曜日に徳島県で行われたAndroidセミナーを聞きに行ってきました。また、土曜日のオープンセミナーにも参加してきました。あと、に本Androidの会 女子部によるAndroid Touch & Try!にも参加しました。これが最初。

Android Touch & try!は、日本Androidの会 女子部のmorihimeさんが講師となって、Xperiaを体験してもらおうという感じの会でした。時間が1時間しかなかったので、かなーりはしょった説明になっていましたが、まぁ仕方ない事だと思います。1時間じゃわかりにくいよなぁ〜。実際、初めてXperia触ってる人は、どーなってるの???という感じになってました。やっぱりAndroidはITリテラシーが高くないと使えないのか?うーむ…、まぁ慣れの問題だろうと思いますけど。

twitterをよく使うユーザはTimeScapeを使ったりとかしたら、面白かったのかもしれないんですけどねー。単に電話として使うだけなら、確実に一般ケータイのほうがいいだろうと思いますし。ネットとの親和性を体感してもらうには1時間は短過ぎる!あとはBumpやってもらうとかー。

そして、金曜日のAndroidセミナーの内容は、

  • 「なぜ?Androidが注目されているのか?」
    日本Androidの会 四国支部 支部長 兼久さんの講義
  • 「ドコモのスマートフォン戦略」
    NTTドコモ スマートフォン事業推進部 技術推進担当部長 武田さんの講義
  • 「Androidの現在とメディアの未来」
    日本Androidの会の会長の丸山先生の講義

の3本でした。

最初の兼久さんの講義は、まずAndroidとはなんぞや?を説明するところから始まり、Androidの会の活動状況や、活動内容などを説明されていました。その後、Androidの組込みに関する話。Androidはオープンソースになっているので、欲しい機能だけを切り出してカスタマイズすることで容量を減らすことが可能。OESF Market Projectによる独自のマーケット構築に関する話を聞きました。アプリの販売というだけでなく、Android端末に対する物販サイト(サイトではない?)が簡単にできるという話でした。サーバを構築するだけでよいのならば、それほどハードルが高い訳ではなさそうでした。試しにやってみたいところです。

次に、武田さんの講義、ドコモのスマートフォン戦略についてでしたが、ドコモの今までと現状、そしてこれからの戦略について非常に面白く講義していただきました。
ドコモはそもそも通信屋であり、AppleやGoogleとは違う事業形態である。
Appleは端末を出すだけで自分たちのコンテンツ販売網にユーザを囲い込むことができる(AppStore)。
Googleは広告配信がメインだから、OSを無料で提供しても広告配信される端末数が増えれば(携帯端末に限らず、テレビやカーナビなど)、広告料金が見込めるようになる。
ドコモが行っていたコンテンツ課金に対して、Apple、Googleが行っている戦略は非常にやりにくい相手。総務省の販売奨励金のゴタゴタもあり、携帯端末販売数の成長は鈍化し、音声通信の量も減ってきたが、データ通信は成長していた。そこでスマートフォンに力をいれることにした。スマートフォンは大飯喰らい(通信頻度が多く帯域を多く使う)ではあるが、データ通信による収入増を狙うにはよい。また、従来のAndroid Marketは混沌としているので、情報を整理してユーザに提供することでコンテンツ課金を狙いたいという内容だったと記憶しています。
また、Xperiaのエクレア化(2.1化)は現在やっている最中なのでしばらくお待ちくださいとのことでした。

この講義の後、GalaxySとGalaxyTABを触らせてもらいました。

GalaxySはiPhoneを完全に意識した作りになっていました。ホームアプリのUIが、当たり前だけどHTCのUIとも違うし、普通のAndroidのUIとも違ったので、結構戸惑いましたが、構えば構うほど、iPhoneぽいUIだなーと。短時間だったので、全部わかったわけではないですが、Desireのほうが完成度高い気がしました…。まぁまだGalaxySは発売されてませんからね!もうすぐですけど。

GalaxyTABは、見た目は若干しょぼそうな感じでしたが、操作性と軽さはとてもよかったです!あれは売れるんじゃないかな〜。7インチは結構いいサイズですね。片手で持って疲れないサイズ。iPadは重過ぎて片手だと疲れるってよい言いますしね。iPadは少ししか試したことありませんが、自分もそう思います。

最後に、丸山先生の講義でした。
ムーアの法則が効いてて、昔のスパコンが今じゃ手のひらの上の携帯端末になっている。つまり、地球上には50億台のスパコンがあるようなものだと。そして、インターネットとその上に乗っかるプラットフォームによって(twitter, facebook, zynga, ebayなど)情報の爆発が起こり毎日大量のデータがやりとりされ、そのデータをさばくためには、こちら側も従来と同じ手法ではできない。そこでクラウドによるスケールアウトとなる。
また、エンタープライズシステムよりも、コンシューマ向けのWebシステムのほうが規模も情報量も大きく、技術的にも大変(ここ、個人的に重要だと思う!)。これらは巨大なシステムで、毎日何億人というユーザをさばいている。こんなことは今までなかった事態。

(ここら辺より途中から睡魔に襲われ、記憶が断片化しました…。すみません…。)

企業によるネットの制限が厳しく、企業が家庭に負けている。例えば、USBメモリ使えない、DropBoxやSkyDrive使えない、SNSにアクセスできない等など…。こういうことを続けていれば、確実にどこかで代償を払うようになるだろう。とまぁ、Androidというよりはクラウドの話になってしまったけれど、AndroidはPCでできることほとんどをできる端末。例えばさっきのDropBoxやEverNoteなどもAndroidで全て扱える。そしてさきほど紹介したクラウドとの親和性が高く、これから爆発的に普及していくのではと思います。

というような内容だったかと思います(途中、脚色しているかも…記憶が曖昧…)

その後の懇親会に参加したのですが、DoCoMoの方や丸山先生、Android女子部の方々と交流できてとてもよかったです!!morihimeさんにBatteryCrystalを見せたら、食いついてくれて、「これ(Andronaviで)レビュー書きたいわー!!」と言ってくれたので超期待して待っておきます!!(ただし、音声エディタはアイコンで損してるって言われた…)

土曜日のオープンセミナーについては次回書きます。


日記:苦悩

この数日というよりも、前から感じていた事。
自分は自分の正義を押し付けているのではないかということ。
それによって人を傷つけているのではないかということ。

自分は割と実行力のあるほうだと思う。
ある程度、自分の中で最低でも7割くらいの確信があれば、まずやってみて、ダメだったらそのときは他の方法を考えるという戦略でいいと思っている。やってもないことをぐちぐちというのは、まぁ言うときもあるんだけど(そのときは自分の中でそれが3割の確信にも満たない場合とか)、前に進めないじゃないかと思う。なんでやらないんだろう?

「ライバルは昨日の自分」

これは自分が心に刻んでいる言葉で、昨日の自分よりは必ず成長することを心がけるようにしている。どっかのブログでも見たけど、毎日1%のカイゼンを行えば、365%のカイゼンが行えると。3.5倍も成長とまではいわなくても、前進している感じを掴んでいないと気持ちが苦しくなってくる。

おそらく日々の憂鬱ってのは、成長しなかった1%が積もってきたものだ。その1%の蓄積は、いきなり100%を消化できるようなもんじゃない。世の中にそんな魔法はない。

成長しない自分を見て悩んでいる人たちに、「じゃあやってみればいいじゃん」というと、「できない」とか「する時間がない」とかいわれてしまうのだが、そんなのは嘘だ。甘えだ。やってみればいい。やらないで過ごしたであろう未来の自分の顔と、やってみたであろう未来の自分の顔を想像してみるだけで、どちら側になりたいかは明白だろう。

もちろん常にできるわけではないけれど、そういう考え方を念頭に置いておくと、エイヤッとやってしまう方向に舵を切る確率が上がっていく。少しずつ、そういう方向に持っていく。慣れてくると、それが普通になる。そうなれば後は楽。というか、そっちのほうが楽しくなってくる。ワクワクしてくるはずだ。

それがわかっているので、こうしたほうがいいよっ!!というと、相手方との心理的なギャップがありすぎて、相手が付いてこれない。これが自分が自分の正義を押し付けているのではないかと思うところ。まぁこれは色んな面でいえる事で、誰しもがそういう思考にはならないと思うので(自分もあまり興味ないこととかに強烈に誘われたら引く!)、別にいいと思うのだけれど、それがビジネス(自分の生業)に直結している場合は話は別だろうと思う。

長期的な視野に立って、今何にお金・時間・人材を投資しておくのが大事なのか。これってビジネスじゃなくて人生もそうだと思うけど。短時間で効果的な成長をするための戦略なしに漫然と日々を過ごしていたら、置いていかれてしまう。なんかこんな風に書いていると、強迫観念にかられて生きているみたいで嫌だなぁと思うかもしれない。そうじゃない。置いていかれると、すごーくつまらなくなってしまうってこと!!そしてそのときに出来てしまった溝は、到底すぐには埋められないくらいの大きさになっている。成長曲線を思い出してほしいのだが、最初はゆるやかで徐々に急カーブを描く。つまり、途中から参入してもほぼ追いつけない。よほどの天才か、何倍も時間を投資しない限りは。

こう思っていたとしても、相手もそれを認めていたとしても、心理的ギャップがあるから受け入れられない。受け入れられないから、成長戦略が確立せずに漫然とした日々を過ごし、溝がさらに開いていく…。というスパイラル。自分の正義が押しつけだから、そうなってしまうのかなと。まぁ正義っていうほどのことじゃないんだけど…。カイゼンしようぜ!って言ってるだけなんだけど…。他人との相対比較じゃなくて、自分との比較。

こういうふうに書いてると、俺って人望ないんかな〜…って思ってきた。

明日は早いからもう寝よう…。


Java: スレッドの制御を学ぶ(スレッドの同期)

別のスレッドに処理を任せておいて、その処理が終わったかどうかを確認したい場合、Threadクラスのjoinメソッドを使います。
joinメソッドには引数の異なる3つの種類があるようです。

  • void join()
  • void join(long millis)
  • void join(long millis, int nanos)

引数のないjoinメソッドは該当するスレッドが終了するのを永久に待ち続けるらしいので、間違えると無限ループ発生しそうですね。間違えないように使おう。引数のあるタイプは、待機時間の上限です。指定時間を経過してもスレッドが終了しなかった場合、joinメソッドの実行は終了します。
外部のスレッドからinterruptメソッドで割り込まれた場合はInterruptExceptionが発生するそうです。

サンプルコードを以下に。

public class JoinTest extends Thread {

    public void run() {
        for (int i = 3; i >= 0; i--) {
            try {
                sleep(1000);
            } catch (InterruptException e) {}
            System.out.println(i);
        }
    }

    public static void main(String[] args) {
        JoinTest t = new JoinTest();
        t.start();
        try {
            System.out.println("スレッド t の終了を待機します。");
            t.join(); // runの処理が終わるのを待つ
            System.out.println("スレッド t が終了しました。");
        } catch (InterruptException e) {}
    }
}

スレッドの終了を待つのではなく、実行中のスレッド同士で同期処理を行いたい場合は、notify, notifyAll, waitメソッドを使用するそうです。waitで待機状態に、他スレッドでnotifyかnotifyAllがコールされると、waitメソッドが終了して処理が再開されるそうです。waitメソッド中はロックが解放されるので、同じオブジェクトを使用するスレッド同士での同期を行うために使うとか。なんかここらへんは間違いないようにするためにノウハウが要りそうな気がしますね〜。