TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

2025-03-01から1ヶ月間の記事一覧

PLCメーカーのST記述方法を比較

各PLCメーカーにおけるStructured Text(ST)の比較徹底ガイド ― Siemens、Mitsubishi、Omron、Rockwell ― 1. はじめに 製造現場や産業制御の自動化において、PLC(Programmable Logic Controller)は不可欠な存在です。 その中でも、IEC 61131-3で定義され…

Git vs SVN - バージョン管理の違いを理解する

Git vs Subversion(SVN)── 現場で選ぶバージョン管理ツール徹底比較 1. はじめに ソフトウェア開発において、バージョン管理システム(VCS)はチームの生命線です。 その中でもよく比較されるのが Git と Subversion(SVN)。 どちらも歴史ある信頼性の高…

Keychronの魅力と未来

【2025年最新版】Keychronのおすすめロープロファイルキーボード4選 – 軽快な打鍵感と機能美を両立 1. 導入:ロープロファイルキーボードの魅力とは? メカニカルキーボードといえば「分厚くて重たい」といったイメージを持つ方も多いかもしれません。しかし…

スキルと将来像を考える初心者向けプログラミング入門

初心者はどのプログラミングから始めるべきか?──将来のキャリアと今の自分から選ぶ最適言語ガイド 1. はじめに 「どのプログラミング言語から勉強すればいいの?」 これは、すべての初心者が最初にぶつかる疑問です。 結論から言えば、“正解は人によって違…

ST入門ガイド:C開発者が陥りやすい落とし穴とは?

C言語開発者がST(Structured Text)に挑戦するときに知っておくべき5つの違い 1. はじめに 「Cで制御やってきたから、STも余裕でしょ?」 ……と思ってST(Structured Text)に足を踏み入れたC言語経験者が、思わぬ落とし穴にはまるケースが多数あります。 ST…

リンカ Linkerとはなにか? C言語での利用

リンカ(Linker)とは何か?– C言語で学ぶコンパイルの最終工程 1. はじめに C言語などのネイティブ言語で開発をしていると、ビルド工程で「リンクエラー」や「未定義のシンボル」などのワードに遭遇します。 これらはすべてリンカ(Linker)という仕組みに…

RustからLLVM

RustからLLVMを利用する方法 – 中間表現と最適化の世界を体験しよう 1. はじめに Rustはコンパイルの裏側でLLVM(Low-Level Virtual Machine)という強力なバックエンドコンパイラ基盤を使用しています。 このLLVMは、コンパイル最適化や中間表現(IR)生成…

Valgrind C/C++で使えるメモリデバッガ

Valgrind(バルグリンド)とは?– C/C++開発者必須のメモリデバッグツール解説 1. はじめに CやC++など、メモリ管理を手動で行う言語では、メモリリークやアクセス違反、未初期化変数などが原因で、予測不能なバグが発生しがちです。 それらを効率的かつ網羅…

コードレビュー 10のチェックポイント

「そのコード、読めますか?」現場で役立つコードレビュー10のチェックポイント 1. はじめに コードレビューは、単なるバグ検出作業ではありません。 それはチームの品質を支え、スキルを共有し、未来のメンテナたちへのラブレターを書く行為です。 では、ど…

pythonで学ぶシーザー暗号 原始的な暗号入門!

