2020年2月3日月曜日

Mac上で、Python3のCGIを動かす

Mac上で、Python3のCGIを動かす羽目になってしまいました。

以前にもここに書きましたが、玄人とは言えない私は、ネットの情報で随分混乱させられました。OSXのバージョンアップで、CGIが動かなくなった時より、??となることが多かったように思います。私と同レベルの人は多いと思いますので、少し整理した形で記事を書いておきます。

さて、Mac上でPythonを動かすこと自体は、Mac自体にPython2.7.xが予めインストールされているので難しくありません。Apacheのhttpd.confを修正してCGIを動かせるようにしておけば、次のようなtest.pyを所定のフォルダにおき、実行権を設定すればブラウザからtest.pyにアクセスすればちゃんと動きます。実行結果を見れば分かるように、Python2.7.xでです。
 -test.py-----------------
 #!/usr/bin/python
# -*- coding: utf-8 -*-
import cgi
import sys, os
print(\"Content-Type: text/html;\")
print(\"\")
print(\"\")
print(\"\")
print(\"\")
print(\"\")
print(\"hello world.\")
print(\"\")
print(\"\")
print(\"hello world!\")
strs=sys.path
for cmp in strs:
  print(cmp)
  print(\"-
\")
cgi.print_environ()
print(\"print(\"
\")
このPython2.7.xをPython3に切り替えるために、Python3をインストール&設定して、ターミナルで

$ python

と打って、Python3.X.Xが動作することを確認したとしても、CGIからは予めインストールされたPython2.7.xが呼ばれ、test.pyが実行されます。つまり、コマンドラインが呼ぶPythonとCGIが呼ぶPythonは違います。この辺が曖昧なネット記事が多くて、私は混乱しました。多かったのは、Python3をインストールすると動いたと言う記事でした。

状況が分かると、これらの記事はPythonのバージョンの確認をしていないのでは?と思うようになりました。

Python3をpyenvでインストールした状況での話ですが、結局状況は
  • CGIのパス(/usr/bin/)に、python2.7.10があって、それが呼び出されている
  • CGIの環境変数が /usr/bin:/bin:/usr/sbin:/sbin だけなので、python3.6.5への絶対パス/Users/アカウント名/.pyenv/shims/python3 をCGIで叩いてもエラーになる
でした。

この解決には、
  • /Users/アカウント名/.pyenv/shims/を優先的に調べるよう変更して、PATH変数をCGIに食わせる
ことができれば良い訳で、具体的には

  • Shebang(test.pyの1行目)を #!/usr/bin/env python とすること
 で解決しました。


2020年1月28日火曜日

経団連の日本型雇用の見直しについて

経団連によれば、日本型雇用に限界が来ているらしい。そして、終身雇用(長期包括契約)から、ジョブ型雇用(ようするに短期職務契約)へと移行したいらしい。

情報系のスキルを持つ若い人はこの話に両手を挙げて賛成しているかもしれないけど、少し慎重に考えた方がいい。

まず、情報系(人工知能を含む)の技術は進歩・変化が速く、今売りのスキルも数年で陳腐化する可能性が高い。ということは、もし、情報系ジョブ型雇用で契約をした場合、最初は給与は高いかもしれないが、スキルの陳腐化に伴い給与は急速に下がり、それほどの期間を置かず(数年程度か・・・)で解雇(契約満了)になることに他ならない。

仕事をしながら自分で勉強してスキル維持をすればいいとの反論があるだろうけど、日本の雇う側からすれば高い給料を払っているのだから全力を投入しろ(自己研鑽やっている時間があれば、仕事をしろ)ということになるので、それは現実的でない。

日本で被雇用者として、スキルアップと仕事を両立させるのであれば、1年単位で、仕事→無職(スキルアップ)→仕事→無職→・・・と回してゆくしかないだろう。

ちなみに、Googleには20%ルール(業務時間の20%は、仕事以外のことをしても良い)があるので、そこでは両立は可能かもしれない。が、日本企業、特に日本型雇用にどっぷりとつかって生きてきた今の管理職が、自分の何倍もの給与をもらう一回り以上年下の契約社員に「業務時間の20%は、仕事以外のことをして良い。」と言えるとは、私には思えない。

より深刻な問題は、ジョブ型雇用に適した仕事、つまり特別に高い給与を出しても人を採りたいような仕事は、その企業にとって目新しい仕事であるという点にある。つまり、日本においては、ジョブ型雇用を使う仕事の成果を正しく評価する機能・能力が企業(特に大企業)にはないと考えた方がいいのである。大企業、歴史ある企業の評価システム、人事管理システムは、経団連の言う日本型雇用に適合している。無理やりジョブ型雇用には適合しているシステムを探せば、それは派遣社員管理システム位だろう。そして、現在の派遣社員管理システムが取り扱っているのは、原則としてその企業にとって枯れた業務、アウトソーシングして不安のない仕事である。特に、労働者派遣法、特に平成11年以降の派遣対象業務の拡大の改正によって派遣業務の専門性は失われており、それから20年を経た今、その専門性評価機能も失われている。

結局、企業経営に影響を与えるほど影響がある仕事について、終身雇用からジョブ型雇用へと移行を成功させたいのであれば、その準備として、真っ先に企業の雇用管理を抜本的に改革する必要がある。それは、企業経営者、あらゆるレベルの管理職の大半を役職解任事になるはずなのである。少なくとも、ジョブ型雇用の対象となる、つまり企業経営に影響を与える専門技術について知見のない経営者・管理職の大半は、不要となる=役職解任となるはずである。

しかし、今回の経団連の発言に、 経営者・管理職の役職解任(技術的専門性を持った経営者・管理職への置き換え)が最初のステップということが含まれている形跡がない。

であるならば、経団連企業にできることは、専門性の高い派遣社員(契約社員)に高い給与を払うということだけだろう。結果、話題となっている新しい技術分野で高い能力を持った若者は、 一時的に高い給与は得られるかもしれないが、これまで通りの評価・管理システムによってすり潰され、企業も新しい技術に支えられたビジネスに進出できないだろう。

私は、このような表面的な施策ではなく、「仕事は人がする」ことを考えて、「もっと人を大切にする」から時代のスピードにどう素早く対応するかを考えて方策を立てるべきだと思う。

今回の経団連の話は、「仕事は会社がする」と勘違いから出ているように思える。

最後に、起業間もないベンチャー企業であれば、創業者もしくはCTOが専門技術者であるだろうから、こうしたことは起きないかもしれないが、そもそもベンチャー企業においてはこの話題の前提(従来の日本型の評価・管理システムがある)が当てはまらない。