2025年の振り返りと2026年

数年ぶりにこんにちは。
GWの時間を使って、去年の振り返りと残り8か月何やりたいかを記録しておこうと思います。

2025年

転職

2025年の5月にITコンサル企業から人工衛星開発のスタートアップへ転職しました。 転職した理由としては、

  1. 自分はコンサルできるほどの知識が無いという自覚があるのに、コンサルを名乗っていることにモヤっていたこと
  2. 生成AIを目の当たりにして、ITだけでは食っていけないと感じたこと
  3. グローバルな環境で仕事をしたかったこと

の3つが主かなーと思います。
1つ目に関しては、じゃあITコンサルへ転職するなよという話ではありますが、前々職(AIスタートアップ)から前職(ITコンサル)に転職した際には友人が既に在職していたこともあり、内部の事情や社内環境、上司などの話を色々聞いていました。
また、当時は自身の成長とロールモデルになる社員の存在に対して非常に飢えていたので前職への転職を即決しました。
転職の結果としては、人格も能力もロールモデルとなるような素晴らしい方々に出会えましたし、ハードスキル・ソフトスキル共にしっかりと鍛えて貰えたので、前職に関してはとても良い環境だったと思っています。
まぁ3年くらい経って、IT以外の知識がゼロなのにお客さんの業界に対してコンサル名乗るのって何だかなーとも思うようにもなりました 1。

で、これが2にも繋がってくるんですが、ちょうど2023年あたりに生成AIが出てきて、日に日に向上されていくその性能に圧倒されてしまいました。IT、ソフトウェアの知識だけでは食っていけなくなると。 そのためITだけではなく、特定のドメインで知識を持ちたいという思いが強くなりました。

最後の3つ目ですが、海外の方々と交流するのが好きだったので、グローバルな環境で仕事をしていきたいという思いがずっと心の根底にありました。 前職のお客さんがグローバル企業だったこともあり、英語を使う機会があったことも後押しされた感はありますが、沸々とグローバル環境への思いが強くなっていました。

そんなこんなで、全ての条件を満たしていて、かつ業務内容も一緒に働く人たちも面白そうだと思った現職への転職へ至りました。

2026年

英語

現在、自分が一緒に仕事をしているチームメンバーの7割が海外出身ということもあり、チャットの文章及びミーティングは全て英語です。
英語に関してはある程度の自信はありましたが、圧倒的語彙力不足、(英語ネイティブ・準ネイティブが二人以上居る場面だと)会話がドンドン進む、しっかり自分の意見を主張していかないと置き去りにされるなど面喰いました。
もちろん、彼ら・彼女らも日本が好きだったり日本語を学ぶ意欲のあったりする方々なので若干の日本語は使えます2が、ミーティング中は容赦なく会話が進んでいきます。

なので、以下を今年はやっていきたいと思います。

  • 生成AIを活用した英語校正と誤りの認識
  • CNN ENGLISH EXPRESSシャドウイングによるリスニングの強化
  • 瞬間英作文によるボキャブラリ強化

基本はGeminiにコーチングしてもらいながらの学習になります。納得できるまで質問ができるので、物事を学習するにはホントに良い時代になりました。

チームリーディング

今のところ2人チームではありますが、チームをリーディングする立場になりました。 前職からもそうでしたが、やはり自分は

  • やることをリストアップする部分
  • やることを細分化する部分
  • スケジュールを立てる部分

がどうしても苦手だなーと感じます。 直近でメンバーは増える予定ではあるので、メンバーが迷走しないようにするためにもしっかりとこれらの不得手ポイントに向き合っていく必要があります。
新しく発足したチームではあるので、今年発生が確定しているイベントに対して課題ややることを洗い出すところから始めていきたいです。
まずは、短期的な目標と中長期的にやっていきたい目標に分けて考えていこうと思います。

その他

もはや毎年の目標になってますが、BIG3(ベンチプレス・スクワット・デッドリフト)合計500kg到達させたいです。 現在、

  • ベンチプレス: 130 kg
  • スクワット: 165 kg
  • デッドリフト: 180 kg

なので、475 kgになります。もうベンチは伸びない感じがあるので、スクワット・デッドリフトが軸になるかなーと思います。
特にスクワットに関しては、しっかりボトムまで沈み込んで重量を足全体で受け止める感覚を掴めてきているので、まだまだ重量増やせそうな感触が強くあります。
デッドリフトは、昨年肘を痛めて控えていた関係で180kgまで戻すのにまだ時間がかかりそうな感じです。
そうなると、スクワットが165 → 190 kgで500 kg達成させるのが現実的な路線です。

