MyEnigma

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

ロボットエンジニアのためのgRPC入門


WEB+DB PRESS Vol.110

目次

  • 目次
  • はじめに
  • gRPCとは?
  • gPRCの特徴
    • Protocol buffersでRPCを定義することで、様々な言語のサーバ・クライアント実装が自動生成可能
    • 通信プロトコルにHTTP/2を使うことで高速化、双方向通信、streaming等を実現
    • 通信のデータ量が小さく、データ解釈時の計算時間も短い
  • ProtoファイルでのRPCの宣言
    • Unary RPC
    • Server streaming RPC
    • Client streaming RPC
    • Bidirectional streaming RPC
  • gRPCのサンプルコード
    • Python
      • Unary RPC
      • Server streaming RPC
      • Client streaming RPC
      • Bidirectional streaming RPC
  • gPRCのgの意味
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、データのシリアライズフォーマットである

Protocol buffersを紹介しましたが、

myenigma.hatenablog.com

このProtocol buffersでシリアライズされたデータは、

以前の記事のようにバイナリのファイルとして保存することもできますが、

gRPCと言われる通信方法で、

複数のプロセス間を通信させることが多いようです。

 

今回の記事では、このgRPCの概要と簡単なサンプルコードを

紹介したいと思います。

続きを読む

ロボットエンジニアのためのProtocol buffers入門


Practical gRPC (English Edition)

目次

  • 目次
  • はじめに
  • Protocol buffersとは?
  • Protocol buffersの特徴
    • 様々なプラットフォームや言語で利用することができる
    • データサイズが小さい
    • エンコードやデコードが早い
    • データの構造を精密に規定できる
    • データフォーマットに後方互換性がある。
    • JSONに変換できる
    • デメリット
  • protoファイルを作成する時の注意点
  • protobufのコンパイラのインストール
    • MacでHomebrewをって、公式のprotobufをインストール場合
    • ubuntuへの公式protobufのインストール
    • Juliaでprotoファイルをコンパイルする
  • 使い方
    • C++
    • Python
    • Java
    • Julia
  • protoファイルのスタイルガイド
  • Protocol buffersと一緒に使うと便利なツール
    • protoc-gen-lint
    • protoc-gen-doc
  • ProtoBuf3で変わったこと
  • Protocol buffersを通信のデータフォーマットとして利用しているプロジェクト
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボットをやっていると、

複数の言語で作られた、

複数のサービス間でデータをやりとりしたくなります。

ROSが使える場合は、ROSのTopicを使えば良いですが、

myenigma.hatenablog.com

どうしてもROSが使えない場合は、JSON+HTTPなどの他の方法を使う必要があります。

myenigma.hatenablog.com

 

今回の記事では、JSONと似たデータフォーマットの一種である、

Protocol buffersの概要と簡単な使い方を紹介したいと思います。

 

続きを読む

JSON初心者のためのJSON Schema入門


Introduction to JavaScript Object Notation: A To-the-Point Guide to JSON (English Edition)

目次

  • 目次
  • はじめに
  • JSON Schemaとは?
  • JSONファイルからJSON Schemaを生成する
  • JSON SchemaでJSONをvalidateする
  • JSON Schemaからドキュメントを生成する
  • JSON SchemaからJSON解釈用コードを生成する
  • 参考資料
  • MyEnigma Supporters

はじめに

最近、

構造化されたデータや、

設定ファイルなどにJSONを使うことが多くなってきました。

myenigma.hatenablog.com

しかし、JSONは

あまりにもフレキシビリティが高いデータフォーマットなので、

意図しない構造のJSONファイルを受け取ってしまうことがあります。

そのようなときに、JSONの構造やデータの中身が意図したものになっているのか、

確認する手法が必要です。

 

そこで、JSONファイルの構造やデータの中身を定義したものを、

JSON Schemaと呼びます。

今回の記事では、JSON初心者のために、

JSON Schemaを利用するのに必要最低限の方法を紹介したいと思います。

 

続きを読む

コードを日々きれいにする指針『Java言語で学ぶリファクタリング入門』


Java言語で学ぶリファクタリング入門

目次

  • 目次
  • はじめに
  • 感想
  • 読書メモ
    • リファクタリングリスト
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭の『Java言語で学ぶリファクタリング入門』

を読んだらかなり良かったので、

感想と読書メモを残しておきます。

結城浩さんのリファクタリングの本、長い間、積ん読してたけど、名著の予感。。

続きを読む

強化学習を手を動かして学ぶ『Pythonで学ぶ強化学習』


機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書)

目次

  • 目次
  • はじめに
  • 感想
  • 読了メモ
    • Day1
    • Day2
    • Day3
    • Day4
    • Day5
      • 強化学習の問題点1
      • 強化学習の問題点2
      • 強化学習の問題点3
    • Day6
    • Day7
  • 『Pythonで学ぶ強化学習』におすすめの副読素材
  • 参考資料
  • MyEnigma Supporters

