未分類

/*
  gcc -o gst_videotestsrc_autovideosink gst_videotestsrc_autovideosink.c `pkg-config --cflags --libs gstreamer-1.0`

*/

#include <gst/gst.h>

int main(int argc, char *argv[]) {
    GstElement *pipeline, *source, *sink;
    GstBus *bus;
    GstMessage *msg;
    GError *error = NULL;

    /* Initialize GStreamer */
    gst_init(&argc, &argv);

    /* Create the elements */
    source = gst_element_factory_make("videotestsrc", "source");
    sink = gst_element_factory_make("autovideosink", "sink");

    /* Create the empty pipeline */
    pipeline = gst_pipeline_new("test-pipeline");

    if (!pipeline || !source || !sink) {
        g_printerr("Not all elements could be created.\n");
        return -1;
    }

    /* Build the pipeline */
    gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);
    if (gst_element_link(source, sink) != TRUE) {
        g_printerr("Elements could not be linked.\n");
        gst_object_unref(pipeline);
        return -1;
    }

    /* Start playing */
    gst_element_set_state(pipeline, GST_STATE_PLAYING);

    /* Wait until error or EOS */
    bus = gst_element_get_bus(pipeline);
    msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));

    /* Parse message */
    if (msg != NULL) {
        GError *err;
        gchar *debug_info;

        switch (GST_MESSAGE_TYPE(msg)) {
            case GST_MESSAGE_ERROR:
                gst_message_parse_error(msg, &err, &debug_info);
                g_printerr("Error received from element %s: %s\n", GST_OBJECT_NAME(msg->src), err->message);
                g_printerr("Debugging information: %s\n", debug_info ? debug_info : "none");
                g_clear_error(&err);
                g_free(debug_info);
                break;
            case GST_MESSAGE_EOS:
                g_print("End-Of-Stream reached.\n");
                break;
            default:
                /* We should not reach here because we only asked for ERRORs and EOS */
                g_printerr("Unexpected message received.\n");
                break;
        }
        gst_message_unref(msg);
    }

    /* Free resources */
    gst_object_unref(bus);
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);
    return 0;
}

2024,江端さんの忘備録

「パパの好きなシンガーって誰?」と次女に尋ねられました。

'Who's your favorite singer, Daddy?' asked my second daughter.

私:「以前は、『いない』とか言っていたんだけどなぁ」

Me: "I used to say 'no'"

次女:「?」

Second daughter: '?'

私:「最近は、"YOASOBI"が、とても良いと思う。頭2つ分抜けて良い」

Me: "Lately, I think YOASOBI is very good. It's two heads above the rest."

-----

私は、アニメ好きであるので、アニソンとの関連もあると思いますが、はやり「歌詞」が良いと思います。

As an anime fan, I think it relates to anime songs, but I think the lyrics are better.

以前、『もはやこれは新しい文学』である、てなことを書きました。

I once wrote that 'this is a new literature.'

アニメ「葬送のフリーレン」のオープニング(日本語と英語版の両方)を聞かせれば、英語や国語が『人を感動させる道具(あるいは武器)になる得る』という実例を、分かって貰えるんじゃないかなぁ、とか考えています。

私は"YOASOBI"のコンサートに行きたい訳ではありませんし、正直、このシンガーを視認させて頂いたのは、昨年の紅白歌合戦の時の1度だけです。

I don't want to go to a "YOASOBI" concert, and to be honest, I have only had the opportunity to recognize the singer once, during the Kohaku Uta Gassen last year.

"YOASOBI"の歌は、恋愛史上主義的でもなく、あるいは、その真逆の恋愛敗北的でもなく、猛進的でもなく、虚無的でもなく、支配的でもなく、過度に人を鼓舞したり、逆に抑圧的でもない ――

The songs of YOASOBI are not romantic historicist or, on the contrary, romantic defeatist, not furious, nihilistic, oppressive, overly inspiring, or, on the contrary, repressive -- they are not about the past, but about the future.

敢えていえば、『私との摩擦係数の"小さい"ところが良い』という感じでしょうか。

