EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

「現場で役立つシステム設計の原則」を読んで為になったことのメモ

背景

既にざっと1周読んだが、じっくりと2周目を読んだので、
参考になった部分をメモした。

目次

  • 背景
  • 目次
  • 設計とはソフトウェア全体をすっきりした形に整えること
  • 設計の最終アウトプットはソースコード
  • 目的ごとにローカル変数を用意する
  • 特定の関心事に特化した小さなクラスが、コードの見通しを良くし、変更をやりやすくする
  • 業務を理解するために要求を分析し、そこで発見した関心事の単位を、そのままプログラム単位としてクラスで表現する
  • 値を扱うための専用クラスを作る
  • オブジェクトを外部に渡す際は変更不可な状態にして渡すこと
  • 複文を単文に分けてelse句を無くす
  • 区分ごとに別クラスを作り、インターフェースを使って同じ型として扱えるようにする
  • クラス間の結びつきは、知らないことが少ないほど弱くなる
  • 共通機能ライブラリは失敗しやすい
  • コードを重複させない設計の基本は、インスタンス変数を返すだけのgetterを作らないこと
  • 変だと気が付いたら、TO-DOとしてコメントを残す
  • メソッドは必ずインスタンス変数を使う
  • ドメインモデルは対象業務をオブジェクトの集合として表現する技法
  • 機能中心にプログラムを書くと、プログラムが処理の順番に依存する
  • 業務の関心事はヒト、モノ、コトに分類する
  • コトはヒトとモノとの関係として出現する
  • 状態に依存する場合、使う側が事前に確認する
  • 値がない場合に別の値で埋めるようなNULL逃れをしない
  • データベースには正しいデータのみを記録し、それを担保するのが設計の基本目的
  • 記録のタイミングが異なるデータはテーブルを分ける
  • カラムの追加はテーブルを追加する
  • 画面に引きずられた設計はソフトウェアの設計を大変にする
  • 何でもできる汎用画面ではなく、用途ごとのシンプルな画面に分ける
  • 画面の表示ロジックと業務ロジックを分離する
  • 画面をタスクベースに分解する
  • 画面の関心事とクラス設計を一致させる
  • 画面デザインの4原則
  • 画面以外の利用者向け情報もソフトウェアと整合させる
続きを読む

WindowsでJavaの開発環境を構築する手順

目次

  • 目次
  • 背景
  • 参考記事
  • 構築手順
    • JDKがインストール済みか確認する
    • JDKをインストールする
    • 環境変数を設定する
    • IntelliJ IDEAをインストールする
    • IntelliJ IDEAを起動
    • プロジェクトを作成してみる
    • ソースを作成してHello Worldしてみる

背景

2022年度から仕事でJavaを使うことになったので、慌てて入門から勉強し始めた。
まずは開発環境構築を行ったので、その手順をメモしておく。

参考記事

tech-camp.in

sukkiri.jp

続きを読む

「リーダブルコード」を読んで為になったことのメモ

背景

ソフトウェアエンジニア歴10年程度にして初めて「リーダブルコード」を
読んだら一言一言が心に刺さりまくったので、それらをメモしておく。

目次

  • 背景
  • 目次
  • メモ
    • いい名前をつける
    • 適切なコメントを書く
    • 意味のある単位で分割する
    • キレイに整形する
    • 基本的なことを着実にやる
    • コードは理解しやすくなければならない
    • コードを短くするより、理解するまでにかかる時間を短くする方が大切
    • ブール値の名前は肯定形にした方が読みやすくて、短くて済む
    • 最善の名前とは誤解されない名前である
    • コードからすぐにわかることをコメントに書かない
    • 優れたコメントは「考えを記録する」ためのものである
    • 新しいチームメンバーにとって一番難しいのは全体像の理解である
    • 曖昧な代名詞を避ける
    • 慎重に選んだ入出力の実例をコメントに書くことは、千の言葉を書くに等しい
    • 条件式の引数は、左側を調査対象、右側を比較対象にする
    • 「頭がいい」コードに気を付ける。あとで他の人が読むときに分かりにくくなる。
    • 変数の定義は変数を使う直前に移動する
    • 一度に複数のことをするコードは理解しにくい
    • テストコードとは、「本物のコードの動作と使い方を示した非公式な文書」である
    • テストには最もキレイで単純な値を選ぶ
    • テストしやすいコードには明確なインターフェースがある
    • getは多くの人にとって軽量アクセサを意味する。実装が軽量でないならgetを使わない方がいい
    • まずは新しく書くコードが読みやすいコードだけになるようにする。既存のコードを直すことはそれまで我慢する
    • まずは自分が仲間のコードを読もう。そうすれば仲間も自分のコードを読んでくれるようになる
    • 忘れても見たらすぐに思い出せるコードを書く
続きを読む

画像処理に関する基本用語集

背景

訳あって学生時代に少しかじった画像処理を基礎から学びなおすことにした。
改めて技術資料などを見返すと忘れてることばかりだったので、
まずは基本的な用語を片っ端から調べてまとめていく。

続きを読む

SVL Simulatorにおける車両のセンサ構成設定の概要

SVL Simulatorを起動する

www.eureka-moments-blog.com

デフォルトのセンサ構成を確認する

左メニューからLibrary -> Vehiclesと進み、構成を見たい車両を選ぶ。
今回はApolloとの連携で使用しているLincoln2017MKZを選択する。
f:id:sy4310:20211114092735p:plain

続きを読む