2023,江端さんの技術メモ

type testJSON struct {
	Id      string `json:"@id"`
	Type    string `json:"@type"`
	Date    string `json:"dc:date"`
	Context string `json:"@context"`
	Title   string `json:"dc:title"`
	Note    string `json:"odpt:note"`
	Regions struct {
		Type        string `json:"type"`
		Coordinates []interface{}
	} `json:"ug:region"`
	Owl              string `json:"owl:sameAS"`
	Pattern          string `json:"odpt:pattern"`
	Busroute         string `json:"odpt:busroute"`
	Operator         string `json:"odpt:operator"`
	Direction        string `json:"odpt:direction"`
	BusstopPoleOrder []struct {
		Note        string `json:"odpt:note"`
		Index       int    `json:"odpt:index"`
		BusstopPole string `json:"odpt:busstopPole"`
	} `json:"odpt:busstopPoleOrder"`
}

の、

Coordinates []interface{}

の部分をsrting型→分割 → float64型に戻して処理しようしているのですが、

for _, e := range data {
		fmt.Println(e) // 全情報表情
		coors := e.Regions.Coordinates
		fmt.Println("len_mm", len(coors))
		for _, coor := range coors {
			fmt.Println(coor)
			str_coor := coor.(string)
			arr := strings.Split(str_coor, " ")
			lng := arr[0]
			lat := arr[1]
			fmt.Println(lng, lat)
		}
	}

[139.6249873 35.4648941]
panic: interface conversion: interface {} is []interface {}, not string

goroutine 1 [running]:
main.main()
C:/Users/ebata/yoko_bus_route/route_json.go:92 +0x694
exit status 2

というエラーが出てきて停止します ―― キャストできない。

多分対応方法はあると思うのですが、調べるのが面倒なので、C/C++で定番の、あの美しくない方法 "sprintf"を使いました

for _, coor := range coors {

			//	str_coor := coor.(string)   
			str_coor := fmt.Sprintf("%v", coor) // この段階では" [139.575019, 35.439622]"という文字列 

			arr := strings.Split(str_coor, " ") // スペース" " で arr[0], arr[1]という文字列に分離する

			str_lng := strings.Replace(arr[0], "[", "", -1) // arr[0] ("[139.575019")から、"["を消す
			str_lat := strings.Replace(arr[1], "]", "", -1) // arr[1] ("35.439622]")から、"]"を消す

			lng64, _ := strconv.ParseFloat(str_lng, 64) // float64に強制的に型変換する
			lat64, _ := strconv.ParseFloat(str_lat, 64) // float64に強制的に型変換する

			fmt.Println("lng:", lng64)
			fmt.Println("lat:", lat64)

		}

動けばいいんですよ、動けば。

2023,江端さんの技術メモ

https://ckan.odpt.org/dataset/b_busroute-yokohamamunicipal


■動かなくて悩んでいたコード

// xml_parse.go
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

type testXML struct {
	Date     string `json:"dc:date"`
	Busroute string `json:"odpt:BusroutePattern"`
}

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("GET", "https://api.odpt.org/api/v4/odpt:BusroutePattern?odpt:operator=odpt.Operator:YokohamaMunicipal&acl:consumerKey=f4954c3814b207512d8fe4bf10f79f0dc44050f1654f5781dc94c4991a574bf4", nil)
	if err != nil {
		log.Fatal(err)
	}

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()
	if err != nil {
		log.Fatal(err)
	}

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}

	//fmt.Println(body)

	var data testXML

	err = json.Unmarshal(body, &data)
	if err != nil {
		fmt.Println("Unmarshal")
		log.Fatal(err)

	}

	fmt.Println(data)

}

出力結果

> go run xml_parse.go
Unmarshal
2023/05/01 18:05:31 json: cannot unmarshal array into Go value of type main.testXML
exit status 1

悩むこと1時間、("type testXML"スキーマを色々いじったりしていた)

『そういえば、このjsonのデータは、違う路線データも入っているはずだよな』
→ 『ということは、複数のデータが入っていることになるよな』
→ 『 For文で取らなければ不味くないか?』

