読者です 読者をやめる 読者になる 読者になる

日本の新卒採用はハードウェア重視

Thinking

前回(感情的な人は頭が悪いのか? - Real Artists Ship)の続き

PCを買うときに何を重視するか、人によって違うと思うけど、例えば

ハードウェア重視

CPUのクロック数、コア数、メモリ、HDDなどハードウェアとしてのスペックを見る

ソフトウェア重視

インストールされているソフトウェアでなにができるかを見る(MS Officeインストール済とか)

という考え方があると思う。
これと前回の図を合わせて、

  • 日本の新卒採用 → ハードウェア重視
  • 欧米の採用 → ソフトウェア重視

と考えると、一般に「日本の新卒採用は変」と言われていることにも納得できる説明がつくと思う。

  • 学名は見るけど、勉強した内容を見ないのはなぜなのか?
  • ポテンシャル重視とは?

日本の新卒採用はハードウェア重視

日本の企業の考え方は、こう説明することができる。

  • 仕事のやり方は会社によって違う
  • 実務に必要な知識は会社で教えるのでベースとなる能力が高い人が欲しい

PCに例えると、

  • 会社独自のソフトウェアだから一般的ではない
  • ソフトウェアはインストールし直すのだから、ハードウェアスペックが高い方が嬉しい

欧米の採用はソフトウェア重視

これに対して、欧米では

  • 会社による仕事のやり方の違いが大きく変わらない
  • 一般的な知識を身につければ会社が変わっても通用する

これもPCに例えると、

  • 会社をまたがってソフトウェアが共通化されている
  • ソフトウェアをインストールし直す必要がないので、ハードウェアスペックに目をつむっても、最初からソフトウェアがインストールされていた方が望ましい

知識の扱い

どちらが正しいということはないけれど、これは知識の扱いにも関連しているはず。
前者が一子相伝のように限定された範囲内のみで知識を共有するのに対して、後者はオープンソースのように知識を一般に公開するやり方につながる。

感情的な人は頭が悪いのか?

Thinking

「頭の良さ」には2種類あると思う。
PC(パソコン)に例えると、

  • ハードウェアスペックが高い人
  • 良質のソフトウェアが数多くインストールされている人

直感力・感情というハードウェア

1つ目の頭の良さは、「直感力」「地頭がいい」に近いもので、結果としてコミュニケーション力が高いとか、会話が面白いとかになるのだけど、もっと本質的には「言語化できない部分の情報処理能力が高い人」ということになのだと思う。
例えば

  • 初対面の人を信用できる人か判断する能力
  • 相手の表情や振る舞いから感情を把握する能力

といった能力は、論理的に説明することは難しいけれど、誰もが持っていて「感情」という形で認識している。

論理的思考力というソフトウェア

2つ目は、「論理的思考力」といってもいいのだけれど、単に「論理的に考えられる」というわけではなくて、その上で、例えば、

  • MBAを取得している人(MBA インストール済)
  • 統計学を学んだ人(統計学 インストール済)

といったように、後天的に学習を通じて身につける知識も含まれる。

動物としての人間

進化の過程・歴史を考えれば、最初の頃は「いかに外敵から身を守るのか」が問題だったはずで、直感的に危険を避ける能力を身につけて、その上に後付けで「論理的思考力」を習得したと考えるのが自然。*1

つまり、動物としての人間を考えたときに、最初に「直感力・感情」のための回路があり、それを別目的に利用する形で「論理的思考力」を身につけたと考えるのが自然ではないかと思う。*2

これを、PCに例えると次のような関係になる。

結論

人の頭脳の仕組みがどうなっているかはわからないけれど、上記のような仕組みであるなら、「感情的=頭が悪い」という図式は成り立たない。直感・感情の豊かな人は、そのハードウェアスペックによって潜在的に高い思考力があると思う。

つけたし