I dare say that the "small" coefficient of friction with me is a good thing.

-----

『いつか、どこかで、だれかがあなたを待っている』という曲の内容は、ほぼ100%嘘です。そんな人は、世界のどこにもいません。

The song 'Someday, Somewhere, Someone is Waiting for You' is almost 100% false. There is no such person anywhere in the world.

大抵の場合『愛は勝ちません』し、『一生持ち続けられる信念』などというものは存在しません。

Most of the time, 'love does not win', and there is no such thing as a 'belief that you can hold on to for life'.

『あなただけは、これからも変わらないで』というのは、無責任な責任放棄の戯言ですし、『私は、これからも、あなただけを思い続ける』というのは、健全ではないストーカー心理です。

'You're the only one who will never change' is irresponsible, abdicating responsibility nonsense, and 'I will only ever think of you' is an unhealthy stalker mentality.

-----

多分、リスナーも、そんなことは分かった上で音楽を聞いていると思うのです。

I think listeners probably know that and listen to music like that.

音楽の中のセリフが、実現不能な「理想(イデア)」として語られているから、特に若い世代の心を打つのでしょう(と勝手に思っています)。

The lines in the music are described as unrealizable 'ideals,' which is why they strike a chord with the younger generation (or so I think).

私の経験から、『愛は勝ちません』し、『信念は年単位で変更されます』。『自分は、社会的な立場によってコロコロ変化しつづけます』し、『ある人だけを思い続けることはできません』。

In my experience, 'love does not win' and 'beliefs change over the years.' 'I keep changing from one social position to another' and 'you can't keep thinking only of one person'.

こういう対応ができずに、自分の生き方に固執した人間(の一部)が、どういう転落をしていったかを、私は知っています。

I know what kind of fall-out has happened to people (some of them) who failed to respond in this way and stuck to their way of life.

「兵士たちの連合赤軍」という本です。

-----

つまるところ、"YOASOBI"には、そういう、『他人に対する命令形』、あるいは『他人をマウント』するような、歌が"ない"か"少ない"ように思えるんですよ。

In the end, it seems to me that "YOASOBI" has "no" or "few" such songs that are "imperative to others" or that "mount others."

だから、聞いていても、とてもラクなのです(もちろん、楽曲として優れているのは言うまでもありませんが)。

So it's effortless for me to listen to (not to mention that it's an excellent piece of music).

まあ、それほど、聞き込んでいる訳でもないので、「外して」いるかもしれませんが。

Well, not so much. I'm not listening in, so I might be 'off.'

2024,江端さんの忘備録

私は、私は料理が「できる」というレベルではありませんが、料理を「する」というレベルにはあると思います。

I am not at the level where I 'can' cook, but I think I am at the level where I 'do' cook.

私は、冷蔵庫の残り物から、適当に一品作ることができます。

I can make a dish from leftovers in the fridge, as appropriate.

もちろん、その料理は「旨い」というものではなく、「喰える」というものです。

Of course, the food is not 'good,' but 'edible.'

外食は、外出して、注文して、待って、食べて、支払いをして、帰宅する、というプロセスが発生しますが ―― 私は、これを面倒くさいと感じます。少くない時間を消費するのも嫌なのです。

Eating out involves going out, ordering, waiting, eating, paying, and going home - I find this a hassle. I wouldn't say I like to consume a small amount of time.

で、結構な頻度で『外す』のです 。つまり『不味い』。

And I 'miss' quite often. In other words, it 'tastes bad'.

外食は一種のギャンブルですので、これは必要なコストと言えますが、やっぱり『外す』リスクは見逃せません。

Eating out is a kind of gambling, so this is a necessary cost, but the risk of 'missing out' still cannot be overlooked.

-----

それ以外の観点としては、「料理がシステム構築」であるということですね。

The other perspective is that 'cooking is system building.'

男子食堂

ただ、私は素材や調理法に関する科学的知見がありませんので、私の料理は、基本的には「トライ&エラー」となります。

However, I have no scientific knowledge of ingredients or cooking methods, so my cooking is essentially 'trial and error'.