で、ググってみたら、どうやらループになるように仕込んでおかないといけないらしいことが分かりました(XMLの先頭の情報が取れるだけだと思っていた)

■動いたコード

// xml_parse.go
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

type testXML struct {
	Date     string `json:"dc:date"`
	Busroute string `json:"odpt:BusroutePattern"`
}

func main() {
	client := &http.Client{}
	req, err := http.NewRequest("GET", "https://api.odpt.org/api/v4/odpt:BusroutePattern?odpt:operator=odpt.Operator:YokohamaMunicipal&acl:consumerKey=f4954c3814b207512d8fe4bf10f79f0dc44050f1654f5781dc94c4991a574bf4", nil)
	if err != nil {
		log.Fatal(err)
	}

	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()
	if err != nil {
		log.Fatal(err)
		x
	}

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}

	//fmt.Println(body)

	var data []testXML

	err = json.Unmarshal(body, &data)
	if err != nil {
		fmt.Println("Unmarshal")
		log.Fatal(err)

	}

	for _, e := range data {
		fmt.Println(e.Date)
	}

}

go run xml_parse.go
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00
2023-04-03T00:00:00+09:00"当たり"だったようです。


バス路線情報のJSONをブラウザで読みとってみました。


ここから、酷いハマり方をします(10時間くらい)。

上記のルートの位置情報の表示のコーディングがどうしても分からない。

以下は、上記のJSONを簡略化したものです(route.json)。

[
	{
		"dc:date":"2023-04-03T00:00:00+09:00",
		"dc:title":"007",
		"ug:region":
				{
					"type":"Triangle",
					"coordinates":[[139.6249873,35.4648941],[139.6237514,35.4648862],[139.623672,35.4650137]]
				},
		"owl:sameAs":"test1"
	},
	{
		"dc:date":"2023-04-03T00:00:00+09:00",
		"dc:title":"008",
		"ug:region":
				{
					"type":"LineString",
					"coordinates":[[139.667765,35.416456],[139.668006,35.416708],[139.668116,35.416788],[139.668276,35.416841]]
				},
		"owl:sameAs":"test2"
	}
]

問題は、ネストの中に入っていて、タグの名前のついていない、

"coordinates":[[139.6249873,35.4648941],[139.6237514,35.4648862],[139.623672,35.4650137]]

の部分です。

10時間くらいは戦ったかなぁ ―― もう疲れ果てて、質問サイトに投稿する為に、(上記の)JSONファイルと、このパーサープログラムを成形していました。

で、そのプログラムをテストランさせたら ―― これが動いてしまったのです。

// route_json.go

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
)

type testXML struct {
	Date    string `json:"dc:date"`
	Title   string `json:"dc:title"`
	Note    string `json:"odpt:note"`
	Owl     string `json:"owl:sameAS"`
	Regions struct {
		Type        string `json:"type"`
		Coordinates []interface{}
		//Coordinates []struct {
		//	Longitude float64 `json:"longitudes>longitude"`
		//	Latitude  float64 `json:"latitudes>latitude "`
		//} `json:"coodtinates"`
	} `json:"ug:region"`
}

func main() {
	file, err := ioutil.ReadFile("route.json")
	//file, err := ioutil.ReadFile("odpt_BusroutePattern.json")

	if err != nil {
		// エラー処理
	}

	var data []testXML

	err = json.Unmarshal(file, &data)
	if err != nil {
		fmt.Println("Unmarshal")
		log.Fatal(err)
	}

	fmt.Println(string(file))

	// ループによる取得
	for _, e := range data {

		fmt.Println(e) //
		mm := e.Regions.Coordinates

		fmt.Println(len(mm))

		for _, m := range mm {
			fmt.Println(m)
		}
	}
}

実行結果は以下の通りです。

> go run route_json.go
[
{
"dc:date":"2023-04-03T00:00:00+09:00",
"dc:title":"007",
"ug:region":
{
"type":"Triangle",
"coordinates":[[139.6249873,35.4648941],[139.6237514,35.4648862],[139.623672,35.4650137]]
},
"owl:sameAs":"test1"
},
{
"dc:date":"2023-04-03T00:00:00+09:00",
"dc:title":"008",
"ug:region":
{
"type":"LineString",
"coordinates":[[139.667765,35.416456],[139.668006,35.416708],[139.668116,35.416788],[139.668276,35.416841]]
},
"owl:sameAs":"test2"
}
]