以前の会社で「頭がいい人」がいて、学歴もよく(御三家と呼ばれる中高一貫校、理系の大学院)仕事も優秀だったのだけど、子供みたいに感情な動きが激しい部分もあって、とても不思議で魅力的だった。
その人を見て「感情的=頭が悪い」という図式は成り立たないのではないかと考えるようになったのが、このエントリのきっかけ。

脳のなかの幽霊 (角川文庫)

脳のなかの幽霊 (角川文庫)

脳のなかの幽霊、ふたたび (角川文庫)

脳のなかの幽霊、ふたたび (角川文庫)

*1:赤ちゃんや小さい子供は、言語を操れるようになる前に、周囲の人の表情や態度にわかりやすく反応する

*2:人間の思考が、本来の目的とは違う「回路」を利用しているのではないか、という話は「脳のなかの幽霊」にある

TracをWSGIで高速化

Tech

FastCGITracを動かしていると、もっさりしているので、静的ファイルを分離した上でWSGIを使うようにして高速化してみた。

静的ファイルの分離

Trac を設置するときは静的ファイルを分離すると速い - まちゅダイアリー(2008-03-13)に書いてあるとおりにやりました。

WSGI

まずmod_wsgiPython 2.7で動かすようにインストール。(ここでバージョンを間違えると、またリポジトリブラウザが表示されないといった問題が発生する)

sudo port install mod_wsgi +python27

/opt/local/share/trac/contrib/cgi-binに配置したtrac.wsgiの内容。(ImportError: No module named trac.web.mainというエラーが出たのでimport部分を追加)

import os
os.environ['TRAC_ENV_PARENT_DIR'] = '/Trac'
os.environ['PYTHON_EGG_CACHE'] = '/opt/local/var/apache2/.python-eggs'

import site
site.addsitedir('/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages')

import trac.web.main
application = trac.web.main.dispatch_request

httpd.conf の設定。

WSGIScriptAlias /trac /opt/local/share/trac/contrib/cgi-bin/trac.wsgi
WSGIDaemonProcess trac user=_www group=_www processes=2 threads=25 maximum-requests=10000 python-path=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
WSGIProcessGroup trac

<Location /trac>
  WSGIApplicationGroup %{GLOBAL}
  Order allow,deny
  Allow from all
</Location>

これでかなり速くなった。

WSGIウェブプログラミング

WSGIウェブプログラミング

Gitでコミットしたときの名前を変更する方法

Tech

XcodeからGitへコミットしたときに、表示される名前が

漢字の氏名<myAccount@MyMac.local>

みたいになって気持ち悪かったので、変更してみた。
ローカルリポジトリでgitコマンドを使って名前とメールアドレスを指定すればいいみたい。

git config user.name myAccount
git config user.email my.address@sample.com

実用Git

実用Git

初代MacBook AirのHDDをSSDに換装

Mac

自分のではないのだけれど、初代MacBook AirのHDDをSSDに換装したので、そのレポート。

購入したもの

秋葉館初代MacBookAir用SSD換装セットを購入。(後から考えたら、スクリュードライバーは不要だった...)

バックアップ

まず、HDDケースにSSDを繋いで、Carbon Copy Clonerを使ってHDDの内容を完全にコピー。
ここで気づいたんだけど、このSSDはZIFフィルムケーブルを刺す向きが普通とは逆になっているみたい。

フィルム側の接点が上向きになるのが正しい方向。

換装作業

MacBook Airの内部を空けて換装。


このSSDはもとのHDDとは端子がついている面が逆になっているのに注意。

ゴム枠もつけてはめてみると、フィルムケーブルが上から出るようになるので、少し納まりが悪い感じになるけど仕方ないかな。(ここできちんとフィルムケーブルをはめておかないと起動しないので注意!)

ベンチマーク

元のHDD(SAMSUNG HS082HB)

換装したSSD(MXSSD1MNANOZ-120G)

書き込み速度が遅くなっている部分があるのが微妙だけど、使用感は確実に良くなっていて、とくにレインボーカーソルの頻度が低くなってるのが実感できたのでOKかな。

