MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

2024年に買ったり、読んだり、使い始めたり、手に入れて良かったもの


2024年 日本はこうなる

 

目次

  • 目次
  • はじめに
  • バックパック:『Bellroy Transit Backpack Plus』
  • モバイルバッテリー兼充電器:『Anker 733 Power Bank』
  • 無料Chromeプラグイン:『Tab Session Manager』
  • 骨伝導イヤホン:『ゲオの激安骨伝導イヤホンGRFD-BCH BH330』
  • 技術書:用件定義:『はじめよう!システム設計 ~要件定義のその後に』
  • 技術書:『Web API: The Good Parts』
  • ノートPC:『13インチ M3 Macbook Air』
  • カードゲーム:『UNO』
  • モニターアーム:『サンワダイレクト モニターアーム 100-LAC003』
  • スマートフォン: 『iPhone16 Pro 128GB』
  • 小説: 『エレファントヘッド』
  • 小説:『松岡まどか、起業します AIスタートアップ戦記』
  • eSIM: 『Airlo』
  • 資格:『ITパスポート』
  • 漫画:『ミノタウルスの皿』
  • 技術書:『Planning Algorithms』
  • サプリメント:『高濃度 ビタミンD 60日分 2800IU (70μg) 太陽堂製薬』
  • 参考資料
  • MyEnigma Supporters

はじめに

流行りにのって、書いてみたいと思います。

買ったものだけじゃなく、読んだものや、使い始めてよかったソフト、

取得してよかった資格なども入ってますが。。。

 

続きを読む

Diátaxis(ダイアタクシス)によるドキュメント分類入門


ユーザーの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング

目次

  • 目次
  • はじめに
  • Diátaxisによる4つのドキュメント分類
    • 1. Tutorial: 初心者のためのドキュメント
    • 2. How-to guide: 特定のタスクを解決する例⁠
    • 3. Technical reference: 参考資料; 定義や動作を示すもの
    • 4. Technical explanation: 理解のための詳細なドキュメント
  • 細かい注意点
    • Diataxis マトリックス
    • 4つのドキュメントの区別
  • 参考資料
  • MyEnigma Supporters

はじめに

システムにとって、ドキュメントは非常に重要ですが、

複数人で、長い期間をかけて作成したドキュメントを、

わかりやすく分類するのは難しいと思います。

また、作成する側が、迷わずに目的のドキュメントを作成するための

指針を決めることも難しいことだと思います。

 

これを解決するために、提案されているのが、

diataxis.fr

Diátaxis(ダイアタクシス)です。

 

これはDaniele Procidaさんという、

Ubuntuを開発している、

Canonicalのテクニカルディレクターの方が

提案している方法です。

www.youtube.com

 

Diataxis は、

読者のニーズ満たすための、構造化された技術ドキュメントを作成するために、

各タイプのドキュメントを、明確で、簡潔で、わかりやすく記述するための

体系的なアプローチです。

また、ドキュメントを書く方にも、

どこに配置すべきドキュメントであるかが明確になるので、

迷わずに、ドキュメントを書くことができ、

自分がどの種類のドキュメントを書こうとしているかを考えながら、

ドキュメントを書くことで

ユーザにとって非常にわかりやすいドキュメントを書くことができます。

また、学習コンテンツとリファレンスを分離することで、

初心者と専門家の両方に効果的に役立ちます。

このようにDiataxis は、

ドキュメント作成のコンテンツの問題 (何を書くか) だけでなく、

スタイル(どのように書くか) や

アーキテクチャ(どのように整理するか) も解決する指針を与えてくれます。

 

先程の著者の経歴からも、明白ですが、

Canonicalで採用されています。

gihyo.jp

また、Cloudflareの開発ドキュメントなどでも利用されているとのことです。

developers.cloudflare.com

 

続きを読む

SWOT分析の基礎と進め方


SWOT分析による経営改善計画書作成マニュアル

目次

  • 目次
  • はじめに
  • 一般的なSWOT分析の進め方
  • SWOT分析の各項目と例
    • S: Strength (強み)
    • W: Weakness (弱み)
    • O: Opportunities (機会)
    • T: Threats (脅威)
  • クロスSWOT分析の各項目
    • SO戦略 (強み × 機会)
    • ST戦略 (強み × 脅威)
    • WO戦略 (弱み × 機会)
    • WT戦略 (弱み × 脅威)
  • 参考資料
  • MyEnigma Supporters

はじめに

企業の現状を分析し、経営戦略やマーケティング戦略に対して、

今後力をいれるべき部分を明確するための分析方法として

SWOT分析があります。

ja.wikipedia.org

今回は、このSWOT分析の一般的な進め方などをまとめておきたいと思います。

 

続きを読む

わかりやすいソフトウェアドキュメントのためのC4モデル


ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ

目次

  • 目次
  • はじめに
  • C4モデルとは?
  • Level 1: System Context Diagram
  • Level 2: Container (Process) diagram
  • Level 3: Component Diagram
  • Level 4: Code Diagram
  • C4モデルで図を書くときに注意すべきこと
  • 参考資料
  • MyEnigma Supporters

 

はじめに

ソフトウェアの図を書くときに、

いつも抽象度をどのようにすればいいか、

悩むことがあるのですが、色々調べていたら、

C4モデルという考え方があることを知ったので、

そちらを調べたときのメモです。

 

続きを読む

自動化システム開発のための要件定義入門


はじめよう! 要件定義 ~ビギナーからベテランまで