{2023-04-03T00:00:00+09:00 007 test1 {Triangle [[139.6249873 35.4648941] [139.6237514 35.4648862] [139.623672 35.4650137]]}}
3
[139.6249873 35.4648941]
[139.6237514 35.4648862]
[139.623672 35.4650137]
{2023-04-03T00:00:00+09:00 008 test2 {LineString [[139.667765 35.416456] [139.668006 35.416708] [139.668116 35.416788] [139.668276 35.416841]]}}
4
[139.667765 35.416456]
[139.668006 35.416708]
[139.668116 35.416788]
[139.668276 35.416841]

ずっとエラーが出ていたんですが、突然表示されるようになりました。

        Coordinates []interface{}

JSONタグが付いていない問題は、これで解消できるようです。

で、(簡易版ではなく)実体のJSONファイルを使ってみても動きました。

こういうことがあるから、本当にコーディングというのは厄介なんですよね。


パースしたデータを表示してみました。

通路が(多分)順番に表示されることが確認できました。


だいたいこれで完成です。

// route_json.go
// 横浜市交通局 バス路線情報 / Bus route information of Transportation Bureau, City of Yokohama
// https://ckan.odpt.org/dataset/b_busroute-yokohamamunicipal

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
)

type testJSON struct {
	Id      string `json:"@id"`
	Type    string `json:"@type"`
	Date    string `json:"dc:date"`
	Context string `json:"@context"`
	Title   string `json:"dc:title"`
	Note    string `json:"odpt:note"`
	Regions struct {
		Type        string `json:"type"`
		Coordinates []interface{}
	} `json:"ug:region"`
	Owl              string `json:"owl:sameAS"`
	Pattern          string `json:"odpt:pattern"`
	Busroute         string `json:"odpt:busroute"`
	Operator         string `json:"odpt:operator"`
	Direction        string `json:"odpt:direction"`
	BusstopPoleOrder []struct {
		Note        string `json:"odpt:note"`
		Index       int    `json:"odpt:index"`
		BusstopPole string `json:"odpt:busstopPole"`
	} `json:"odpt:busstopPoleOrder"`
}

func main() {

	// JSONファイルから読み取る場合
	//file, err := ioutil.ReadFile("route.json")
	file, err := ioutil.ReadFile("odpt_BusroutePattern.json")
	if err != nil {
		// エラー処理
	}

	/*
		// Webアクセスで取得する場合

		client := &http.Client{}
		req, err := http.NewRequest("GET", "https://api.odpt.org/api/v4/odpt:BusroutePattern?odpt:operator=odpt.Operator:YokohamaMunicipal&acl:consumerKey=f4954c3814b207512d8fe4bf10f79f0dc44050f1654f5781dc94c4991a574bf4", nil)
		if err != nil {
			log.Fatal(err)
		}

		resp, err := client.Do(req)
		if err != nil {
			log.Fatal(err)
		}
		defer resp.Body.Close()
		if err != nil {
			log.Fatal(err)
		}

		file, err := ioutil.ReadAll(resp.Body)
		if err != nil {
			log.Fatal(err)
		}
	*/

	var data []testJSON

	err = json.Unmarshal(file, &data)
	if err != nil {
		fmt.Println("Unmarshal")
		log.Fatal(err)
	}

	//fmt.Println(string(file))

	// ループによる取得
	for _, e := range data {

		fmt.Println(e) // 全情報表情
		coors := e.Regions.Coordinates

		fmt.Println("len_mm", len(coors))

		for _, coor := range coors {
			fmt.Println(coor)
		}

		stops := e.BusstopPoleOrder

		fmt.Println("len_ss", len(stops))

		for _, stop := range stops {
			fmt.Println(stop.Note)
			fmt.Println(stop.Index)
			fmt.Println(stop.BusstopPole)
		}

	}
}

2023,江端さんの忘備録

私は、「良い部下」だった、という記憶がありません。

