Hatena::Diary

Learning Punks このページをアンテナに追加 RSSフィード

2009/10/11/

美容師の教育コストが高すぎる件

| 12:38 | 美容師の教育コストが高すぎる件 - Learning Punks を含むブックマーク はてなブックマーク - 美容師の教育コストが高すぎる件 - Learning Punks 美容師の教育コストが高すぎる件 - Learning Punks のブックマークコメント

髪を切りに行った。

担当の美容師との会話で美容師の教育についての話題になった。

僕「美容師ってお店に入ってからどれくらいで髪が切れるんですか?」

美容師「最短で3年半はかかりますね。これでも早くなった方ですよ。

    僕らのときなんか最短で5年はかかりましたよ。」

髪を切るために就職したのに3年半も髪が切れないなんてすごい業界。。。

僕「でも専門学校とかで勉強してきてるんでしょ?」

美容師「いや、あれは資格を取るための学校だから、実際は何にもできないんですよ。

    車でいうところの、仮免よりひどいですよ。」

僕「ちなみにお店に入ったらどんなことを学ぶんですか?」

美容師「髪質や顔の形の組み合わせからどうやってカットするかですよ。

    これだけでかなりのパターンがありますし、

    カラーやパーマも入ってくると膨大な量ですよ。

    で、それらを実戦で最低300人は髪切る感じですね。」

僕「うお、結構ハードですね。」


しかもほとんど自前でカリキュラムを作っている。

カットモデルの調達なんかも自前だし教育にかけているコストが半端ない。

それだけやってたらもっと単価を上げたいところだけど、駅前1000円なんていうダンピングモデルも登場して、業界的にはきびしい状況らしい。海外なんかだと一回20,000円とかはざらにあるらしく日本は付加価値に対して正当な対価が支払われていないようです。日本の美容師の平均レベルは間違いなく世界一だと。

業界的な問題点はいくつかあると思いますが、そこまで安定した技術を担保しているなら、顧客に対してもっとプレゼンするべきですし、技術的な付加価値を理解させる努力が必要だと思います。とは言ってもいきなり20,000円とか取り始めたら客が来なくなって潰れてしまいますので難しいところ。

教育コストも大きな問題ですね。

実践で使えないのに雇っているのは企業としてかなり痛いですし、半分教育機関的な役割も担っていると。

それこそ規模の経済が働く仕組みになってくる。業界的な標準化が必要なのかと思います。

さらに技術的に世界トップレベルなのであれば海外展開もちゃんと検討した方がいいと思います。

上海やシンガポールなんかの富裕層向けに展開してもいいのではないかと思います。

僕自身教育関係のビジネスをしているので、3年半の教育カリキュラムをちゃんと体系化すればかなり付加価値の高い教育コンテンツになる気がします。

2009/09/07/

人並みに仕事をするための僕流tracタスク管理

| 15:09 | 人並みに仕事をするための僕流tracタスク管理 - Learning Punks を含むブックマーク はてなブックマーク - 人並みに仕事をするための僕流tracタスク管理 - Learning Punks 人並みに仕事をするための僕流tracタスク管理 - Learning Punks のブックマークコメント

自分の会社でのタスク管理にはtracを使っています。色々なタスク管理を試して見て、ここ2年くらいはtracに落ち着いています。自分なりに工夫しているポイントを書いていきます。

自分の課題:目の前のものがうまく制御出来ない

自分にとっての課題を一言で言ってしまえば人並みに仕事ができないこと。その理由は、

  • 集中力がない
  • 常に発散思考
  • 物事を順序立てて考えられない

なんか仕事に取り組んでいると、あらゆるものに目がいってしまうんですよね。細かい作業をしているのに、そういえば全体の計画はどうだっけとか、設計しているときにプログラミングの勉強をしないとなとか。それで、気になって別の仕事を始めてしまったりすると、大したことない仕事に異常に時間がかかってしまう。そんな状況で大きな仕事に意気軒昂に臨むも玉砕してしまう。

自分の指針は、大計画以前に目の前のタスクを効率的に裁けるようにすることが狙い。そのためには、サクサクと使えると嬉しい。


Firefoxサイドバーで2-Pane表示