2026年も4か月過ぎてしまいましたが、今年1年も良い年にできるようにしたいです。


  1. 今思えば、これは的外れな考えだったと思います。そもそもITコンサルなので求められるのはITであり、業界の知識ではない(はず)。↩
  2. 人気日本語ランキングは「まぁ」、「なるほど」、「面倒くさい」。どうやら、「まぁ」の間を置く感じと会話を和らげる感じがいいらしい。↩

【備忘録】PlatformIOを使った時にボードのバージョンを変える

よくESP32を使っているのですが、たまにボードのバージョンとライブラリがマッチしなくてエラーを吐かれることが多々ありました。 そこで、最近ようやくボードのバージョンを変更して書き込める方法を知ったのでシェアしておきます。 PlatformIOでプロジェクトを作るとplatformio.iniっていうファイルが作られるのでそこを少しいじるだけでいけます。

; platform = espressif32
;You can change the version of ESP32
platform =espressif32@1.5.0
board = esp32dev
framework = arduino
monitor_speed = 115200

こんな感じでplatfrom = espressifの後に@バージョンという形で指定すればいけます。 ちなみにmonitor_speedを定義しておくと、シリアルモニターの通信速度を指定できます。

Pythonで3Dグラフの軸ラベル位置を変える

3Dグラフを描画した際に軸ラベルのフォントサイズを変更するとどうしても軸の値と被ってしまい,位置の調整でかなり時間を使ってしまったので備忘録がてら手法を記します.

3Dプロット

3Dプロットにはmatplotlibのpyplotとmpl_toolkitsのmplot3dを使います.
グラフの例としては力センサから得た値をベクトルとして3次元空間上に表現するとします.
(値は何でも良いです)

import matplotlib.cm as cm #カラーマップ
import matplotlib.pyplot as pyplot
import mpl_toolkits.mplot3d
%matplotlib inline

X = np.linspace(5,10,10)
Y = np.linspace(0,20,10)
Z = np.linspace(-20,20,10)

figure = pyplot.figure(figsize=(10,10), facecolor='w')
ax = figure.gca(projection='3d')
xlabel = ax.set_xlabel("X-axis [N]")
ylabel = ax.set_ylabel("Z-axis [N]")
zlabel = ax.set_zlabel("Y-axis [N]")
ax.set_xlim(-20,20)
ax.set_ylim(-20,20)
ax.set_zlim(-20,20)
for i in range(len(X)):
    ax.plot([0,X[i]], [0,Y[i]], [0,Z[i]], "-^", color=cm.winter(200-(i+1)*20), ms=7, mew=0.5, lw=3)
    
    #3D空間上で原点が見にくいので,原点描画用
    ax.plot([-21,21], [0,0], [0,0], "-", color="gray", lw=1, linestyle = 'dotted')
    ax.plot([0,0], [-21,21], [0,0], "-", color="gray", lw=1, linestyle = 'dotted')
    ax.plot([0,0], [0,0], [-21,21], "-", color="gray", lw=1, linestyle = 'dotted')
    
    #3Dグラフの視点の変更
    ax.view_init(30, 30)

出力すると,
f:id:bigface00:20181108093426j:plain
のようになります.
でもこのままだと,軸ラベルが非常に見にくいですよね.
軸の値と軸ラベルの大きさを調整してみます.
軸の値はax.tick_paramsを追加し,

ax.tick_params(labelsize = 13)

軸ラベルにfontsizeを追加することでフォントサイズがそれぞれ変わります.

xlabel = ax.set_xlabel("X-axis [N]", fontsize = 18)
ylabel = ax.set_ylabel("Z-axis [N]", fontsize = 18)
zlabel = ax.set_zlabel("Y-axis [N]", fontsize = 18)

変更後の全体は

import matplotlib.cm as cm #カラーマップ
import matplotlib.pyplot as pyplot
import mpl_toolkits.mplot3d
%matplotlib inline

X = np.linspace(5,10,10)
Y = np.linspace(0,20,10)
Z = np.linspace(-20,20,10)