I don't remember that I was a "good subordinate".

そのような部下であっても、『この上司、リーダーについていこう』と決めた人もいました。

Even so, I thought to decide, 'I will follow this boss and leader.

それらの人々には共通した性格がありました。

They had a common character.

―― リーダーシップがない

"No leadership"

この一言に尽きます。

This is the one word.

-----

『リーダーシップがないリーダー』は、頼りがなく、いつも心配をしなければなりませんでした。

'Leaders without leadership' were unreliable and I always had to worry.

私よりも知見がなく、そのことに対して大した拘泥(こだわり)もプライドもないようでした。

They were less knowledgeable than I was and did not seem to have any great obsession or pride in the matter.

ですから、私は、自分のことだけでなく、チーム全体の動きも気にかけばけばなりませんでした。

So I had to be concerned not only about myself but also about the team as a whole.

しかし、そのようなリーダーは、威圧的ではなく、私の話もちゃんと聞いてくれ、必要に応じて方針を変更してくれる人でした。

However, such a leader was not overbearing, but would listen to me and change policy as needed.

私の失敗を責め立てるでもなく、黙って一緒にお客さんの所に謝りに行ってくれて、その後、その事をすっかり忘れてしまうように振る舞ってくれました。

They did not blame me for my mistake, but quietly went with me to apologize to the customer and then acted as if they would forget all about it.

そのような、ボンヤリとしたマネージメントの元、私を含めチームメンバは、自律的に動き、そしてメンバ間のコミュニケーションも円滑でした。

Under such a vague management, the team members, including myself, moved autonomously, and communication among them was smooth.

一番の要因は、私が、その人のことを「個人的に好きである」ということでした。

The most important factor was that I had a "personal liking" for the person.

-----

ただ、このようなリーダーは、社会的というか、会社的には評価されにくいようです。

However, such leaders seem to be less valued socially, or company-wise.

そして、省みるに、私がそのようなリーダーに憧れても、いざ自分がリーダーになると、時間や成果に対して厳密な人間になってしまいました。

And in reflection, even though I aspired to be such a leader, when I became one, I became a person strict about time and results.

立ち位置や保身で、人間というのは、簡単に姿を変えてしまいます。

People are easily disfigured by their standing and self-preservation.

そして現実として、パワハラを発動させるリーダーが、チームの成果を上げるのは事実です。

And the reality is that leaders who initiate power harassment improve the results of their teams.

ただ、"パワハラ"に対して、"退職"という形の報復で、リーダーの権限を失墜させることができます ―― 特に若い世代は。

However, retaliation for "power harassment" in the form of "resignation" can be used to disqualify a leader's authority, especially by the younger generation.

こうして考えると、(どの世代であっても)若者の離職率の高さというのは、ある種、会社のモラルを維持する機能として働いていると言えるかもしれません。

In this way, it may be said that the high turnover rate of young people (in any era) is, in a sense, a function of maintaining company morale.

-----

総じて、『リーダーシップがないリーダー』になることは、これはこれで、相当に難しいのです。

In general, to be a 'leader without leadership' is a lot more difficult.

なぜなら『リーダーシップがないリーダー』を目指した瞬間に、そのようなリーダーにはなれなくなるからです。

Because the moment you aim to be a 'leader without leadership,' you will not be such a leader.

「のび太」という国家理念

 

2011,江端さんの忘備録

『「リーダーシップを張れる政治家」が望まれている』と言われ続けていますが、私は、このフレーズ、かなり嫌いです。

65年程前に、

○カリスマとリーダシップを発揮し、
○戦後の復興を見事に成しとげ、
○欧州で突出した経済力を発揮し、
○公共事業を次々と打ち出して、失業率をかつてないレベルにまで低下させ、
○軍事力の増強を図り続け、米国や周辺の大国を威嚇し、国際発言力を爆発的に向上させた、優れた政治家がいました。

アドルフ・ヒトラー

という人物です。

-----

尖閣諸島問題や、北方領土問題、竹島問題、米軍基地問題で、

『我が国政府が、弱腰外交をしている』

と言われていますが、そんなこと「あったり前」じゃないですか。
馬鹿じゃなかろうか。