FirefoxではサイドバーにWEBページを読み込む事が出来ます。

f:id:numaken:20090907150829p:image

擬似的にですが、2Paneでタスクを閲覧することが出来て便利です。

画面遷移を省くのと、全体を見ながら部分も詳細に見られる所がポイント。

方法

レポートをブックマークして、対象のブックマークを右クリック→プロパティ→「サイドバーに読み込む」をチェック。タスクのテーブルの列が多いと見にくいので、idとタイトルくらいレポートを作っておいた方が良いです。

ショートカットでどこでもタスク登録

自分の場合は割と細かいタスクの管理に使っているので、思いついたらすぐにタスクを登録したい。どこからでも呼び出せるショートカットを作っています。

私の場合は、ラウンチャーとしても使っているClaunchで設定しています。

ctrl+shift+alt+Nで新規タスク登録画面が開くようにしています。

WYSIWYG Editorで細かく書く

やること全てをタスクにすると流石に煩雑になるので、チケットの中に箇条書きにします。箇条書きにするときには、WYSIWYG Editorを使うと便利です。Tab/Shift+Tab/Enterといったキーボード操作で箇条書きの編集が出来て、さくさく書けます。

↓インストール

http://fdays.blogspot.com/2007/11/tracwikiwysiwyg.html

箇条書きの要素が終わったら、装飾をStrike throughにします。tracの醍醐味である「タスクが減った感」をいちおう味わう事が出来ます。

f:id:numaken:20090907143752p:image


svnのリンクを簡単生成

会社ではWordやExcelなども含めSubversionでファイルを管理しています。チケットにパスを貼りたいときに、普通にやるとディレクトリのパスをコピペして、その後に追記する形でファイル名をコピペしないといけません。そしてさらに、SVNの記法にしようとしたりすると\と/を変換したりが面倒。

ファイルを選択して送るとtracに貼り付けるための文字列を生成してくれるツールを自作して使っています。

↓生成される文字列

source:02_project/090320/01_doc/01_企画/dummy.txt

[C:\glpgs\02_project\090320\01_doc\01_企画\dummy.txt]

方法

汎用性とか無視して作ったものです。パスが決め打ちになっていて非常に適当なものですが、ソースを貼ります。必要ならば、コンパイルして使ってみて下さい。言語はC#、開発環境はVisualStudio2008です。コマンドラインツールのプロジェクトを新規に作って自動生成されたクラスにコピペすれば恐らく動くんじゃないかと。

コンパイルして出来たexeをsendtoフォルダにコピーすれば、送るメニューに出てきます。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace TracLinkMaker
{
    class Program
    {
	//ローカルのSVNルート
	private static string SVN_ROOT = @"C:\svn\";

        [STAThread]
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                string myPath = getTracLinkPath(args[0]);

                Clipboard.SetText(myPath + "\n" + "[" + args[0] + "]");
            }
        }

	//tracのSVNリンクを生成
        private static string getTracLinkPath(string path)
        {
            if (path.StartsWith(SVN_ROOT))
            {
                path = path.Replace(SVN_ROOT, @"source:");

                path = path.Replace(@"\", @"/");
            }

            return path;
        }
    }
}

tracで業務報告

tracでタスク管理をしていると、「業務報告はtracで良くね?」と思うもの。それを最低限実現出来るようにする方法です。ログインユーザーが今日行ったタスクを一覧で見せるレポートを作ってそれをメールにコピペしてます。社内でHTMLメールが許容されるのであれば、メーラーへのコピペだけでリンクが生きるので「詳細見たかったらTracのページでねー」風になるのはちょっと格好良いかと。

レポートのSQLは以下のような感じです。