自分の料理でも、「外す」ときは「外します」

Even my cooking 'fails' when I 'fail.'"

-----

で、今日、たまたま、

And today, by chance,  I read the book of 

ヤンキー君と科学ごはん

Yankee-kun and Science Gohan

を読みました。

これが凄くてですね、料理のプロセスの意義を、ほぼ100%科学的に説明しているのです。

The book is amazing. It explains the significance of the cooking process in an almost 100% scientific way.

漫画(絵図)で説明されているし、ストーリの中で主人公たちの会話を読むことで、内容も深まります。

It is explained in cartoons (pictorial), and the content is deepened by reading the conversations between the main characters in the storyline.

ヤンキー君がわたしたちの疑問を、先生がその理由を説明していくというストーリ展開が良いです。

The storyline is well developed, with Yankee-kun asking our questions and the teacher explaining why.

-----

性別、年齢に関係なく、自分の食事くらいは、自分でなんとかできるようにした方がいいです。

Regardless of gender or age, you should at least be able to manage your food.

自分の喰いたい飯を、自分で作るのは、てっとり早くていいですよ。

Making the food you want to eat yourself is quick and easy.

彼は『鳥と豚と牛の肉の違いも分からん』と無邪気に語っていましたが ―― はっきりいって、それ『マザコン』や『ロリコン』以上にヤバい。

2024,江端さんの技術メモ

ポインタと値の操作: item がリスト内の要素をポインタ経由で取得している場合、item を変更しても元のリストの要素が変更されることがありますが、それ以外の場合はそのような自動的な反映は行われません。必要に応じて、&item を使用してポインタ経由でアクセスし、リスト内の要素を直接変更します。

 

スライスと範囲ループの挙動: Go言語では、for range ループで取得した item は元のスライスの要素のコピーです。これにより、item を直接変更しても元のリストの要素に反映されません。そのため、ポインタ経由でアクセスして変更する必要があります。

失敗例

var estimatedStartTime time.Time
			var estimatedMovingTime time.Duration
			var estimatedStayTime time.Duration

			for i, item := range list {

				if i == 0 {
					estimatedStartTime = estimated_Start_Time(data, item.destination) // 出発時刻(リアル時間)
					fmt.Println("i=0のitem.destination:", item.destination)
					fmt.Println("i=0のestimatedStartTime:", estimatedStartTime)
					item.dep_time = estimatedStartTime // 時刻 (記録用)
					fmt.Println("in i=0  item.dep_time:", item.dep_time)
				} else {
					item.dep_time = estimatedStartTime.Add(estimatedMovingTime + estimatedStayTime)
				}

				fmt.Println("===================>", item.dep_time)

				estimatedMovingTime = estimated_Moving_Time(item.ox, item.oy, item.dx, item.dy) // 移動時間(間隔)
				fmt.Println("estimatedMovingTime:", estimatedMovingTime)

				estimatedStayTime = estimated_Stay_Time(data, item.destination) // 滞在時間(間隔)
				fmt.Println("estimatedStayTime:", estimatedStayTime)

				// item.dep_time = estimatedStartTime // 時刻 (記録用)
				item.stay_time = estimatedStayTime // 滞在時間(間隔) (記録用)


					if i+1 < len(list) {
						fmt.Println("in 558", estimatedStartTime, item.dep_time)
						nextItem := &list[i+1]
						nextItem.dep_time = estimatedStartTime.Add(estimatedMovingTime + estimatedStayTime) // 次の出発時刻 = 現在の出発時刻 + 移動時間
						fmt.Println("After nextItem.dep_time:", nextItem.dep_time)
						fmt.Println("in 562", estimatedStartTime, item.dep_time)
					}


				//fmt.Println("in 565", estimatedStartTime, item.dep_time)

			}

			for i, item := range list {
				fmt.Println(i, "item.dep_time:", item.dep_time)
				fmt.Println(i, "item.stay_time:", item.stay_time)
				fmt.Println(i, "item:", item)
				//fmt.Println(i, "item.dep_time:", item.dep_time.Format("2006-01-02 15:04:05"))
			}