Pythonで実践!シーザー暗号と総当たり解析まで学ぶ原始的暗号入門 1. はじめに 暗号技術と聞くと、AESやRSAのような高度で複雑なアルゴリズムを思い浮かべるかもしれません。 しかし、すべての始まりはもっとシンプルでした。今回紹介する「シーザー暗号(C…

C言語でHello World 普通と違うHelloWorldを作ろう!

C言語で「特殊なHello World」 – 文字列を書かずに出力してみよう 1. はじめに C言語で最初に学ぶのは「Hello, World!」の出力。 通常は以下のようなコードで表示します: #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } しかし、この記事</stdio.h>…

WSLとは? WindowsとLinuxの同時使用にはこれ!

WSLとは?Windows上でLinuxを動かす最強ツールの基本と活用法 1. はじめに WSL(Windows Subsystem for Linux)とは、Windows上でLinuxをネイティブに動作させる仕組みです。Microsoftが公式に提供しており、Linux開発環境をWindowsに統合する強力なツールで…

D言語で始めるHello World

D言語でHello Worldを出力する方法 1. はじめに D言語(D language)は、C/C++の代替として設計されたモダンなシステムプログラミング言語です。 コンパイルの高速性、メモリ安全性、ガベージコレクション、テンプレートメタプログラミングなど、多くの先進…

GroovyでHello World

GroovyでHello Worldを出力する方法 1. はじめに Groovyは、Javaプラットフォーム上で動作するスクリプト言語であり、Javaと高い互換性を持ちながら、より簡潔な記述が可能です。 スクリプト言語としても、GradleやJenkinsなどのCIツールでも使われており、…

STを高速化する

高速化を意識したST(Structured Text)の書き方 1. はじめに Structured Text(ST)は、PLC(Programmable Logic Controller)で広く使われるプログラミング言語の一つであり、C言語やPascalに似た構文を持つ高級言語です。 PLCの制御プログラムを記述する…

ScalaでHello World

ScalaでHello Worldを出力する方法 1. はじめに Scalaは、オブジェクト指向と関数型プログラミングの両方をサポートする強力なプログラミング言語です。 JVM(Java Virtual Machine)上で動作し、Javaとの互換性が高いのが特徴です。 本記事では、Scalaで基…

KISSの原則 シンプルな設計に必要な考え

KISSの法則とは? – シンプルさを極める設計原則 1. はじめに ソフトウェア開発やシステム設計において、「シンプルであること」は非常に重要です。複雑な設計やコードは、バグの発生を増やし、保守のコストを高めます。 そんな中で広く知られているのがKISS…

通信の輻輳制御とは? ネットワーク安定のための技術

輻輳制御(Congestion Control)とは? – ネットワーク通信の安定化技術 1. はじめに ネットワーク通信では、多くのデバイスが同時にデータを送信すると、通信経路上でデータが詰まり、パケットロスや遅延が発生することがあります。この現象を輻輳(ふくそ…

YOLOとは? 高速な物体建検出

YOLO(You Only Look Once)とは? – 高速物体検出アルゴリズムの解説 1. はじめに YOLO(You Only Look Once)は、物体検出(Object Detection)を行うための深層学習アルゴリズムの一つであり、リアルタイムでの物体検出に適しています。 通常の物体検出ア…

Ethernet(イーサネット)とは? 最新規格まで解説!

Ethernetとは?仕組みから最新規格まで徹底解説! 1. はじめに Ethernet(イーサネット)は、コンピュータネットワークで広く使用されている通信規格です。 企業のLAN(ローカルエリアネットワーク)から家庭用ネットワーク、データセンターまで、有線ネット…

ラダー vs ST 2025年最新の制御プログラミングの選択と最適化

ラダー vs ST(構造化テキスト):最新の制御プログラミングの選択と最適化

Kotlinの強み 開発効率を向上させる機能とは?

Kotlinの強みを徹底解説!シンプルな構文・Null安全・コルーチンなど開発効率を向上させる機能とは? 1. はじめに Kotlinは、JetBrainsによって開発されたプログラミング言語で、Androidアプリ開発をはじめ、サーバーサイドやデスクトップアプリ、マルチプラ…

BashでHello World

BashでHello Worldを出力する方法 1. はじめに Bash(Bourne Again Shell)は、LinuxやmacOSなどのUNIX系OSで広く使われているシェル(コマンドラインインタプリタ) です。 Bashスクリプトを使うことで、シェルコマンドを自動化し、繰り返し作業を効率化で…

Wi-Fiの規格一覧! 分かり易くWi-fiを理解する

Wi-Fiの規格とは?最新規格から過去の規格まで徹底解説! 1. はじめに Wi-Fi(無線LAN)は、スマートフォンやパソコン、IoTデバイスなど、現代の通信インフラに欠かせない技術です。 Wi-Fiの規格は、IEEE(Institute of Electrical and Electronics Engineer…

第5回 ST言語 IoTとPLCの連携

〜実践的なPLCプログラミングを学ぼう〜 第5回: IoTとPLCの連携 1. はじめに 前回の第4回: HMIとの連携とデータ可視化では、HMIを活用したデータの可視化と操作パネルの構築について学びました。 今回は、PLCとIoTの連携 に焦点を当て、クラウドとのデータ連…

AWKでHello World

AWKでHelloWorldを簡単に実装

Brainfuckコンパイラ自作シリーズ 第5回

Brainfuckコンパイラ自作シリーズ 第5回:最適化とエラー処理 はじめに 前回までに Brainfuck のコードを C 言語に変換し、コンパイルして実行する仕組み を実装しました。 しかし、現時点の実装では 非効率なコードが生成される ことや エラー処理が不十分 …

デザインパターン 第3回 (Adapter, Decorator, Facade)

GoF(Gang of Four)のデザインパターン:構造パターン(Adapter, Decorator, Facade)を徹底解説 1. はじめに オブジェクト指向プログラミングにおいて、「異なるクラスをどのように組み合わせるか?」 は重要な課題です。 特に、クラス間の結合度を最小限…

Pythonで始めるRPAの初歩

Pythonで始めるRPA ── 初心者向け入門ガイド はじめに 近年、企業の業務効率化や自動化の手段としてRPA(Robotic Process Automation)が注目されています。RPAは、ルーチンワークを自動化することで時間短縮や人的ミスの削減を可能にします。 RPAツールには…

Kotlin と Java

KotlinとJavaの関係 – 互換性と違いを徹底解説 プログラミング言語 Kotlin(コトリン) は、近年Javaに代わる選択肢として注目されています。特にAndroid開発では、GoogleがKotlinを「推奨言語」として発表したことで、その人気が急上昇しました。 では、Kot…