SELECT 
id AS ticket, component, summary,
case
when status = 'closed' then '終了'
when status = 'new' then '新規'
When status = 'accepted' then '着手'
when status = 'assigned' then '割当'
when status = 'reopened' then '仕掛り'
end as __group__,
resolution,
(CASE status WHEN 'new' THEN 'background:#faa; border-color:#a11; color:#700'
WHEN 'assigned' THEN 'background:#ccf; border-color:#33d; color:#007' 
WHEN 'reopened' THEN 'background:#eef; border-color:#33d; color:#007' 
WHEN 'accepted' THEN 'background:#cfc; border-color:#3d3; color:#070'
WHEN 'closed' THEN 'background:#bbb; border-color:#aaa; color:#888 a color:#888  a text-decoration:line-through'  END
) AS __style__
FROM ticket t
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE date( datetime(changetime,'unixepoch', 'localtime') ) = date('now')
AND reporter = $USER
ORDER BY __group__ DESC, reporter, status, CAST(p.value AS int), id DESC, t.type, time



あわせてどうぞ

未解決の trac ticket 一覧をだすスクリプト - TokuLog 改めB日記

チケットで工数管理(Shibuya.trac 2009新年会 発表資料) - almost nearly dead

Trac(Lightning)でプロジェクトを作成して最初にやること - かおるんダイアリー

2009/09/06/

企業内人材育成とeラーニング

| 16:06 | 企業内人材育成とeラーニング - Learning Punks を含むブックマーク はてなブックマーク - 企業内人材育成とeラーニング - Learning Punks 企業内人材育成とeラーニング - Learning Punks のブックマークコメント

eラーニングの課題とOFF-JTの課題

ここでいうeラーニングは企業内教育で扱われるいわゆるPCを使ったeラーニングのことを指します。

現在のeラーニングには大きな課題があります。

それは企業内人材育成ツールとしてこれ以上領域を広げられないということです。

現在のeラーニングコンテンツのほとんどはCSR、法律、プログラミング言語などの業務に必要な専門知識を記憶する形式のコンテンツです。実務を遂行する上で最低限知っておかなければいけない知識を獲得するためのツールとしてeラーニングは普及しています。

eラーニングの役割として人事部門の研修コストの削減としか捉えられない点に課題があります。本来、企業にとって人材育成の目的は、単なる知識、スキルの習得だけではなく、経営目標の達成に直接的な貢献をすることが出来る人材の育成です。専門知識の記憶化だけでは売上は上がりませんし、経営目標の達成に直接的な貢献をすることが出来る人材は育成できません。つまり現在の企業向けeラーニングは人事部門付きコストの削減ツールでしかないということです。顧客に与える価値はコスト削減ですから今後の市場動向としては各社の価格競争以外に考えられません。現在この市場は500億程度ですが、今後は中小企業などへの普及も進み、ある一定の規模の市場になると予想されますがコモディティ化が加速します。

また、対面型企業研修も同じです。研修の効果を経営目標直結型の指標で示すことが出来る研修企業はないと思います。間接的な指標を使って研修の効果を示すしかないのが現状です。さらに研修は実施期間が決まっていますからスポット的なカンフル剤としての役割しか担えません。その研修により企業業績が上がったと示すデータを集めることすら困難です。これでは真っ先にコスト削減の対象になります。さらにこれらOFF-JT活動は企業活動において相対的な活動時間が短いことも市場の拡大を妨げています。

企業内人材育成という観点から人の成長を考える

企業内人材育成という枠組みで考えるとeラーニングはひとつのツールです。

以下のような枠組みで考えたときにeラーニングが入り込める余地は現在のところOFF-JTと自己学習の領域でしょう。これをビジネスマンの実働時間比で見ると非常にその時間の割合が小さいことがわかります。

前職の経験と照らし合わせてもOFF-JTの時間は皆無に等しかったです。

ここで言いたいことは企業内人材育成の本質はOJTにあるということです。

結局使える人材を育成するには経験をつませるしかありません。いくら知識やスキルを習得しても実務で生かせなければ意味がありません。企業の業績に貢献するには知識やスキルだけではなく、コミュニケーション能力や問題解決能力や論理的思考能力といった定性的であいまいな能力も当然必要になってきます。むしろそちらのほうが本質ですが。

特に幹部育成やリーダー教育などは修羅場を経験させることが最も効果的といわれています。人材の配置換えや権限委譲によって失敗体験や成功体験を繰り返しつむことで「信頼を含めた企業業績に貢献できる」スキルを獲得します。一皮向ける経験をさせるなんてことはよく言われます。

私自身も業務経験でしかビジネスパーソンとして成長したと感じたことはありません。