我が国は、

「国権の発動たる戦争と、武力による威嚇又は武力の行使は、国際紛争を解決する手段としては、永久にこれを放棄する」

と、国家の最高規範である憲法で規定しているのです。

ピストル持っている相手に、「俺は正しい」と素手で立ちむかえば、撃ち殺されるに決っています。

『弱腰外交』が嫌なら、憲法第9条を撤廃(×改正)し、軍隊(×自衛隊)を設立し、核武装をするような政策をぶち上げて、世論を、その方向に誘導しなければなりません。

-----

リーダシップを持つ政治家が、そのまま、再軍備をする政治家になる、というのは短絡すぎており、論理破綻していることは認めます。

しかし、「リーダシップを持つ政治家」というのは、恐しいリスクを持っているということくらいは、当然に認識しておくべきです。

-----

私は、

○平和憲法を維持し、
○弱腰外交を支持し、
○のらりくらりとその場対応を続ける政治家を支援します。

別に、かっこよくて、マッチョな国家にならなくても、良いと思うし、そういうスマートな政府も期待していません。

我が国は、ドラえもんの「のび太」の生き方に学べば良いのです。

2023,江端さんの技術メモ

https://ckan.odpt.org/dataset/b_busstop-yokohamamunicipal/resource/da256719-0c39-48a7-a1f2-20354e18d529

// stop_json.go
// 横浜市交通局 バス停情報 / Bus stop information of Transportation Bureau, City of Yokohama
// https://ckan.odpt.org/dataset/b_busstop-yokohamamunicipal

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
)

type stopJSON struct {
	Id        string `json:"@id"`
	Type      string `json:"@type"`
	Lng_Title struct {
		En      string `json:"en"`
		Ja      string `json:"ja"`
		Ko      string `json:"ko"`
		Zh      string `json:"zh"`
		Ja_Hrkt string `json:"ja-Hrkt"`
	} `json:"title"`
	Date              string        `json:"dc:date"`
	Lat               float64       `json:"geo:lat"`
	Long              float64       `json:"geo:long"`
	Context           string        `json:"@context"`
	Title             string        `json:"dc:title"`
	Kana              string        `json:"odpt:kana"`
	SameAS            string        `json:"owl:sameAS"`
	Operator          []interface{} `json:"odpt:operator"`
	BusroutePattern   []interface{} `json:"odpt:busroutePattern"`
	BusstopPoleNumber string        `json:"odpt:busstopPoleNumber"`
	// BusstopPoleTimetable
}

func main() {

	// JSONファイルから読み取る場合
	//file, err := ioutil.ReadFile("route.json")
	//file, err := ioutil.ReadFile("odpt_BusroutePattern.json")
	file, err := ioutil.ReadFile("odpt_BusstopPole.json")
	if err != nil {
		// エラー処理
	}

	/*
		// Webアクセスで取得する場合

		client := &http.Client{}
		req, err := http.NewRequest("GET", "https://api.odpt.org/api/v4/odpt:BusstopPole?odpt:operator=odpt.Operator:YokohamaMunicipal&acl:consumerKey=f4954c3814b207512d8fe4bf10f79f0dc44050f1654f5781dc94c4991a574bf4", nil)
		if err != nil {
			log.Fatal(err)
		}

		resp, err := client.Do(req)
		if err != nil {
			log.Fatal(err)
		}
		defer resp.Body.Close()
		if err != nil {
			log.Fatal(err)
		}

		file, err := ioutil.ReadAll(resp.Body)
		if err != nil {
			log.Fatal(err)
		}
	*/

	var data []stopJSON

	err = json.Unmarshal(file, &data)
	if err != nil {
		fmt.Println("Unmarshal")
		log.Fatal(err)
	}

	//fmt.Println(string(file))

	// ループによる取得
	for _, e := range data {

		fmt.Println(e) // 全情報表情

		stops := e.BusroutePattern
		fmt.Println("len_stop", len(stops))

		for _, stop := range stops {
			fmt.Println(stop)
		}

	}
}

2023,江端さんの技術メモ

https://www.marble-lab.com/item_3412.html

を参考にさせていただき、自分用の手順書(マニュアル)を作成。