成功例

var estimatedStartTime time.Time
		var estimatedMovingTime time.Duration
		var estimatedStayTime time.Duration

		for i := range list {
			if i == 0 {
				estimatedStartTime = estimated_Start_Time(data, list[i].destination)
				fmt.Println("i=0のitem.destination:", list[i].destination)
				fmt.Println("i=0のestimatedStartTime:", estimatedStartTime)
				list[i].dep_time = estimatedStartTime
				fmt.Println("in i=0  item.dep_time:", list[i].dep_time)
			} else {
				// 前のアイテムの出発時刻に移動時間と滞在時間を加えて計算
				list[i].dep_time = list[i-1].dep_time.Add(estimatedMovingTime + estimatedStayTime)
			}

			// 移動時間と滞在時間を計算する
			estimatedMovingTime = estimated_Moving_Time(list[i].ox, list[i].oy, list[i].dx, list[i].dy)
			fmt.Println("estimatedMovingTime:", estimatedMovingTime)

			estimatedStayTime = estimated_Stay_Time(data, list[i].destination)
			fmt.Println("estimatedStayTime:", estimatedStayTime)

			// 滞在時間を記録用に設定する
			list[i].stay_time = estimatedStayTime

			fmt.Println("===================>", list[i].dep_time)
		}

		for i := range list {
			fmt.Println(i, "item.dep_time:", list[i].dep_time)
			fmt.Println(i, "item.stay_time:", list[i].stay_time)
			fmt.Println(i, "item:", list[i])
		}
	}

そんな仕様、知るかーーーー

2024,江端さんの忘備録

現在通っている大学のゼミの学生の半数は、海外からの留学生です(聞いている範囲では、殆どの学生がJICAの支援を受けているようです)。

Half of the students in the seminar at the university I am currently attending are from overseas (as far as I have heard, the JICA supports most of them).

先日、大学で留学生から、「大学の守衛門で、建物を聞いたら、腕で×印をされて、『私は大学の学生ではない』と言われた」という話を聞いて ―― 私(江端)がキレました。

最近、会社でのチームのリーダーも、海外の人になりました。

Recently, the team leader in my company has also been an expatriate.

ここ2年で、英語を使う機会が一気に増えました。

My opportunities to use English have increased dramatically in the last two years.

こうなってくると、もう英語が「できる」とか「できない」とかいう次元の話ではなくなります。

When this happens, it is no longer a question of 'being able' or 'not being able' to speak English.

「英語を使わない」という選択肢が『ない』のです ―― 本当に『ない』。

There is a 'no' option to 'not use English' -- really a 'no' option.

「使わなければ、自分の存在が消失する」という状況です。

'If I don't use it, I will cease to exist'.

正直、キツい日々です。

Frankly, it's a tough day.

-----

こうなってくると、「正しい英語」とか「美しい英語」とか、そういうことを言っている余裕は1mmもありません。

When it comes to this, there is not a millimetre of time to talk about 'correct English' or 'beautiful English'.

以前書いたコラムの内容を、そのまま実践するしかないのです。

I can only put into practice what I have written in my previous columns.

(上記をクリックすると、コラムに飛びます)

(Click above to jump to the column).

-----

上記のコラムの内容については、当時、少なからず批判を受けました。

I received no small amount of criticism at the time for the content of the above column.

(私は執念深いので、その批判をしてきた人のことを、全員覚えています)

(I am so vindictive that I remember everyone who has made that criticism.)

ちなみに、私の今のような状況は、今後の未来で、多くの日本人が直面する状況になるでしょう。

Incidentally, I am in the situation many Japanese will face now.

これは、確定した未来です。

The above is a confirmed future.

その時、「正しい英語」とか「美しい英語」などと言っている余裕があるでしょうか?

Can we talk about 'correct English' or 'beautiful English'?

私は「ない」と思う。

I would say 'no'.

この件に関してだけは、今なお、『私が正しい』と思っています。

I still think that I am right on this matter.

-----