figure = pyplot.figure(figsize=(10,10), facecolor='w')
ax = figure.gca(projection='3d')
xlabel = ax.set_xlabel("X-axis [N]", fontsize = 18) ##fontsize追加
ylabel = ax.set_ylabel("Z-axis [N]", fontsize = 18) ##fontsize追加
zlabel = ax.set_zlabel("Y-axis [N]", fontsize = 18) ##fontsize追加
ax.set_xlim(-20,20)
ax.set_ylim(-20,20)
ax.set_zlim(-20,20)
for i in range(len(X)):
    ax.tick_params(labelsize = 13)##tick_params追加
    ax.plot([0,X[i]], [0,Y[i]], [0,Z[i]], "-^", color=cm.winter(200-(i+1)*20), ms=7, mew=0.5, lw=3)
    
    #3D空間上で原点が見にくいので,原点描画用
    ax.plot([-21,21], [0,0], [0,0], "-", color="gray", lw=1, linestyle = 'dotted')
    ax.plot([0,0], [-21,21], [0,0], "-", color="gray", lw=1, linestyle = 'dotted')
    ax.plot([0,0], [0,0], [-21,21], "-", color="gray", lw=1, linestyle = 'dotted')
    
    #3Dグラフの視点の変更
    ax.view_init(30, 30)
plt.savefig("output2.jpg")

出力すると,
f:id:bigface00:20181108093839j:plain
のようになり,軸ラベルが数値と被ってしまいます.
これではかなり不細工なので,軸ラベルの位置を調整したいと思います.
調整するには,

from matplotlib import rcParams
rcParams['axes.labelpad'] = 16

を追加するだけでいけます.
rcParams['axes.labelpad'] はX,Y,Z全ての軸ラベルをまとめて調整することが可能です.
出力すると,
f:id:bigface00:20181108095934j:plain
となり,軸ラベル全体でばっちりマージンがとれています.
rcParamsではmatplotlibのパラメータを調整することができます(下記サイトが参考になると思います).
qiita.com

M5StackでMPU9250が動かない

最近M5Stackをよく使うようになりました.
www.switch-science.com
ESP32搭載のLCD付きマイコンでサイズもちょうどよく,Grayを買えばIMU付きで素晴らしい代物です.
特にBLEやWiFiが使えることでデータのやり取りもでき,使い勝手もいいです.
今回,後輩がIMUを使ったアシスト制御みたいなのをやるらしくまずはM5Stackを使ってみることにしました.

Arduino IDEで動かす場合,ボードマネージャからESP32 Dev moduleダウンロードすることで書き込みができるようになったようなので,そちらでやってみました.
しかし,M5StackのライブラリについているMPU9250のサンプルであるMPU9250BasicAHRSを書き込むとM5Stackが永遠と再起動してしまう...
シリアルモニタを見ると
Guru Meditation Error: Core 1 panic'ed (IntegerDivideByZero). Exception was unhandled.
とのこと.
全くわからずGoogle先生で調べてみると,I2C通信の問題らしい...
あまりここらへんは詳しくないため途方に暮れてダメ元でGit GUIを使ったESP32ボードのダウンロードを行ったところ,なんと書き込みが成功しました...!!
github.com
今のところは↑のやり方でやった方が良さそうです.

Scipyのoptimize.fmin関数を使った階段法における心理物理曲線

最近,初めて階段法を使った心理物理実験をやりました.
実験の後半は僕も被験者も意識が朦朧としてました...笑
ただ,プロトコルしっかり練って,それに対応したプログラム組めば実験者側はかなり楽になると思います.
被験者側はしっかり休憩挟む以外,楽する方法は無さそうですね笑
心理物理実験の後はその結果に対してカーブフィッティングを行うことで,PSE(主観的等価点),75%閾値などを算出して基準に対する比較刺激のバイアスがあるかどうかを調べていきます.
カーブフィッティングの方法については下記の梶本先生のページが一番わかりやすいと思います.
恒常法のS字カーブフィッティングについて
せっかくMatlabで書いて頂いているのですが,それを参考にして今回はPythonで書いてみました.

続きを読む

ESP32でBLE

ほぼ1年ぶりぐらいの投稿です.

更新しようと思って全くできていなかった...

今年度こそはしっかりやったことを記録としてはてブロに投稿するようにします(_ _)

 

最近,研究の一環で電子工作を頻繁にやるようになりました.

僕の知識はArduino最強!で高専時代から止まっていたのですが,留学生からESP32なるものを紹介されて最近は専らESP32です.

このESP32,Bluetooth,Wifi搭載で価格も安く中々の代物.

今日はBLEの使い方に関して備忘録も兼ねて書いていこうと思います.

続きを読む

Pythonメモ書き(unique,linspaceメソッド)

  • uniqueメソッド

np.unique(array):arrayの中身を重複なしで返す.

例えばarray=[1,1,1,2,3,3]だったら[1,2,3]が返ってくる.

np.unique(array, return_counts=True)とすると,各要素の数も返ってくる.

上の例だと,(array([1,2,3], array([3,1,2]))が返ってくる.

 

  • linspaceメソッド

np.linspace(0,1,50):0~1を50分割したものをストアしたarrayを返す.