2020年3月8日日曜日

[読書感想文]バイリンガル教育の本

2冊ほど呼んだ。同じような内容であり、同じような感想を持ったのでまとめて書く

読んだ本

子どもの未来を広げる「おやこえいご」 ~バイリンガルを育てる幼児英語メソッド~
おうちでほぼバイリンガルの育て方

まとめ


日本人夫婦が日本で子育てを行い、子供をバイリンガルに育てる実践が書かれている。
インターナショナルスクールなどには通わせず、最低限の英語教室と母親による家庭教育が中心の様子。

子どもの未来を広げる「おやこえいご」 ~バイリンガルを育てる幼児英語メソッドの単著者を含む、計4人が自身の子供をバイリンガルに育てた経験を綴った本。実践内容の細かい違いはあるが、大抵は母親の献身的な本、DVD、Youtubeを使った大量の英語のシャワーを行っているようである。

感想

やはり、尋常でない母親の献身ぶりが目を引く。大量の英語の本やYoutubeを駆使して、英語をインプットさせ、母親が自然な雰囲気で英語で話しかけることにより、英語力を身に着けさせているようだ。

英語の本やYoutubeを見せるあたりは安価であるので、親のモチベーション次第で真似はできそうである。他のバイリンガル本と同じく、育った子供がどの程度、英語と日本語が身についているのか、客観的に伺い知れる情報がないことだけが残念か。

[読書感想文]バイリンガルを育てる

バイリンガルを育てる

まとめ

英語教育やバイリンガル教育が専門の湯川笑子博士が自分自身の二人の子供にバイリンガル教育をさせたときの記録集。体験や観察をもとに論文も書いているようであり、詳細な記録は参考になる。

教育内容として大きく目をひかれるのは下記のような事柄

  • 子供には常に英語で話しかける。
  • 幼少期に英語の本の読み聞かせを毎日30分から2時間程度
  • ネイティブなEnglish Speakerと多くの交流があり、自宅にホームステイさせたり等、子供をInternationalな環境においていた。
  • 子供は幼少期に海外で教育させた。
    • 長男。4ヶ月-1歳半と5歳5ヶ月-5歳10ヶ月までハワイ、6歳-8歳ころにスウェーデンの幼稚園、学校に通う
    • 長女は4歳-5歳ころにスウェーデンの保育園に通う

感想

おうちでバイリンガルおやこえいごなどを読んだときも同じ感想を抱いたが、やはり親(特に母親)の尋常でない献身ぶりが目を引く。毎日2時間も英語の本を読み聞かせるだけでも、尋常でない気力が必要だし、ましてや海外に引っ越して現地の教育を受けさせるなどというのは並々ならぬ覚悟がいるだろう。著者の場合は、自分の研究テーマと同一していることもあり、仕事のキャリアと英語教育のメリットを同一化させられたのも大きな要因であろう。

参考にはなるが、一般的な日本人にとってすぐさま真似できそうな実践はなさそうである。また、結局この本で行ったバイリンガル教育の結果、成人した子どもたちがどのような英語力・日本語力が身についたのかが不明なのも実践の効果を伺い知れる情報がなく残念ではある。



2020年2月29日土曜日

Programming Kubernetes: Developing Cloud-Native Applications

Programming Kubernetes

by Stefan Schimanski, Michael Hausenblas
Released July 2019
Publisher(s): O'Reilly Media, Inc.
ISBN: 9781492047094
Explore a preview version of Programming Kubernetes right now.

O’Reilly members get unlimited access to live online training experiences, plus books, videos, and digital content from 200+ publishers.What the book is for?
The books describes about how to customize kubernetes engine itself. It doesn't describe about how to make an application on kubernetes. Thus it helps to understand how kubernetes controllers and components works.

Programming Kubernetes

Who should read the book?

Anyone who would like to understand controllers and components running under the hood.
Anyone who would like to the architecture of kubernetes.
Anyone who would like to make custom controllers. 
Anyone who aspires to be a kubernetes contributer.
Anyone who would like to know about client-go library. 



Impression

The book is for advanced level kubernetes developers. Before reading the book, it is recommended to have understanding on what kubernetes controllers, API servers and Operators are and how they behave. Some experience of kubernetes application development might be good to understand the book deeply.




2019年12月22日日曜日

Designing Distributed Systems

Designing Distributed Systems

Patterns and Paradigms for Scalable, Reliable Services
By Brendan Burns
Publisher: O'Reilly Media
Release Date: February 2018
Pages: 166

Without established design patterns to guide them, developers have had to build distributed systems from scratch, and most of these systems are very unique indeed. Today, the increasing use of containers has paved the way for core distributed system patterns and reusable containerized components. This practical guide presents a collection of repeatable, generic patterns to help make the development of reliable distributed systems far more approachable and efficient.What the book is for?
The book describes about example of architecture which is assumed to be built on kubernetes. Yaml files for kuberenetes are also included with explanation as well as the codes.

Who should read the book?

Anyone who would like to know design and architecture patterns for kubernetes.


Impression

It's good as a recipe book. Some basic and easy to apply architecture patterns are described with use cases. It should be one to be recommended to every kubernetes application developers.


2019年8月12日月曜日

SCRUM BOOT CAMP THE BOOKを読んでみた

SCRUM BOOT CAMP THE BOOK




スクラムについて一通り学べる。基礎編と実践編の二部構成になっている。
基礎編で用語や概念が説明され、実践編ではそれをどのように適用していけばよいかが説明されている。

座学で得られる限りの情報はこの本で学べるのではなかろうか。

