LIFE SHIFT 100年時代の人生戦略と大学院教育について考えてみる
おおざっぱな自分の考えをまとめただけなので批判、コメント大歓迎
まずLIFE SHIFTという書籍をものすごくおおざっぱにまとめると
日本人の平均寿命が80歳を突破し、おそらくこれからも平均寿命が伸びていく。
(程度の差はあるとしても他の国でも同様の傾向)
そうすると、多くの人が100歳近くまで生きるようになる。
そうなったときに人生の生き方はどうする?政府の対策は?企業は?教育は?
というあたりがテーマ
キャリアは個人差がすごく大きいものなので一般化はできないけどモデルとして考えると有用なので、生まれた年の違う3人が出てきます。
1945年生まれのジャック、1971年生まれのジミー、1998年生まれのジェーン
1945年生まれのジャックは教育、仕事、引退という3ステージのライフスタイルを過ごすことができますが、
1971年生まれのジミーは3ステージが軋みだして、3.5あるいは4.0ステージを過ごすことを考え、
1998年生まれのジェーンは4.0あるいは5.0ステージを過ごすことを考える...
なぜ3.5, 4.0, 5.0ステージという話が出てくるかと言うと、
65歳で引退し、100歳までの35年間を公的年金や個人の貯蓄で賄うなんてことは不可能に近いから。
(このあたりは日本特有の話ではなく、少子高齢化・長寿命化すれば必然な話)
じゃあどうするか?
というとこの本では3.5あるいは4.0、5.0ステージの生き方を提案しています。
またものすごくざっくり言ってしまえば
年齢に関係なく、 教育を受けたり、会社や働き方を変える
ということ
そうなるといろいろなところで変化が起きます。
たとえば働く人自身、教育機関、政府、企業、教育、キャリア、結婚、子育て...etc.etc.
いわゆる「正しい」とか「手本」みたいなキャリアが成り立たなくなる。
...とここまであたりが本の要旨
いろいろ変化があるこんな時代でどうなるかはよくわからないですが
教育方面でどのようになっていくか、どういう方向になっていくかを少し考えてみたいと思います。
まず第1に、再教育の必要性について
これは間違い無く、必要だと思います。
理由はテクノロジーの進歩があまりにも速くて、大学卒業時の知識だけでは、40〜50年近くの仕事をこなすことができないからです。
ところが...... あまり再教育というか勉強をしようという人は多くないらしく
企業が博士を採用したがらない理由
https://news.yahoo.co.jp/byline/joshigeyuki/20180824-00094289/
実際、「自分の仕事は自分の学歴や資格に見合わないレベルのものだ」と考える日本人は、先進国中トップレベルの水準に上るとする調査もあります。日本人は「仕事で使わないんだからこれ以上勉強する必要はないだろう」と冷静に判断出来ているとも言えるでしょう。
-----
なにを言ってるの?というような状態であったり、
リカレント教育「意欲あり」36%余にとどまる
https://www3.nhk.or.jp/news/html/20180902/k10011604431000.html
意欲ある人は36%... やりたいと思ったことがない人が58%...と少しガッカリしますが...
一方で、企業側の理解もないとなかなか難しいのかなと思います。
第2に、教育の場所について
再教育の場所としてどこがあるのかとして考えると、
1. インターネット上での勉強
2. セミナーなどの勉強会
3. 大学、大学院に再入学
正直なところ、再教育の場所がどこであろうとあまり興味はなくて、ネットでもセミナーでも大学(院)でも...どこでもという感じ (時代によって最適なところ、その役割って変わっていくでしょうから)
ネットの勉強コミュニティはSNSの発展とともに大きくなっていくとは思いますが、
一方で、セミナーや大学(院)のような場所が必要なくなるということでもないと思います。
データ解析のようなコンピュータ上ならまだしも、実験系は直接手を動かさないとわからないことも多いですから。
第3に、大学(院)でなにを教わるのか、教えていくのか
教育の場所としての大学、大学院はどうあるべきなのか。
残念なことに(一部の)大学院では、大学院生を労働力とみなしてて教育とかをおろそかにして実験だけさせて最後に適当に論文だして終わり
みたいなところもあるようです
私個人の考えとしては、実験手技はあくまで手法として考えて、
モノの考え方、問題解決能力あたりを重点的に教えるべきだと思っています。
なので教授や指導教官が命じるように実験して、論文書いて...だと労働力としての役割でしかないので
少しずつでも自分で論文読んで、実験目的考えて、結果を考察して、教授と議論できるようになればベターかなと
そんなことを読みながら考えていました。
2018年10月8日月曜日
2018年8月14日火曜日
Progate 勉強メモ その4 クラス継承【Python編】
Pythonを勉強中。
クラス継承っていうとRPGみたいですね。
いまあるクラスを元に新しいクラスを作ることを「継承」と呼ぶ。
なぜクラスの継承が必要かと言うと
同じような機能を持つが、別のクラスが必要なとき
Progateでは、メニューの名前と価格を出すクラスを設定し、
食べ物のメニュー、飲み物のメニューを出すという機能を作るときに
食べ物用、飲み物用のクラスを継承で作成する。という例が挙げられてました。
作り方としては
class 子クラス(親クラス):
pass
という書き方をします。
なかのメソッドは引き継がれていますが、子クラスの方で改善することも可能。
もし親クラスと子クラスで同じ名前があったら「上書き」されます。
__init__メソッドも上書きすることができます。
親クラスと同じように書いていけばいいのですが、重複をまとめる方法として、
super().__init__(self, 引数1, 引数2 ...)
があります。
ここまででProgateのPythonは終わり。
クラス継承っていうとRPGみたいですね。
いまあるクラスを元に新しいクラスを作ることを「継承」と呼ぶ。
なぜクラスの継承が必要かと言うと
同じような機能を持つが、別のクラスが必要なとき
Progateでは、メニューの名前と価格を出すクラスを設定し、
食べ物のメニュー、飲み物のメニューを出すという機能を作るときに
食べ物用、飲み物用のクラスを継承で作成する。という例が挙げられてました。
作り方としては
class 子クラス(親クラス):
pass
という書き方をします。
なかのメソッドは引き継がれていますが、子クラスの方で改善することも可能。
もし親クラスと子クラスで同じ名前があったら「上書き」されます。
__init__メソッドも上書きすることができます。
親クラスと同じように書いていけばいいのですが、重複をまとめる方法として、
super().__init__(self, 引数1, 引数2 ...)
があります。
ここまででProgateのPythonは終わり。
2018年8月12日日曜日
Progate 勉強メモ その3 クラス【Python編】
ProgateでPython勉強中なのでメモ。
Pythonではクラスを定義することができる。
...このクラスってのがよくわからない....オブジェクト指向?
とりあえず作り方としては
class [class名]:
pass
のような感じで作成、class名は最初が大文字。
インデント下げて、passというところに 処理を書く。
[class名]() で呼び出して、変数に代入するなどのことができる。
例えば
class Menu():
def info(self, name):
print("オーダーは" + name + "です")
order = Menu()
order.info("バナナ")
出力:オーダーはバナナです
のような感じ。
モジュールをインポートしたときのようにクラスを扱うことができる
上記のClass Menu() を class_menu.pyとして保存したら
import class_menu
order = class_menu.Menu()
order.info("バナナ")
で同じように扱えます
毎度, class_menuとモジュール名を打つのが大変というときは
from class_menu import Menu
とすれば、
order = Menu()
order.info("バナナ") として使うことができます。
今日はこのあたりで。
Pythonではクラスを定義することができる。
...このクラスってのがよくわからない....オブジェクト指向?
とりあえず作り方としては
class [class名]:
pass
のような感じで作成、class名は最初が大文字。
インデント下げて、passというところに 処理を書く。
[class名]() で呼び出して、変数に代入するなどのことができる。
例えば
class Menu():
def info(self, name):
print("オーダーは" + name + "です")
order = Menu()
order.info("バナナ")
出力:オーダーはバナナです
のような感じ。
モジュールをインポートしたときのようにクラスを扱うことができる
上記のClass Menu() を class_menu.pyとして保存したら
import class_menu
order = class_menu.Menu()
order.info("バナナ")
で同じように扱えます
毎度, class_menuとモジュール名を打つのが大変というときは
from class_menu import Menu
とすれば、
order = Menu()
order.info("バナナ") として使うことができます。
今日はこのあたりで。
2018年8月11日土曜日
Progate 勉強メモ その2 自作関数とモジュール【Python編】
今日も今日とてPythonを勉強します。(更新遅くなった...)
○ Pythonでは自作の関数を定義することができる
def hello():
print("Hello, world")
のように書く。
メリットとしては、同じ処理を何度もやるときに修正が1度で済むこと
引数を設定することができ、hello() に仮引数を設定します
def hello(name):
print("Hello! " + name)
で
hello("Tom") と打つと
Hello! Tom
と出力されます
def hello(name = "John"):
print("Hello! " + name)
で
引数の初期値として"John"を設定できる。
初期値なしで、hello() と打つとエラーになるが
初期値ありで、hello() と打つとこの場合、Hello! Johnが出力される。
○ Python モジュールとして組み込む
コードが長くなってくると、わかりにくいし、バグもでる。
同じ処理を繰り返すことを考えると、別のファイルに保存して、使えた方が便利。
関数を書いたファイルを hogehoge.pyとして保存します。
import hogehoge
でモジュールをインポートすれば、なかの関数を呼び出して使うことができます。
使うときは、
モジュール名.関数名で使う。(hogehoge.kansu1のような感じ)
モジュールとして組み込めるのは自作のもの以外にもすでに誰かが作ったものを使うこともできる。
そういうモジュールをライブラリと呼んで、例えばnumpy, scikit-learn, mathなどなど
例)
乱数を作るライブラリに"random" があるので
import random
でrandomを組み込んで、その中の関数、randint (範囲内の整数をランダムに返す)
random.randint(1,10)
で、1〜10の整数をランダムに返します。
この休みの間にいろいろと勉強を進めないとね。
○ Pythonでは自作の関数を定義することができる
def hello():
print("Hello, world")
のように書く。
メリットとしては、同じ処理を何度もやるときに修正が1度で済むこと
引数を設定することができ、hello() に仮引数を設定します
def hello(name):
print("Hello! " + name)
で
hello("Tom") と打つと
Hello! Tom
と出力されます
def hello(name = "John"):
print("Hello! " + name)
で
引数の初期値として"John"を設定できる。
初期値なしで、hello() と打つとエラーになるが
初期値ありで、hello() と打つとこの場合、Hello! Johnが出力される。
○ Python モジュールとして組み込む
コードが長くなってくると、わかりにくいし、バグもでる。
同じ処理を繰り返すことを考えると、別のファイルに保存して、使えた方が便利。
関数を書いたファイルを hogehoge.pyとして保存します。
import hogehoge
でモジュールをインポートすれば、なかの関数を呼び出して使うことができます。
使うときは、
モジュール名.関数名で使う。(hogehoge.kansu1のような感じ)
モジュールとして組み込めるのは自作のもの以外にもすでに誰かが作ったものを使うこともできる。
そういうモジュールをライブラリと呼んで、例えばnumpy, scikit-learn, mathなどなど
例)
乱数を作るライブラリに"random" があるので
import random
でrandomを組み込んで、その中の関数、randint (範囲内の整数をランダムに返す)
random.randint(1,10)
で、1〜10の整数をランダムに返します。
この休みの間にいろいろと勉強を進めないとね。
2018年8月4日土曜日
Progate 勉強メモ その1【Python編】
Pythonを少しずつ勉強(というか今のところ、本でやったとこだし復習みたくなってる)
1. リスト
list名 = ['要素1', '要素2', '要素3', '要素4', '要素5' ]
例えば
fruits=["apple", "grape", "pineapple", "melon"]
で作成する
リストにはインデックス番号がついていて、
要素1は番号が「0」
リスト名[0] で呼び出すことができる
上の例なら、apple が出力される
リスト名[1:3] のように書くと、部分的に取り出すことができる
上の例なら、
grape, pineapple が出力される
*第2インデックス(この場合、3)は自身が含まれず、 インデックス番号2までが呼び出される
2. for文
for fruit_name in fruits:
print(fruit_name)
のように書く
fruits のなかの要素を、変数 fruit_nameに入れて、インデントを下げたコマンドを実行します
なので、
apple
grape
pineapple
melon
が出力される
3. 辞書
fruits_color_dic = {"apple":"red", "grape":"purple", "pineapple":"yellow", "melon":"green"}
のように書く
キーと対応する値(バリュー)との組み合わせで書く
今回は、redなどの文字列で組み合わせているが、数値を入れることもできる
for文でバリューを呼び出すこともできる
fruits_color_dic = {"apple":"red", "grape":"purple", "pineapple":"yellow", "melon":"green"}
for fruit in fruits_color_dic:
print(fruits_color_dic[fruit])
なら red, purple, yellow, green と出力される
4. while文
while [条件文]:
で条件文に合う限り、処理を繰り返す
i = 0
while i < 10:
print(i)
i = i + 1
で i が 10より少ないときに出力したあと、 i に 1を足すことを繰り返す。
繰り返しをしているけど、条件が抜けれないと無限ループしてしまう
(例えば上だとiに1を足す処理がないと、0がずっと出力される)
5. break, continue文
for文やwhile文のなかで、条件に応じてスキップしたり、処理を止めたり。
Progateの例だと、
1,000円持ってて、りんごをいくつ買った、0円になったら処理を止める
というのに役に立つ
i = 0
while i < 10:
i = i + 1
if i == 5:
break
print(i)
0 ~ 10を出力するときに
i = 5のときに終了する
i = 0
while i < 10:
i = i + 1
if i % 2 == 0:
continue
print(i)
i を 2で割って、あまりが0かどうか(偶数かどうか)で
偶数ならあとの処理をスキップする
続きはまた今度。
1. リスト
list名 = ['要素1', '要素2', '要素3', '要素4', '要素5' ]
例えば
fruits=["apple", "grape", "pineapple", "melon"]
で作成する
リストにはインデックス番号がついていて、
要素1は番号が「0」
リスト名[0] で呼び出すことができる
上の例なら、apple が出力される
リスト名[1:3] のように書くと、部分的に取り出すことができる
上の例なら、
grape, pineapple が出力される
*第2インデックス(この場合、3)は自身が含まれず、 インデックス番号2までが呼び出される
2. for文
for fruit_name in fruits:
print(fruit_name)
のように書く
fruits のなかの要素を、変数 fruit_nameに入れて、インデントを下げたコマンドを実行します
なので、
apple
grape
pineapple
melon
が出力される
3. 辞書
fruits_color_dic = {"apple":"red", "grape":"purple", "pineapple":"yellow", "melon":"green"}
のように書く
キーと対応する値(バリュー)との組み合わせで書く
今回は、redなどの文字列で組み合わせているが、数値を入れることもできる
for文でバリューを呼び出すこともできる
fruits_color_dic = {"apple":"red", "grape":"purple", "pineapple":"yellow", "melon":"green"}
for fruit in fruits_color_dic:
print(fruits_color_dic[fruit])
なら red, purple, yellow, green と出力される
4. while文
while [条件文]:
で条件文に合う限り、処理を繰り返す
i = 0
while i < 10:
print(i)
i = i + 1
で i が 10より少ないときに出力したあと、 i に 1を足すことを繰り返す。
繰り返しをしているけど、条件が抜けれないと無限ループしてしまう
(例えば上だとiに1を足す処理がないと、0がずっと出力される)
5. break, continue文
for文やwhile文のなかで、条件に応じてスキップしたり、処理を止めたり。
Progateの例だと、
1,000円持ってて、りんごをいくつ買った、0円になったら処理を止める
というのに役に立つ
i = 0
while i < 10:
i = i + 1
if i == 5:
break
print(i)
0 ~ 10を出力するときに
i = 5のときに終了する
i = 0
while i < 10:
i = i + 1
if i % 2 == 0:
continue
print(i)
i を 2で割って、あまりが0かどうか(偶数かどうか)で
偶数ならあとの処理をスキップする
続きはまた今度。
2018年8月2日木曜日
Progateやってみた その2【Git編】
今日も今日とてProgateGitを勉強してます。
1.gitの状態を確認する
git status
と打つと、git add したファイルの状態を見ることができる。
ファイルのうち、変更があったものについては、
modified [file name ]
と赤色で表示される
2. ファイルの変更箇所を確認する
git diff
と打つと、ファイルの更新箇所が表示される
追加した部分は
+ hogehoge
と緑色で表示される
削除した部分は
- hoge
と赤色で表示される
3. 変更したファイルを stageにあげる
git add [modified file]
と打つと、変更したファイルをstageにあげることができる
で、変更したファイルは
git commit でローカルレポジトリに登録
git push でリモートレポジトリに登録(でいいんだよね...)
4. 変更履歴を確認する
git log
と打つと、コミット履歴とコミットメッセージをみることができる
オプション -p をつけてコマンドを打つと
変更履歴が見れる
...というあたりでProgateの基本的なところは終わり。
あとは少し本を読んだり、実際に使いながら覚えていくしかないかな。
1.gitの状態を確認する
git status
と打つと、git add したファイルの状態を見ることができる。
ファイルのうち、変更があったものについては、
modified [file name ]
と赤色で表示される
2. ファイルの変更箇所を確認する
git diff
と打つと、ファイルの更新箇所が表示される
追加した部分は
+ hogehoge
と緑色で表示される
削除した部分は
- hoge
と赤色で表示される
3. 変更したファイルを stageにあげる
git add [modified file]
と打つと、変更したファイルをstageにあげることができる
で、変更したファイルは
git commit でローカルレポジトリに登録
git push でリモートレポジトリに登録(でいいんだよね...)
4. 変更履歴を確認する
git log
と打つと、コミット履歴とコミットメッセージをみることができる
オプション -p をつけてコマンドを打つと
変更履歴が見れる
...というあたりでProgateの基本的なところは終わり。
あとは少し本を読んだり、実際に使いながら覚えていくしかないかな。
Progateやってみた その1【Git編】
Progate 勉強メモ
今日はGit
なんとも残念なことに実はGitってなにさね... ってレベルだったわけです
(なんとなく開発に使ってる、バージョン管理できるらしい...くらいのレベル)
まぁ本を読むといいとは思ったんですがせっかくProgateあるならやってみようと思い至ったわけです
自分用のメモなので、間違ってることがあるかも...
そのときは指摘してくれると嬉しいです。
MacならGitはすでにインストールされているので、そのまま使えます。
1. Gitの初期化 (ローカルレポジトリの作成)
git init
とコマンドを打つと、初期化されて、今のディレクトリに .git という隠しファイルが作成される
2. 共有するファイルの選択
git add [file name]
とコマンドを打つと、[file name]のファイルが選択される。(どうやらstage環境にあげるというらしい)
3. ローカルレポジトリにあげる
git commit -m "[message]"
と打つと、ローカルレポジトリにあげる。
-m "[message]" は message を残すことができる。
省略できるらしいけど、変更履歴を残すためにも残した方がよい。
どんな修正をしたかプレフィックスをつけるとわかりやすいとのこと。
↓ ルール例
https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#type
4. リモートレポジトリにあげる
git push [URL エイリアス] [ブランチ名]
と打つと、リモートレポジトリにあげる。
URLエイリアス...? ブランチ名...?
ってな感じなのでもう少し勉強しないと。
今日はGit
なんとも残念なことに実はGitってなにさね... ってレベルだったわけです
(なんとなく開発に使ってる、バージョン管理できるらしい...くらいのレベル)
まぁ本を読むといいとは思ったんですがせっかくProgateあるならやってみようと思い至ったわけです
自分用のメモなので、間違ってることがあるかも...
そのときは指摘してくれると嬉しいです。
MacならGitはすでにインストールされているので、そのまま使えます。
1. Gitの初期化 (ローカルレポジトリの作成)
git init
とコマンドを打つと、初期化されて、今のディレクトリに .git という隠しファイルが作成される
2. 共有するファイルの選択
git add [file name]
とコマンドを打つと、[file name]のファイルが選択される。(どうやらstage環境にあげるというらしい)
3. ローカルレポジトリにあげる
git commit -m "[message]"
と打つと、ローカルレポジトリにあげる。
-m "[message]" は message を残すことができる。
省略できるらしいけど、変更履歴を残すためにも残した方がよい。
どんな修正をしたかプレフィックスをつけるとわかりやすいとのこと。
↓ ルール例
https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#type
4. リモートレポジトリにあげる
git push [URL エイリアス] [ブランチ名]
と打つと、リモートレポジトリにあげる。
URLエイリアス...? ブランチ名...?
ってな感じなのでもう少し勉強しないと。
登録:
投稿 (Atom)