はじめに

下記の通り、先日『Pythonで学ぶ強化学習』の著者の方々から、

献本をいただきました。

再び献本を頂きました😲『Pythonで学ぶ強化学習』の関係者の方々、ありがとうございます。機械学習は正直あまり詳しくないので、これを読んでAIエンジニアになれるように頑張ります。全編カラーで、コードも沢山あっていい感じです。じっくり読んで書評させて頂きます😀 #python

 

献本を頂いてから、かなりの時間が経ってしまいましたが、

今年のGWを使って、一通り読んでみたので、

感想と読書メモ、

そして、同時並行で強化学習を勉強するのに良かった素材について

紹介したいと思います。

続きを読む

イーロン・マスクが語る自動運転

目次

  • 目次
  • はじめに
  • MITの授業におけるインタビュー
  • Tesla Autonomy dayにおける発表
    • ハードウェア発表
    • NNによる画像認識
    • 自動運転を実現するソフトウェア
    • Elonのプレゼン
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭のMITの授業における

テスラのイーロン・マスクの自動運転に関するインタビューと、

その後実施されたテスラの自動運転に関するプレゼンテーションが素晴らしかったので、

調べた事柄をメモとして残してきます。

かなり意訳しているので、下記の内容は参考程度にしてください。

 

イーロン・マスクは、本当に技術に対する考えが一貫していて、

それが世界最高のエンジニア集団を魅了しているのだなと感じました。

 

続きを読む

技術で自分と家族の健康情報を管理する仕組みづくり

先日の @WithingsJP ‬ペアスマートウォッチプレゼント企画🎁に当選して、夫婦でSteel HR Sportを頂きました🎉。Withingsの技術を使って夫婦共々健康を保ちたいと思います。 ありがとうございました🤗#Withings

目次

  • 目次
  • はじめに
  • 体重管理
  • 睡眠時間、歩数、日々の運動管理
  • 体温管理
  • ジムでの運動管理
  • 幼児の健康管理
  • 幼児の予防接種管理
  • 今後の課題
  • 参考資料
  • MyEnigma Supporters

はじめに

数年前に、フランスのWithings社のスマート体重計を買ってから、

myenigma.hatenablog.com

自分や家族の健康情報を

技術で自動取得&管理する仕組み作りにハマっています。

 

今回の記事では、

これまでいろいろ試してきて、

便利だった仕組みについてまとめておきたいと思います。

続きを読む

Juliaにおけるパッケージ管理&新しいパッケージ作成メモ


1から始める Juliaプログラミング

目次

  • 目次
  • はじめに
  • パッケージ管理
    • インストールされているパッケージを表示する
    • 指定したパッケージをインストールする
    • 指定したバージョンのパッケージをインストールする
    • すべてのパッケージをアップデートする
    • 指定したパッケージを削除する
    • パッケージのバージョンを固定する
    • パッケージリポジトリの最新のバージョン情報を取得する
  • 新しいパッケージを作成する時
    • 初期パッケージを生成する(デフォルトのPkgモジュールを使う)
    • PkgTemplatesを使う
  • 既存のパッケージにPRを作成する
    • 方法1
    • 方法2
  • 参考資料
  • MyEnigma Supporters

はじめに

すぐ忘れるのでメモしておきます。

続きを読む

Python製ハイパーパラメータ学習ライブラリoptunaを使って様々な言語のコードを最適化する方法

目次

  • 目次
  • はじめに
  • ハイパーパラメータ学習ライブラリoptuna
  • Pythonのコードをoptunaでパラメータ最適化してみる。
  • C++のコードをoptunaでパラメータ最適化してみる
  • Juliaのコードをoptunaでパラメータ最適化してみる
  • 今後optunaに期待すること
    • create_studyとstudyの関数の統合
    • 他の言語との統合方法のexampleの拡充
  • GitHubリポジトリ
  • 参考資料
  • MyEnigma Supporters

はじめに

最近、最適化技術の勉強の一貫として、

ベイズ統計・最適化を勉強しようと思っています。

そこで、以前PFNが公開した

ベイズ最適化による、ハイパーパラメータ自動最適化ツールである

optunaを使ってみました。

github.com

 

今回の記事では、簡単なoptunaの紹介と、

optunaは、Python製のツールですが、

標準入出力を使えば、任意のプログラミング言語のシステムでも

簡単にパラメータ学習できたので、その方法を紹介したいと思います。

続きを読む

プログラミング言語におけるremとmod

目次

  • 目次
  • はじめに
  • rem と modを理解するのに参考になるツイート
  • 参考資料
  • MyEnigma Supporters

はじめに

10年ほど、プログラミングをしているのに、

剰余のremとmodを理解していなかったので、

Twitterでいろいろ教えてもらった内容をメモしておきます。

続きを読む