多分、私のしゃべっている英語を、心底不快に思っている人は、沢山いるでしょう ―― 日本語ネイティブの人であれ、非ネイティブの人であれ。

There are probably many people who are sincerely uncomfortable with the English I speak, whether they are native Japanese speakers or non-native speakers.

そもそも、しゃべっている私自身が、私の英語を不快に感じています。

In the first place, I, who am speaking, feel uncomfortable with my English.

『もっと、カッコよく英語をしゃべれんものかなぁ』と、がっかりしてはいます。

I'm disappointed that I can't speak English more excellently.

ですが、自己嫌悪に陥る暇はありません。

But there is no time for self-loathing.

生きるためなのです。

It is for survival.

カッコついてける余裕なんぞ、あるわけありません。

There is no way I can afford to be excellent.

-----

私のデタラメな英語を聞いて、不快と感じて、私を嫌いになる人は、少なからずいると思います。

I think there are more than a few people who find my bullshit English offensive and dislike me.

申し訳ないと思いますが、今の私には、そんなことを忖度(そんたく)する余裕は全くありません。

I am sorry, but I now have no time for such a consideration.

諦めて下さい。

Please, you must give up.

『嫌いな奴から言われることは、その是非に関係なく、全ての内容に100%ムカつく』

 

2024,江端さんの忘備録

昨日、冷蔵庫の中に、テレビのリモコンが入っているのを見つけました。

Yesterday, I found a TV remote control in my refrigerator.

最後の利用者、時間帯、家に滞在していた人間、などを分析し、犯人は簡単に特定できました。

The culprit was easily identified by analyzing the last user, the time of day, the person staying at the house, etc.

――  『終りの始まり』が始まった

"The Beginning of the End" has begun.

を確信しました。

The above convinced me of the fact.

-----

まあ、これまでも、

Well, ever,

■風呂場に着替えを2セット用意する

■Two sets of clothes in the bathroom

なども、結構ありました。

And so on have been quite common.

不適切な情報制御

などもありましたが、「冷蔵庫からリモコンが出てくる」は、もうレッドアラートでしょう。

The above incidents have occurred over the past ten years, but "a remote control coming out of the refrigerator" should be a red alert by now.

『これからも、こういうことがあったら、夫婦で”情報”を共有する』ことを、嫁さんと再度確認しました。

My wife and I confirmed once again that we would share "information" with each other if something like this ever happened again.

 

 

 

未分類

クローン作るのに、10時間弱ですよ・・・(昔はよかった・・・(遠い目))

2024,江端さんの忘備録

シニアエンジニアの皆さん

Senior engineers.

後輩エンジニアが、『ご存知ないかもしれませんが・・・』という話をしてきて、

A junior engineer tells you a story about 'You may not know...',

それについて得意気に知識や知見を披露している時、

When she/ good at sharing your knowledge and expertise about it,

仮にあなたが、かつてその分野についての、ど真ん中の当事者であったとしても、

Even if you were once in the middle of the pack on the subject,

「へー、そういうものなんですか。大変勉強になりました。ありがとうございます」

'Oh, so that's how it is? I learned a lot. Thank you very much.

と、御礼を言うことができて、

はじめて「シニアエンジニア」というのです。

You are a senior engineer, so only when you say, "Thank you very much.

-----

ジュニアエンジニアの皆さん

Junior engineers.

上記のような可能性があることを、頭の片隅に置いておくと、

If you keep the above possibilities in mind,

『後になって色々と分かって、恥しさでベッドの上で転げ回る』という醜態を晒す回数を、減らすことができます。

You can reduce the number of times you have to do the abomination of 'I'll find out later and roll over in bed in shame.'"

-----

この歳になると、シニア、ジュニア、どちらの立場も見えるようになって ―― それなりに楽しいこともあります。

At my age, I can see both sides, senior and junior -- and it can be fun.

『マウントなんて、面倒くさい』と思えるようになると、色々とラクになります。

'When you can think, 'Mounting is such a hassle,' it makes things a lot easier.

―― できるだけ無様な自分を、ありのままにさらけ出す

2024,江端さんの技術メモ