目次

  • 目次
  • はじめに
  • 要望、要求、要件の違い
  • 要件定義をするために準備すべきもの
    • 1. プロジェクトやシステムの名称
    • 2. 5W1Hに基づくシステム概要
    • 3. ユースケース図
    • 4. モジュール図
    • 5. 基幹技術リスト
    • 6. 要求リストを作る
    • 7. ユーザーシナリオをつくる
    • 8. UI遷移図を作る
    • 9. レポート(帳簿)機能についての要求をまとめる
    • 10. エンティティモデルを作る
    • 11. ワークセットリストを作る
    • 12. 非機能要件の検討をする
    • 13. 要件リストの作成
  • 要件定義を進め方
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボットなどを使って、

自動化システムを開発する人向けの

要件定義の方法や、言葉の定義、作成物のリストなどをまとめておきます。

 

続きを読む

SciPy 1.11.0がリリースされました


Python プログラミング - NumPy SciPy ソフトウェアプログラマー コーダー パーカー

目次

  • 目次
  • はじめに
  • Tweetまとめ
  • 参考資料
  • MyEnigma Supporters

はじめに

本日、

自分がコア開発者のメンバーとして参加している

SciPyの新しいバージョン1.11.0がリリースされました🎉

github.com

 

今回も、1.11.0の新機能や特徴を、

連続ツイートでまとめてみたので、

そちらを、あとから参照しやすいように

記事としてまとめておきます。

 

過去のバージョンの記事は下記の通りです。

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

続きを読む

REST APIの仕様やドキュメントをテキストベースのファイルで記述できるOpenAPI(Swagger)入門


Designing APIs with Swagger and OpenAPI

目次

  • 目次
  • はじめに
  • Open APIの特徴
    • 1. YAMLやJSONなどのテキストファイルで仕様を記述できる。
    • 2. OpenAPIの仕様データから、仕様書を自動生成できる。
    • 3. OpenAPIの仕様データから、APIのクライアントやサーバのコードを自動生成できる
  • Open APIの仕様の書き方
  • シングルHTMLファイルのAPIドキュメントを生成する
  • 参考資料
  • MyEnigma Supporters

はじめに

REST APIは、ソフトウェアのAPIの基本だと思いますが、

そのドキュメントの書き方は結構悩ましいと思います。

仕様変更すると、すぐにドキュメントとソースコードの乖離が発生しますし、

ソースコードとドキュメントを同じgit リポジトリで管理しようと思っても、

仕様書としてよく使われるWordやExcelはバイナリファイルなので、

バージョン管理がしずらいです。

 

そこで、テキストファイルであるyamlやjsonファイルを使って

REST APIの仕様を記述する標準があります。

それが、OpenAPIです。

Home - OpenAPI Initiative

madogiwa0124.hatenablog.com

以前はSwaggerというOSSのプロジェクトが使っていた仕様なので、

Swaggerと呼ばれることもあります。

 

本記事では、このOpen APIによるREST APIの仕様書作成の

特徴と仕様書作成方法などをまとめておきたいと思います。

続きを読む

Pythonでのファイルやパス操作標準ライブラリpathlib逆引きメモ


できる 仕事がはかどるPython自動処理 全部入り。 (「できる全部入り。」シリーズ)

目次

  • 目次
  • はじめに
  • パスオブジェクトの作成
  • パスの連結(join)
  • パスの存在確認やファイルかディレクトリであるかの確認
  • 絶対パスの取得
  • パスの文字列を取得
  • パスの親ディレクトリを取得
  • ファイルの様々な情報を取得
  • ファイルのデータの読み込み
  • ファイルのデータの書き込み
  • パスの一部のみを変更したパスを作る
  • パスの先のファイルの情報を取得
  • パスの先のファイルの削除
  • ディレクトリの作成
  • ディレクトリの削除
  • あるディレクトリ内のある拡張子のファイルのパスのリストを取得
  • あるディレクトリ以下のある拡張子のファイルのパスリストを再帰的に取得
  • あるディレクトリ以下の、拡張子毎の数を数える
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonでファイルやパス関連の操作するとき、

古くからos.pathモジュールが使われてきましたが、

Python3.4から導入されたpathlibモジュールは、

より自然にファイルやパス操作を実施できるライブラリです。

docs.python.org

 

os.pathモジュールでは、すべてのパスを文字列として表現するため、

コードが冗長になりやすかったですが、

pathlibでは、パスをオブジェクトとして取り扱うため

シンプルにやりたいことを実現することができます。

 

今回の記事では、

pathlibを使ったよくやるファイルやパス操作の逆引きメモを残しておきます。

 

続きを読む

各プログラミング言語における高階関数による関数型プログラミングの初歩入門


Javaによる関数型プログラミング ―Java 8ラムダ式とStream

目次

  • 目次
  • はじめに
  • 複数の条件を元にソート
    • Python
    • Java
    • Julia
  • 同じデータでグルーピングするgroupby
    • Python
    • Java
    • Julia
  • 一つのリストから、複数の要素を作り、一つのリストにまとめる (flatmap)
    • Python
    • Java
    • Julia
  • 複数の関数を繋げるチェーンラムダ
    • Java
    • Julia
  • 参考資料
  • MyEnigma Supporters

はじめに

ちゃんとした関数型プログラミングは少し敷居が高いですが、

高階関数をベースとしたシンプルなものは、使えると便利なので、

様々な言語で実装したものを、まとめておきます。

続きを読む