特に実践編ではスクラムを現場にどのように導入していく様子が漫画のストーリで描かれており、イメージが付きやすい。

スクラム導入のための本としては良本。

2019年1月12日土曜日

「エンジニアのためのマネジメントキャリアパス」を読んで管理職について考えてみた


エンジニアのためのマネジメントキャリアパス ―テックリードからCTOまでマネジメントスキル向上ガイド


を読んでみた。

入社されたばかりの被管理者であるSoftware Engineerから始まり、チームを束ねるTech Lead(TL)、管理職や管理職の管理職、そしてVP of Engineering(VPoE)やCTOなどの役職について、期待される役割や課題などを説明している。ざっくりと昨今のTech界隈の役職を俯瞰するのには最適の一冊であろう。

よくまとまってて読みやすい書籍ではある。ただ、ちょっと身も蓋もない言い方になるのだが、会社の役職なんて同じ名前でも役割が違うので、これを読んでどう活用するかは若干難しい。原著は米国の書籍であるので、当然のこととして、日米の文化的・法律的な差異もあるはずである。技術書のように、これを教科書として絶対視しても意味がないので、著者の界隈ではこういう共通認識で回ってるのだろう、といった参考程度に勉強するのが好ましいのであろう。


一点だけ大きく興味をそそられた箇所があった。
5.1節の「ITスキルの維持」の記述のところである。

管理職に転向した後の技術的知識のアップデートに関する主張であり、これ以上コードを書いても技術力が頭打ちになるラインまでは管理職になってもコードを書き続けよう、ということであった。技術力がしっかりと身につくまでは、管理職としても大成できない。そして上級の管理職になってからも何らかの技術的コミットメントを続けるべきだ、と。この意見はとても正しく思える。

私もソフトウェアエンジニアとしてのキャリアの中で、エンジニアから管理職に転向した方を多く知っている。ほとんどの方は、Mangerに転向したのを機にコーディングを行わなくなる。その結果、例えば20世紀にWindowsアプリの開発を行っていた人が、Windowsアプリのパラダイムのままネットの技術を語ったり、クラウド以前のInternet上でWebアプリを開発していた人が、その価値観のまま、クラウドの技術を捉える、といった状況に多く遭遇した。表面的な知識は間違ってないのだが、「それは根本的に考え方が違うんだよなあ」、と突っ込みたくなる状況である。

もちろん、管理職という立場で時間の許す限りキャッチアップは続けているのだろうが、Webの前後、あるいはクラウドの前後、そしてマイクロサービスの前後といったような大きなパラダイムの変換があるときには、業務を前提に深くコードを書いていない限り自分の中の技術的パラダイムはアップデートできない。プライベートな時間で自分しか見ないレベルのコードを書いたとしても、当然のこととして仕事で向き合うのと理解の度合いは違う。業務外でコミットしているオープンソースがあったり、副業としてエンジニアを続けているのでない限り、どの立場になってもコードを書き続けない限りいずれその人の技術的価値観は時代遅れのものになるのだろう。


ただ、言うのは簡単だが、マネージャ業務をしながら開発業務にもコミットし続けるのはとても厳しい。解決策としては、マネージャとエンジニアを数年おきに、すっぱりとJob Changeするくらいしかないかもしれない。米国ではよく(たまに?)あるとは聞くが、少なくとも日本ではあまり聞いたことがない。もしかしたら今後はこのようなJob Rotationが必要とされるかもしれない。


2018年12月16日日曜日

Golangのfake google searchフレームワークをjavaで書いてみた。その2

その1を投稿したあと、某友人から「CompletableFuture使ったらもっとスッキリできるよ」って情報もらった。なので、それ使って書き換えてみた。

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.*;
import java.util.function.Supplier;

class FakeSearch implements Supplier<String>{
    String name = null;
    public FakeSearch(String name){
        this.name = name;
    }
    @Override    public String get() {
        try {
            Thread.sleep((new Random().nextInt(10) * 1000));
        }catch (Exception e){

        }
        return name;
    }
}

public class CmpGoChannel2 {
    public static void First(Supplier<String> supplier1,Supplier<String> supplier2) throws Exception{
        CompletableFuture<String> future1 =
                CompletableFuture.supplyAsync(supplier1);
        CompletableFuture<String> future2 =
                CompletableFuture.supplyAsync(supplier2);

        CompletableFuture<Object> future3 = CompletableFuture.anyOf(future1, future2);
        System.out.println(future3.get());
    }

    public static void main(String... args) throws Exception{
        FakeSearch web1 = new FakeSearch("Web1");
        FakeSearch web2 = new FakeSearch("Web2");
        FakeSearch image1 = new FakeSearch("Image1");
        FakeSearch image2 = new FakeSearch("Image2");
        FakeSearch video1 = new FakeSearch("Video1");
        FakeSearch video2 = new FakeSearch("Video2");


        CmpGoChannel2 c = new CmpGoChannel2();
        List<Future<String>> list = new ArrayList<>();

        First(web1,web2);
        First(image1,image2);
        First(video1,video2);

    }

}
while(true)と終了フラグで乗り切ってた汚い部分がだいぶきれいになった。

public static void First(Supplier<String> supplier1,Supplier<String> supplier2) throws Exception{
    CompletableFuture<String> future1 =
            CompletableFuture.supplyAsync(supplier1);
    CompletableFuture<String> future2 =
            CompletableFuture.supplyAsync(supplier2);
    CompletableFuture<Object> future3 = CompletableFuture.anyOf(future1, future2);
    System.out.println(future3.get());
}


行数もざっくり60行程度まで収まった。