gst-launch-1.0 rtspsrc location=rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1 latency=0 ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=360 ! videorate ! video/x-raw,framerate=5/1 ! x264enc bitrate=1700 speed-preset=ultrafast tune=zerolatency key-int-max=1 ! mpegtsmux ! srtserversink uri = \"srt://192.168.101.10:38089\" latency=500
を実施するためだけのプログラムをGO言語で作成してください

package main

import (
	"fmt"
	"os"

	"github.com/go-gst/go-glib/glib"
	"github.com/go-gst/go-gst/gst"
)

func main() {
	fmt.Println("starting.....")

	// gstreamer初期化処理
	gst.Init(&os.Args)

	// メインループ生成
	mainLoop := glib.NewMainLoop(glib.MainContextDefault(), false)

	// パイプラインの要素を生成
	source, _ := gst.NewElement("rtspsrc")
	depay, _ := gst.NewElement("rtph264depay")
	decoder, _ := gst.NewElement("avdec_h264")
	convert, _ := gst.NewElement("videoconvert")
	scale, _ := gst.NewElement("videoscale")
	rate, _ := gst.NewElement("videorate")
	filter1, _ := gst.NewElement("capsfilter")
	filter2, _ := gst.NewElement("capsfilter")
	encorder, _ := gst.NewElement("x264enc")
	mux, _ := gst.NewElement("mpegtsmux")
	sink, _ := gst.NewElement("srtsink")

	// 各要素のプロパティを設定
	source.SetProperty("location", "rtsp://cam:Cam12345@192.168.0.10/Src/MediaInput/stream_1")
	source.SetProperty("latency", 0)
	filter1.SetProperty("caps", gst.NewCapsFromString("video/x-raw,width=640,height=360"))
	filter2.SetProperty("caps", gst.NewCapsFromString("video/x-raw,framerate=5/1"))
	encorder.SetProperty("bitrate", 1700)
	encorder.SetProperty("speed-preset", "ultrafast")
	encorder.SetProperty("tune", "zerolatency")
	encorder.SetProperty("key-int-max", 1)
	sink.SetProperty("uri", "srt://192.168.101.10:38089")
	sink.SetProperty("latency", 500)

	// パイプラインを生成して要素を追加
	pipeline, _ := gst.NewPipeline("video_player")
	pipeline.AddMany(source, depay, decoder, convert, scale, rate, filter1, filter2, encorder, mux, sink)
	gst.ElementLinkMany(depay, decoder, convert, scale, rate, filter1, filter2, encorder, mux, sink)

	// 動的パッドのリンク
	source.Connect("pad-added", func(element *gst.Element, pad *gst.Pad) {
		pad.Link(depay.GetStaticPad("sink"))
	})

	// パイプラインメッセージ読取
	pipeline.GetPipelineBus().AddWatch(func(msg *gst.Message) bool {
		switch msg.Type() {
		case gst.MessageEOS: // end-of-streamを受信したらパイプラインを停止
			pipeline.BlockSetState(gst.StateNull)
			mainLoop.Quit()
		case gst.MessageError: // エラーメッセージはFatalにする
			err := msg.ParseError()
			fmt.Println("ERROR:", err.Error())
			if debug := err.DebugString(); debug != "" {
				fmt.Println("DEBUG:", debug)
			}
			mainLoop.Quit()
		default:
			// 受信メッセージの表示
			fmt.Println(msg)
		}

		return true
	})

	// パイプライン開始
	pipeline.SetState(gst.StatePlaying)

	// メインループ開始
	mainLoop.Run()
}

2024,江端さんの忘備録

毎日、『本当に死ぬよ』と、家族の誰かから叱られています。

Every day, my family members scold me, 'You are going to die.'

先日、『プライドが高い』と姉から指摘されました。

My sister pointed out to me the other day that I was 'proud.'

要するに、みんな「もっと手の抜け」「自分の目標をもっと低く設定しろ」と言いたいらしいです。

In short, they all want to say that I need to be more hands-off and set lower targets.