Mach Xtreme Technology MX-NANO 1.8インチZIF 40pin MLC-SSD 120GB (MXSSD1MNANOZ-120G)

Mach Xtreme Technology MX-NANO 1.8インチZIF 40pin MLC-SSD 120GB (MXSSD1MNANOZ-120G)

MacPortsでTrac 1.0にバージョンアップ

Tech

Snow LeopardTracMacPortsを使ってバージョンアップしてみた。

環境

バージョンアップ

とりあえず、MacPortsを2.1.2にバージョンアップして(sudo port selfupdateではうまくいかなかったので、インストーラから入れ直したけど)パッケージを更新。

sudo port upgrade outdated

インストールされたパッケージを見てみる。

apache2 @2.2.22_2+preforkmpm
subversion-python27bindings @1.7.7_0
trac @1.0_0+python27+subversion

Tracにアクセスしてみると...エラーが出て動かなくなってる。

File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch\n default=default_handler, arg=req, silent=hlist.silent)
[error] File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 1202, in _process_target\n module = import_module(module_name, path=path)
[error] File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mod_python/importer.py", line 304, in import_module\n return __import__(module_name, {}, {}, ['*'])
[error] ImportError: No module named trac.web.modpython_frontend

mod_pythonで問題がありそうなので、本家サイトの情報を確認してみると、mod_pythonはメンテナンスされていないとのこと。仕方ないので、FastCGIで動かすことにする。(後で考えるとPYTHONPATHの問題だったと思う)

FastCGIで動かす

mod_fastcgiをインストール。

sudo port install mod_fastcgi

TracFastCgi – MIST Projectの情報を見て設定。
途中、次のようなエラーが出たので、PYTHONPATHを設定する。

Oops…
Trac detected an internal error:
No module named trac.web
Traceback (most recent call last):
  File "/opt/local/share/trac/contrib/cgi-bin/trac.fcgi", line 19, in <module>
    from trac.web import fcgi_frontend
ImportError: No module named trac.web

これでうまくいったかと思ったら、リポジトリブラウザが表示されない。
エラーの内容をみると、Pythonのバージョンが合っていないようなので、FastCGIPython 2.7を使うように設定。

import_svn
    from svn import fs, repos, core, delta
  File "/opt/local/lib/svn-python2.7/svn/fs.py", line 26, in <module>
    from libsvn.fs import *
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 26, in <module>
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 22, in swig_import_helper
ImportError: dlopen(/opt/local/lib/svn-python2.7/libsvn/_fs.so, 2): Symbol _import_svn()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tracopt/versioncontrol/svn/svn_fs.py", line 72, in _import_svn
    from svn import fs, repos, core, delta
  File "/opt/local/lib/svn-python2.7/svn/fs.py", line 26, in <module>
    from libsvn.fs import *
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 26, in <module>
    _fs = swig_import_helper()
  File "/opt/local/lib/svn-python2.7/libsvn/fs.py", line 22, in swig_import_helper
    _mod = imp.load_module('_fs', fp, pathname, description)
ImportError: dlopen(/opt/local/lib/svn-python2.7/libsvn/_fs.so, 2): Symbol not found: _PyCapsule_Import
  Referenced from: /opt/local/lib/libsvn_swig_py27-1.0.dylib
  Expected in: flat namespace
 in /opt/local/lib/libsvn_swig_py27-1.0.dylib

設定内容

httpd.conf の設定

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
</IfModule>
LoadModule fastcgi_module modules/mod_fastcgi.so
ScriptAlias /trac /opt/local/share/trac/contrib/cgi-bin/trac.fcgi
SetEnv TRAC_ENV_PARENT_DIR /Trac
SetEnv PYTHONPATH /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
<Directory "/opt/local/share/trac/contrib/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

trac.fcgi の設定

#!/opt/local/bin/python2.7
# (以下省略)

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Snow Leopard に Trac をインストール