(Step 1) CSVファイルの作成
1行目に、各列の名前が入っていなければならない。
ファイルはこちら → test_user_list_14.csv

ファイルはこちら → test_user_list_14.csv

(Step 2) Google MAPの立ち上げ

(Step 3) Google MAPの立ち上げ

↓の赤丸をクリック

今は、こっちのインタフェースに、なっているようです。

(Step 4) 「マイプレイス」を選択

(Step 5) 「マイマップ」→「地図を作成」

(Step 6) 「インポート」を選択

(Step 7) ファイル(test_user_list_14.csv)をドラッグ

(Step 8) 緯度、経度を選択

(Step 9) マーカーのタイトルを選択

(Step 10) マーカーの色を変更する(→黒)

(Step 11) マーカーをクリックすると情報が表示される

以上

KeyWord: Google MAP、 マーカー、 アイコン、 csv, エクセル

2023,江端さんの忘備録

コーディングの怖いところは、「成果」と「努力や時間」の相関が非常に小さいということです。

The scary thing about coding is that the correlation between "results" and "effort or time" is very small.

例えば、200行くらいのプログラムを30分で作ることができることもあれば、2行のプログラムに10時間~1週間も『ドはまり』する、ということがあるからです。

For example, it is possible to create a program of about 200 lines in 30 minutes, or to be "stuck" for 10 hours to a week on a program of two lines.

―― JSONのパーサーなんぞ、3時間で片付けてやるわ

"I'll finish the JSON parser in three hours"

と着手したのが、昨日の今頃。

It was only this time yesterday that I started to do it.

tagのない配列型の形式をパースするプログラムのサンプルコードを求めて、ネットで探し回り、何十回もエラーに対応し、現在、24時間(仮眠を含む)を経過しました。

I kept searching the net for sample code for a program to parse an array type format without tags. And now 24 hours (including naps) have passed while dealing with dozens of errors.

完全に「ハマりました」。

I am completely "stuck".

―― もう、ダメだ

"Oh, God, no"

やむなく、質問サイトへの投稿を覚悟しました。

Reluctantly, I was prepared to post my question on a question site.

こんなに、ハマるくらいなら、早く投稿すればいいのですが、当然、投稿するためには、その状況を正確に詳細に記載しなければならず ―― 面倒くさいのです。それに、回答して貰えるかも分かりませんし。

I wish I could post sooner rather than get into this, but of course, in order to post, I have to describe the situation in exact detail -- it's a hassle. Besides, I don't know if I'll get an answer.

その為の短いプログラムを書いていたら、どういう訳か、そのプログラムが「正しく動く」のです。

When I write a short program for that purpose, somehow the program "works" correctly.

『いやいや、このコード、昨夜、何回か試したよね?』と思うのですが、動いているのだから仕方ありません。

'No, no, no, I tried this code several times last night, didn't I?' I think, but it's working, so I can't help it.

横浜市交通局 バス路線情報の取得方法 golangによるXMLパーサー

-----

プログラムは、動作したモノだけが正義です。

The program is only justified by the things that work.

動かないプログラムは、そのコードがどんなに、美しかろうが、読みやすかろうが、文法的に正しかろうが ―― すべて「ゴミ」です。

A program that does not work, no matter how beautiful, readable, or grammatically correct the code may be -- it is all "garbage".

コーディグは「努力や時間」などというものが、一切、斟酌(しんしゃく)されない世界です。

Codig is a world where "effort and time" are not taken into consideration.

-----

最近、私のGW、夏期休暇、年末休暇は、ほぼ全日コーディングに費されています。

Lately, my GW, summer vacation, and year-end vacations have been spent almost entirely in coding.

エンジニアとして、生き残りたいからです。

Because, I want to survive as an engineer.

『自作のプログラミングコード一本で、研究原資という"タマ"を取りに行く』

2023,江端さんの忘備録

過去の日記を探していたら、

When I was searching through my past diaries,

―― 10連休で人生を変える。AIエンジニアになろう。

を見つけました。

I found the article.

これ、2019年の日記の記事です。

This is a 2019 diary entry.