まあ、私、週末も含めて、毎日15時間くらいは、パソコンの前で何かをやっていますので、家族や姉の指摘は正しいと思います。

Well, I spend about 15 hours every day, including weekends, in front of the computer doing something, so I think my family and my sister are correct in pointing this out.

そもそも、私自身が、ワーカーホリックを批判するブログやコラムを書いてきました。

To begin with, I have written blogs and columns criticizing workaholics.

ただ、今の私は、学生と社会人の両方をやっており、過去に比類なき激務で、ここ2年くらい働き続けているのは事実です。

However, it is true that I am now both a student and a worker and have been working for the last two years with unparalleled hard work in the past.

『そんな状況で、なんで、このブログの記載を続けているんだ?』という意見が聞こえてきそうですが、これは、私に取って「息抜き」です。

'Why do you keep writing this blog under such circumstances?' but this is a 'break' for me.

このくらいの余暇がなければ、私はスタックしてしまいます。

Without this amount of leisure time, I would be stuck.

現在、EE Times Japanへの寄稿を止めさせて頂いているのは、その時間を全部、大学の研究活動に持っていかれているからです ―― もちろん、それを選んだのは私自身ですので、全て私の責任ではありますが。

I have stopped contributing to EE Times Japan because my university research activities are taking up all that time. Of course, I chose to do that myself, so it's all my fault.

-----

私:「例えば、旅行で軽井沢に行くとすると、まず軽井沢に到着することが目的だよね」

Me: "For example, if you go to Karuizawa on a trip, the first thing you want to do is arrive in Karuizawa."

嫁さん:「?」

Wife: "?"

私:「で、みんなは、よってたかって、私に『軽井沢は遠いから、近場で妥協しろ』と言っているんだよね」

Me: "And they all get together and tell me, 'Karuizawa is too far away, so compromise with somewhere closer.'"

嫁さん:「...」

Wife: "..."

私:「でもね、『軽井沢』の代りとなる『近場』を、誰も教えてくれないんだよ」

Me: "But, you know, no one can tell me of any 'nearby places' that can replace 'Karuizawa'."

嫁さん:「『止めろ』とは言うけど『では、どうすればいいのか?』は教えてくれない、と?」

Wife: "We say 'stop it,' but we don't tell you 'what I should do'"

私:「そう。つまり、誰もが、簡単に『止めろ』としか言ってくれないんだよ。止めたら、本当に止まってしまうんだけど、それ、私だけの問題に留まらないよ。本当にそれでいいの?」

Me: "Yeah. All anyone can do is tell me to 'stop.' If I stop, it stops, but that's not just about me. Are you sure that's what you want?"

嫁さん:「それも含めて『自分で考える』じゃないの?」

Wife: "Isn't that part of 'thinking for yourself'?"

私:「それを『考える労力』のコストの大きさを誰も考えてくれない。『軽井沢の代替地』を考えるコストは、相当に高いんだけど ―― 皆、それを無視して『止めろ』『止めろ』と連呼しかしないんだよね」

Me: "Nobody thinks about the magnitude of the cost of the 'effort' to 'think' about it. The cost of thinking about 'alternative sites for Karuizawa' is quite high - but everyone ignores that and calls out 'stop' and 'stop.'"

-----

皆さん。働き過ぎの人に対して、無責任に『止めろ』と連呼していませんか?

Ladies and Gentlemen. Aren't you irresponsibly calling for people overworking to 'stop'?

それ、当事者には、何のアドバイスにもなっていませんよ。

That's not any advice for the parties involved.

『止めた』後のことを何も考えていない『止めろ』のアドバイスは

'The advice to 'stop' with no thought for what happens after I 'stop' is...

―― 自分を、優しそうな人間や親切な人間に見せかけることを目的としただけの、無責任な暴力

"Irresponsible violence that only aims to make you look like a nice or kind person."

であると、最近の私は思うんですよ。

I think, these days, that it is.

反論のある人は、以下のブログを読んだ後に、私に連絡して下さい。

Anyone with a counter-argument should contact me after reading the following blog.

―― 自殺という方法で「逃げていいんだよ」