OJTで効果的に人材育成を行うための施策のほとんどは人事制度設計になると思います。若手の積極登用だったり、メンターを配置したりなど業務内に人を育成する仕組みを組み込めるかが鍵になります。

つまり成長を実感する場が職場内にあるのだとするとOFF-JTや自己学習は補足的な意味しか持ちません。そうなると自己学習やOFF-JTは必要ないということになりそうですが、そうではありません。自己学習やOFF-JTの使い方によってはOJTでの成果が大きく変わることはあります。

現在、ビジネスパーソンに求められるスキルは多様化、高度化していますから、これらすべてをOFF-JTでまかなうことは不可能です。企業という単位で社員一人一人にあった独自のコンテンツを用意することはコスト面から見ても制度面から見てもありえません。そうなると必然的に自己学習が重要になるわけです。これは誰かから教えられるのではなく自らが必要な学習を自分にあわせてにチョイスしながらOJTの中で活かしていくという「スタンス」が重要な要素にならざるを得ない状況にあることを意味します。

業務内での成長は他者や組織との関係性から醸成されるものなので制御することは難しいです。ですからビジネスパーソンの成長を支援するには業務時間外での個人の学習をコントロールするしかありません。

2009/09/02/

大人の学習とスキル獲得の必然性の作り方

| 16:20 | 大人の学習とスキル獲得の必然性の作り方 - Learning Punks を含むブックマーク はてなブックマーク - 大人の学習とスキル獲得の必然性の作り方 - Learning Punks 大人の学習とスキル獲得の必然性の作り方 - Learning Punks のブックマークコメント

大人の学習には「P-MARGE」という考え方があります。

P:Practical (実利的) ただ学習するのではなく、「使える」ものを学習したい

M:Motivation (動機) 何か解決したい問題があるなどの動機を持っている

A:Autonomous (自律的) 言われなくても(必要性を感じれば)自分から学ぶ

R:Relevancy (関連性) 自分の仕事や、やりたいことと関連性があることを学びたい

G:Goal-oriented (目的志向性) 何のために学ぶのか、という意志が明確にある

E:Experience (経験) これまでに仕事や社会経験など、実地で学習してきたものがある

社会人の場合、思考リソースの大半を仕事が占めますので、仕事での生産性向上、付加価値向上を学習の目的とするのが最も合理的だと思います。

仕事の延長線上にある能力の獲得を学習の目標とすることで日々の実務ですぐに成長を実感できますし、長期的に仕事の評価も上がります。やはり短期的に反応が返ってくること、実益に直結していることがモチベージョンに繋がり学習自体が継続されます。

僕の場合は、現在やっている業務の目標をアウトプットベースでちょっと高めに設定します。そうすることで現在のスキルだけでは作ることの出来ないアウトプットを作るために色々学ばなければならなくなります。自らの業務の中にスキル獲得の必然性を作ることで、堂々と業務時間中に学習が行えますし、そのアウトプットの評価が自らの仕事の評価に直結するのでモチベーションも維持できます。

自らのキャリア計画という大きなベクトルの中に場当たり的ではありますがスキル獲得戦略をちょこちょこ織り交ぜていくというやり方が「P-MARGE」的にもマッチしているのではないかと思います。

2009/08/24/

Ruby on Railsでモバイルの認証に対応する

| 20:53 |  Ruby on Railsでモバイルの認証に対応する - Learning Punks を含むブックマーク はてなブックマーク -  Ruby on Railsでモバイルの認証に対応する - Learning Punks  Ruby on Railsでモバイルの認証に対応する - Learning Punks のブックマークコメント

Ruby on Railsで構築したアプリケーションをモバイル対応させるときに、

ユーザ認証の部分で行った開発作業をメモとして残しておきます。


やりたいこと

モバイル向けWEBアプリケーションでユーザ認証と言えば、

セッションIDをURLで引き回す手法が一般的かと思います。

今回は、セッションIDを引き回す認証方法ではなく、

キャリアから通知される契約者番号(以降UIDと呼ぶ)を利用して認証を行ってみたいと思います。


# っていうか、全機種でcookieが使えるようになれば楽になるんですけどね(;^_^A