先程、探してみたところ、そのサービスは今年もやっているようです。

I just looked for that service and it appears that they are doing it again this year.

-----

本ページをご覧頂いているの皆様にお願いです。

I would like to make a request to all visitors to this website.

「10連休で人生を変えて、AIエンジニアになった方」ご本人、または、その知り合いの方。

You or someone you know who "changed your/their life in 10 straight holidays and became an AI engineer."

こちらのメールアドレスに、御一報を頂ければ幸いです。

I would appreciate it if you could let me know at this e-mail address.

交通費、滞在費、100%自腹で、インタビューに参上いたしたく希望しております。

I hope to come to you for an interview at 100% of our own expense, including transportation and accommodation.

きっと有意義なインタビュー、議論ができると、確信しております。

I am confident that we will have a meaningful interview and discussion.

よろしくお願いいたします。

Thank you for your cooperation.

2019,江端さんの忘備録

―― 10連休で人生を変える。AIエンジニアになろう。

"Change your life for 10 consecutive holidays. It will make you an AI engineer"

という広告を見ました。

I saw the ad.

私、「"AI"と言い換えられている技術」について2年間連載してきました。

I have been serializing "technology that is reworded as" AI "for two years.

しかし、そんな私でも、「AIエンジニア」という職種が何のことか分かりませんし、そもそも、そんな職種が存在するのか疑義があります。

However, even I, do not know what kind of job "AI engineer", and above all, I doubt whether such a job type exists.

少なくとも、AIの技術を具現化する為には、

At least to embody AI technology, you have already got the following all technologies.

■数式をプログラムにスペックダウンして、コーディングして、デバッグして、評価して、

- ability to speculate down formulas into programs, code, debug and evaluate

■データベースのスキーマ設計、構築、SQL文の作成して、

- ability for database schema design, construction, create SQL statement

■メモリ空間の使用イメージ、組合せ爆発の規模感の把握して、

- ability to grasp used memory space, and sense of scale of combination explosion

■学習プロセスを可視化するビューアを、ちょいちょいと作ってしまえるセンス

- sense of creating a viewer that visualizes the learning process

の全ての技能が必要だと思っております。

私の場合には、上記のそれぞれのプロセスの取得に「3年間」は必要だったと思います。

In my case, I think that "three years" was necessary to obtain each of the above processes.

「10日間」では無理だったと、断言できます。

It can be asserted that it was impossible in "10 days".

そもそも、プログラミングでなくても、エクセルで、分散、標準偏差、回帰分析ができないような人間が、"AI"という言葉を使うのは、正直「失笑」で「噴飯」ものだと思っています。

Even if it is not programming, but spreadsheet like Excel, honestly, I think that it is a "laughing" and a "jumping" thing that people say the word "AI" without performing variance, standard deviation, regression analysis.

(続く)

(To be continued)

2023,江端さんの忘備録

以前、インタビュー番組で、俳優の大泉洋さんが、

In an interview program, actor Yo Oizumi once said,

『自分はカラッポで、やりたいものはない』

"I am empty and there is nothing I want to do"

『誰かがやって欲しいと思うことをやって、喜んでもらえるのが、嬉しいだけ』

" I am just happy to do what I think someone wants me to do, and that makes me happy"

という話を聞いて、とても腑に落ちたことを覚えています。

I remember hearing him say this on the program, and it really hit me.

-----

これに関する話を、私もいくつか書いていたような気がしましたので、過去の日記を調べてみました。

I had a feeling that I had written a few stories about this, so I checked my past diaries.

私達の多くは「やりたいこと」など持っていない。与えられた条件の中で「やれることをやるだけ」である

- "Originally, we do not have "I want to do it myself"

あなたの夢を諦めないで

- Don't give up on your dreams.

『♪ 自由に生きていく方法なんて、1通りだってないさ~ 』

"There is no way to live freely ..."

うん、やっぱり、たくさん書いていました。

Yes, I knew I was writing a lot.

------

―― 私たちには、やりたいことなどない

"There is nothing we want to do"

をデフォルトとしておくことは、正直で、ラクな生き方である、と思います。

I think that keeping this phrase as a default is an honest and easy way to live.