Tech

自宅で開発をするための準備として Snow Leopard @ Mac miniTrac をインストールしたときのメモ。Tiger のときにもインストールして遊んでみたけど、そのときはもっと結構苦労した記憶が...

環境

MacPorts からインストール

本家サイトを見ると、MacPortsを使ってインストールできるみたいなので、それを使うことに。

コマンド3行くらいでインストールできるみたい。

sudo port install apache2
sudo port install subversion +mod_dav_svn
sudo port install trac

事前に Java Developer Package をインストールする必要があった

ところがいきなりApacheのインストールでエラーが出て躓く。

Error: db46 requires the Java for Mac OS X development headers.Error: Download the Java Developer Package from: <https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719>

エラーメッセージのリンクは切れているけど、Java Developer Packageをインストールする必要があるみたいなので、ADCから、"Java for Mac OS X 10.6 Update 3 Developer Package" をダウンロードしてインストール。

インストール完了

最終的にインストールされたのは次のバージョン

Installing apache2 @2.2.17_0+preforkmpm
Installing subversion @1.6.13_0+mod_dav_svn
Installing trac @0.12.1_0

Apacheの設定

80番ポートで動かす前に、Web共有が動いていたら、停止させておく。

httpd.conf の設定。

# for Subversion
LoadModule dav_svn_module modules/mod_dav_svn.so
# for Trac
LoadModule python_module modules/mod_python.so

起動時の自動実行が行われるように設定する

sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

手動で起動/終了させるときのコマンドは次の通り。

Apacheの起動コマンド
sudo launchctl start org.macports.apache2

もしくは

sudo /opt/local/apache2/bin/apachectl start
Apacheの終了コマンド
sudo launchctl stop org.macports.apache2

もしくは

sudo /opt/local/apache2/bin/apachectl stop

Apache の実行ユーザは _www になるみたいなので、動いているかどうかは次のコマンドで確認できる。

ps -Au | grep www

Tracの設定

"sandbox" というプロジェクトを管理者 "cloudliner" で作成する場合。
Trac の初期化。

trac-admin /Trac/sandbox initenv

パーミッション設定。

sudo chown -R _www:admin /Trac/

ユーザを追加。

htpasswd users cloudliner

SVNリポジトリを追加。

trac-admin /Trac/sandbox repository add sandbox /Subvresion/sandbox

自分の管理者権限を追加する。

trac-admin /Trac/sandbox permission add cloudliner TRAC_ADMIN

本家サイトの情報を参考にして httpd.conf にVirtualHostの設定をする。

<VirtualHost *>
  DocumentRoot "/Trac"

  <Directory "/Trac">
    Order allow,deny
    Allow from all
  </Directory>

  <Location /svn>
    DAV svn
    SVNParentPath /Subversion
    AuthType Basic
    AuthName "trac"
    AuthUserFile "/opt/local/etc/users"
    Require valid-user
  </Location>

  <Location /trac>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracUriRoot "/trac"
    PythonOption TracEnvParentDir "/Trac"
  </Location>

  <LocationMatch /trac/[[:alnum:]]+/login>
    AuthType Basic
    AuthName "trac"
    AuthUserFile "/opt/local/etc/users"
    Require valid-user
  </LocationMatch>
</VirtualHost>

動いた!


0.12 は多言語対応しているので日本語で表示される。
ここからプラグインを追加していくのが面倒くさいけど...

補足

trac-admin を実行すると、パーミッションが変わってしまって、Tracが動かなくなってしまった。

そのときに「trac-admin /Trac/sandbox upgrade を実行してください」というメッセージが表示されるが、それではうまくいかないのでパーミンションを再設定する。

sudo chown -R _www:admin /Trac/

trac-admin は _www ユーザで実行するといいみたい。

sudo -u _www trac-admin /Trac/sandbox


入門Trac第2版―Linux/Windows対応

入門Trac第2版―Linux/Windows対応