前提

  • Ruby 1.8.6
  • Ruby on Rails 2.3.2
  • restful-authenticationプラグインを導入済み
  • jpmobileプラグインを導入済み
  • Docomo/au/Softbankの3キャリアに対応

方針

Jpmobile::Mobile::AbstractMobile#ident_subscriber でUIDを取得できます。

このUIDを利用してユーザー認証を行う処理を、restful-authentication の処理に組み込む方向で考えます。


request.mobile.ident_subscriber  # UIDを取得→ユーザー認証に利用

参考までに、各キャリア毎のUIDの仕様は次の様になっています。

キャリアIDの名称取得方法通知条件
DocomoiモードID(guid)HTTPヘッダ:X-DCMGUIDURLにguid=ONを付加
AuサブスクライバIDHTTPヘッダ:HTTP_X_UP_SUBNOなし(※)
SoftbankUIDHTTPヘッダ:X_JPHONE_UIDなし(※)

(※端末での通知設定がONになっている必要あり)


作業メモ

  1. usersテーブルにuidカラムを追加
  2. userモデルにuidアクセサ追加
  3. AuthenticatedSystemへの処理の注入
  4. Controllerにinclude

1. usersテーブルにuidカラムを追加

マイグレーションを作成・実行

class UsersAddUid < ActiveRecord::Migration
  def self.up
    add_column(:users, :uid, :string, :limit => 100, :default=>'')
    add_index :users, :uid, :unique => true
  end

  def self.down
    remove_column(:users, :uid)
    remove_index(:users, :column => :uid)
  end
end

2. userモデルにuidアクセサ追加

app/models/user.rb を編集

class User < ActiveRecord::Base
  attr_accessible :uid  #uidへのアクセサ
end

3. AuthenticatedSystemへの処理の注入

restful-authenticationでの認証処理の核は、 AuthenticatedSystem#current_user にあります。

current_userを直接書き換えようかと思いましたが、色々と自信がないので(おいw)別モジュール(lib/mobile_authenticated_system.rb)にて書き換えます。

処理のポイントは次の2点です。

  • モバイルからのアクセスの場合は、uidをキーしてuserを取得
  • ドコモの場合にURLにguid=ONを付与するようにする(jpmobileを利用)

module MobileAuthenticatedSystem
  def self.included(recipient)
    recipient.class_eval do
      include AuthenticatedSystem
      
      docomo_guid  # ドコモの場合にguid=ONを付与 (jpmobile様に感謝!)

      def current_user
        if request.mobile
          @current_user ||= login_from_uid unless @current_user == false  #モバイルはUIDでユーザー認証
        else
          @current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
        end
      end

      # uidの一致に基づく認証
      def login_from_uid
        self.current_user = User.find_by_uid(request.mobile.ident_subscriber) if request.mobile.ident_subscriber
      end
    end
  end
end

4. Controllerにinclude

おなじみのincludeです。

各アクションで必要に応じてlogin_requiredします。

class ApplicationController
  include MobileAuthenticatedSystem
  ・・・・・・・・・・・
end

システムとして完成させるには

以上で、UIDベース認証のための必要最低限な骨組みが完成しましたが、

きちんとしたシステムとして完成させるには、さらに細かい開発が必要です。

  • UIDの登録画面&UIDベース認証を利用するかどうかを設定できる機能 (俗に言う「かんたんログイン」の設定)
  • UIDベース認証の有効期限(一定期間が過ぎるとパスワードログインになる)
  • IPアドレスのチェック (RAILS_ENV='production' の場合だけチェックするようにすれば良さげ)
  • uidの暗号化も必要?

等々


システム要件次第だと思うので、ここでは割愛しておきます。

各キャリア毎の違いをスッキリとさせてくれたjpmobileの開発者の皆様に感謝です。

kumonopanyakumonopanya 2009/08/25 16:11 もし、モバイル対応サイトを作るときは参考にさせていただきます。でも「ruby」を触り始めたばかりなのでいつになるかw

numakennumaken 2009/08/27 09:35 Railsをちゃんと案件で使ったのは殆ど初めだったんですが、
本当に作りやすかったです。お互い頑張りましょうね。