Alexのブログ

定年近くなり転職活動中

DS検定終わった

3月上旬から、3年間眠っていたDS検定の本で勉強始めた。

3年前、新しい職場へ異動したが、職場のレベルが低く、危機感を感じ、DS検定の本を購入したのを思い出す。しかし、苦手な統計数学が含まれていて、ずっと手がつかなかった。それで、昨年度は、G検定の方を受けて合格した。各種AIのプロトタイピング経験豊富なので、AI中心のG検定の方が楽だから。

3月から知財関係へ転職活動中。Geminiへ聞いたら、知財関係でAI関連担当するならDS検定役にたつよと。だから、DS検定受験しようと思い立った。

3ヶ月半、必死になって勉強した。週末も潰して。合計100時間くらい勉強したと思う。

そしてCBTで受験し、最後の確認時に86点と出た時には、とてもホッとした。これなら絶対合格!

前日は緊張でよく寝れず、かなりの睡眠不足と疲労の中、100問解くのはしんどかった。しかし、100問解いたら20分近く余ったので、前半の問題を見直すことができた。見直したからと言って、特に、修正することもなかったが。

受験時の感想:

  • エンジニアから見ると、前半の「仕事の進め方」問題がしんどかった。それで、時間配分的にもギリギリで、これは落ちるなと不安な気持ちに。ああ、3ヶ月半の努力が無駄に。。。睡眠不足と疲労が重なり、気分もかなり悪くなった。
  • ところが、後半は技術系問題中心となり快速、気分は楽になった。
  • 結果として20分余った。

身についたこと:

  • 受験する体力:100分間集中
  • 文章読解力・速読力
  • 論理的思考・正しい仕事の進め方
  • データサイエンス全般のリテラシー

合格したからといって、転職時に有利なわけではないが、転職後の仕事にプラスになるのは間違いなし。だから、3ヶ月半、かなりしんどかったが、頑張った甲斐があると思っている。

また、今の職場ではAIトランスフォーメーションが始まったばかり。しかし、仕事の進め方が間違っている人たちが多い。手段が目的化している。この勉強を通し、その辺、改めて認識できた。

定年前のこの歳でDS検定受験する人は少ない。CBT会場では、皆、20代だった。まだ前線で当面は働ける、そういう自信が付いた。

次はTOEICへ挑戦だ!知財関連の勉強も本格化。結局、今後も勉強で週末が潰れる。

 

 

たぶん今の会社で最後のGWが今日終わる

毎年、GWは、勉強しながら今年度の仕事に向けた素材を準備する期間。

今年も、毎度のように、素材の準備。

しかし、入社して36年以上たった。

今年度は生成AI本格導入で、構造改革の年でもある。

生成AIリテラシーも技術力も高い私だが、年齢制限の壁あり。

だから、定年近くなれば、出ていくしかない。

会社自体、入社してから大きく変わってしまった。

私が入社したころは、なんでも作れるメーカーで、誰もが憧れた就職先。人気NO.1。

しかし、繰り返された集中と選択で、会社は変わり果てた。だから、会社を出ていくことに未練はない。

身についたのは、幅広い現場経験と技術力。海外でも仕事した。変わり果ててしまったが、会社には感謝。

来年度は他の会社で働いているのか?

ITエンジニアのAI失業

1年前の春、ITエンジニアの仕事がAIに食われていくのが見えてきたので、まったく無気力になってしまった。あれだけ「つくりたい」という気持ちに溢れていたのに。この仕事で稼げなくなるのが見えた段階で、無気力へ。心底、ITが好きだった訳ではないことも分かった。

 

しかし、AIの活用が出遅れている職場では、今年度1年間は、プログラミングしなければ解決出来ない課題がたくさん残っており、エンジニアとしての仕事に追われた。それでも、1月に入ると、仕事は無くなってきた。

 

さて、2026年度は、いよいよ、私のようなエンジニあまり要らなくなる段階へ。よって転職を決意しつつある。もっと上流の仕事へ。

 

上流の仕事って、現場経験の積み重ねが経歴になる。技術が関わる様々な仕事やってきたから、上流の仕事へシフトする予定。

 

そう考えると、初心に戻り、知見を広げるという観点で、いろいろな技術を広く勉強してみたくなってきた。これからは、仕事のためにつくるのではなく、純粋に、自分が好きな分野の勉強を楽しむ。

Disabling Tab key in Godot TextEdit

(Generated by Gemini)

 

To disable the Tab key from inserting a tab space in a Godot TextEdit node, you can override its input handling using a custom script. This script will intercept the ui_focus_next input action (which is the default binding for the Tab key) and mark it as handled, preventing the TextEdit from processing it.

 

Script to Disable Tab

 

Attach this script to your TextEdit node. The _gui_input function is used to capture input events specifically for the UI.

GDScript
 
extends TextEdit

func _gui_input(event):
    if event.is_action_pressed("ui_focus_next"):
        # This line marks the event as handled, preventing it from
        # being processed further by the TextEdit node.
        get_viewport().set_input_as_handled()

 

Explanation

 

  • _gui_input(event): This virtual function is part of Godot's Control nodes and is triggered by low-level input events. It's the ideal place to handle UI-specific input.

  • event.is_action_pressed("ui_focus_next"): This checks if the Tab key has been pressed. Using the ui_focus_next action is a good practice because it respects the user's input map settings.

  • get_viewport().set_input_as_handled(): This is the most important part of the script. By calling this method, you tell Godot to stop processing this input event. The TextEdit node's default behavior (inserting a tab character) will not be executed because the event is effectively consumed before it reaches that part of the code.

This method gives you precise control over how the TextEdit node handles specific key presses, allowing you to disable its default behavior for the Tab key.

Adding Collision Shapes in Godot Using Blender Naming Convention

(Generated by Gemini)

 

The best way to add a collider to a model exported from Blender to Godot is by using a specific naming convention within Blender. By adding a suffix to your mesh's name, Godot's importer will automatically generate a collision shape when you import the scene.

 

Naming Conventions in Blender

 

Godot supports several suffixes that tell it how to handle a mesh for collision purposes. These are the most common ones:

  • -colonly: This suffix creates a collision-only mesh. It is a very efficient and recommended method. You create a separate, simplified mesh in Blender that represents the collision shape, give it the -colonly suffix, and export it alongside your main visual mesh. This keeps the collision shape low-poly and performant.

  • -convcolonly: Similar to -colonly, but this generates a convex collision shape. Convex shapes are simpler and can be faster for dynamic objects, but they can't represent complex concave shapes (e.g., a "U" shape) correctly, as they will "fill in" the gaps.

  • -col: This suffix uses the visual mesh itself to generate a collision shape. This is convenient for simple objects, but can be very performance-heavy if your visual mesh has a high polygon count.

  • -convcol: This also uses the visual mesh, but generates a convex collision shape from it.

 

Workflow

 

  1. In Blender:

    • Create your visual mesh (e.g., MyMesh).

    • Create a separate, simplified mesh to be used for collision (e.g., a cube for a complex rock).

    • Rename the simplified collision mesh with the appropriate suffix, like MyMesh-colonly.

  2. Export from Blender:

    • Export your scene as a .glb or .gltf file.

  3. In Godot:

    • Import the .glb or .gltf file into your project.

    • When you open the imported scene, Godot will have automatically created a collision node (like a StaticBody3D or CharacterBody3D) with a CollisionShape3D and the appropriate shape for you.

This video demonstrates how to export collision shapes with objects from Blender to Godot.