MyEnigma

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

滑らかな曲線を作成するためのscipy.interpolate.BSpline入門


Bezier and B-Spline Techniques (Mathematics and Visualization)

目次

  • 目次
  • はじめに
  • BSplineとは?
  • SciPyにおける1次元のBスプライン曲線を生成するルーチン
    • 1. スプライン補間
      • FITPACKのAPIによるスプライン補間
    • 2. スプライン近似(スムージング)
      • FITPACKのAPIによるスプライン近似
  • 参考資料
  • MyEnigma Supporters

はじめに

様々なデータを補間したり、スムージングしたりするのに、

三次スプライン曲線はよく使われますが、

myenigma.hatenablog.com

より複雑な曲線を表現するのに、BSplineという曲線があり、

Pythonの科学技術計算用ライブラリであるSciPyでは、

このBSpline用のクラスや便利関数を提供しています。

stackoverflow.com

今回の記事では、SciPyが提供するBSpline関連のツールの使い方を

紹介したいと思います。

 

続きを読む

書評『Unityではじめる ROS・人工知能 ロボットプログラミング実践入門』


Unityではじめる ROS・人工知能 ロボットプログラミング実践入門

目次

  • 目次
  • はじめに
  • ツイート書評
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭の書籍を出版社の方から献本していただいたので、

Twitterの連続ツイートで書評してみたので、

そのまとめ記事です。

続きを読む

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


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

目次

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

はじめに

本日、

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

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

github.com

 

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

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

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

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

 

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

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

続きを読む

SQLite3のCLIとSQLを使った、シェル上でのCSVファイル簡易データ解析手法


10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

目次

  • 目次
  • はじめに
  • 事前セットアップ
  • データ解析レシピ
    • 5行表示する
    • 表示する行を指定
    • htmlやjson, SQLとして出力
    • 総行数を数える
    • GROUP BYで同じデータの数を数えたり、平均を取る
    • 複数列でのGroup byと統計計算
    • シェル関数を使って、コマンドの簡易化
  • 参考資料
  • MyEnigma Supporters

はじめに

手元に大きめのCSVファイルがあり、

そのデータを少し解析したい場合は、

Excelを使うか、PythonのPandasで解析することが多いのですが、

myenigma.hatenablog.com

myenigma.hatenablog.com

ちょっとSQLを使いたいなぐらいですと、

Excelだと結構たいへんですし、

Pandasだと少し面倒に感じることがありました、

今回は、下記のTweetで知った、

組み込みのDBであるsqliteのCLIツールを使って、

シェル上で簡単にSQLを使って、CSVファイルのデータ解析をする

手法を紹介したいと思います。

続きを読む

村上春樹の小説『ノルウェイの森』で主人公と直子が再会した時の散歩コースを実際に歩く


ノルウェイの森 (講談社文庫)

目次

  • 目次
  • はじめに
  • TL;DR
  • 実際にコースを歩いた記録
  • 参考資料
  • MyEnigma Supporters

はじめに

東京にいる知り合いと久しぶりに会おうという話をしたら、

「村上春樹好きだったよね?

ノルウェイの森で主人公と直子が再会した時の

散歩コースを実際に歩いてみないか?」

と言われて、

正直、自分はノルウェイの森より、近年の作品の方が好きなのですが、

断る理由も無いので、一緒に歩くことにしました。

(事前に予習もしてました

)

 

そのコースとは、

主人公(わたなべ)が、学生時代の自殺した友人「キヅキ」の恋人だった

「直子」と電車の中で久しぶりに再会し、そこから始まる

四ツ谷から駒込までの長い散歩コースです。

 

ノルウェイの森にはこのように書かれています。

我々は何かの目的があってここに来たわけではなかった。僕と直子は中央線の電車の中で偶然出会った。彼女は一人で映画でも見ようかと思って出てきたところで、僕は神田の本屋に行くところだった。べつにどちらもたいした用事があるわけではなかった。降りましょうよと直子が言って、我々は電車を降りた。それがたまたま四ツ谷駅だったというだけのことなのだ。もっとも二人きりになってしまうと我々には話しあうべき話題なんてとくに何もなかった。直子がどうして電車を降りようと言いだしたのか、僕には全然理解できなかった。話題なんてそもそもの最初からないのだ。  駅の外に出ると、彼女はどこに行くとも言わずにさっさと歩きはじめた。(P31)

 

しかし散歩というには直子の歩き方はいささか本格的すぎた。彼女は飯田橋で右に折れ、お堀ばたに出て、それから神保町の交差点を越えてお茶の水の坂を上り、そのまま本郷に抜けた。そして都電の線路に沿って駒込まで歩いた。ちょっとした道のりだ。駒込に着いたときには日はもう沈んでいた。穏かな春の夕暮だった。(P32)

 

実際のコースとしては、こんな感じだと思います。

(上記の記述を元に自分が歩いたGPSログです)

 

ググってみると、

実際にこのコースを歩いている記事が見つからなかったので、

同じことをしたい人の参考になるかもしれないので、

その時の写真と共に感想を載せておきます。

続きを読む

組み込みシステム向けDBであるSQLite入門


Using SQLite: Small. Fast. Reliable. Choose Any Three. (English Edition)

目次

  • 目次
  • はじめに
  • SQLiteの歴史
  • 特徴
    • トランザクションがある
    • 設定がない
    • 様々なSQL機能が利用可能
    • クロスプラットの単一ファイルで管理
    • 高速にデータにアクセスできる
    • 大規模なデータを管理できる
    • ソフトウェアが小さい
    • ソフトウェアやファイルフォーマットが安定している
    • ソースコードがPublic domainで公開されている。
    • ソフトウェアとしての品質が高い
  • 使い方
    • 公式のCLIツールを使う
    • Pythonの公式モジュールsqlite3を使う
    • PandasのDataFrameとSQLiteをやり取りする
  • 参考資料
  • MyEnigma Supporters

はじめに

世界で最も使われているOSSってなんだろうと考えた時に、

真っ先に思いつくのが、SQLiteでした。(cURLとかもありますが)

 

SQLiteは、組み込みシステム向けの

ファイルベース(一時的なインメモリも可能)のDBですが、

www.sqlite.org

ほとんどすべてのスマホやブラウザ、Macのアプリ、

PythonやPHPに同包されており、

一兆以上のコピーがされ、利用されているそうです。

www.sqlite.org

 

ファイルベースで、sqliteそのものもかなり小さいソフトウェアですが、

一般的なSQLを使って、データ管理をすることができます。

myenigma.hatenablog.com

 

続きを読む

Pandas逆引きクックブック


pandasクックブック

目次

  • 目次
  • はじめに
  • DataFrameのメモリサイズや、各列の型などを確認する。
  • DataFrameの一部をカテゴリデータに変換する
  • 複数の条件式を使って、DataFrameの一部を抽出する
  • MultiIndexで特定のレベルのindexを取得する
  • Pandasのapplyを高速化する
  • applyにプログレスバーをつけたい。
  • 参考資料
  • MyEnigma Supporters

はじめに

大量のデータを処理する時にPythonのPandasは

非常に便利なライブラリですが、

myenigma.hatenablog.com

久しぶりにPandasを使うと、

このようなことをしたい時にどうすればいいんだっけと

毎回調べることになるので、自分がよく調べ直す事柄をメモしておきます。

 

続きを読む

良いUnit testの書き方


Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス


レガシーコード改善ガイド (Object Oriented SELECTION)

目次

  • 目次
  • はじめに
  • Unit testは速いほうが良い
  • Unit testは安定していないといけない
  • Unit testは環境に依存してはいけない
  • Unit testが外部のシステム(DBや通信による別のアプリ)に依存してはいけない
  • 公開APIを使ってUnit testを作成すべき
  • 二箇所以上の場所で使われていたらテストする
  • テストコードの本体は読んで一瞬でわかるように、明確なテストを書く
  • テスト関数名は長くても良いので明確にわかりやすい名前をつける
  • テストはメソッド毎ではなく、挙動や状態でテストする
  • テストコードはgiven, when, thenで分類する
  • 多少重複があってもテストは愚直に書く
  • エラーメッセージはわかりやすく書く
  • Builderパターンで初期オブジェクトを作り、その一部を変えてテストを書く
  • アサートするときに、計算された値にはactual, 期待する値にはexpectedをプレフィックスとしてつける
  • テストではハードコードした値を勇気を持って使う。
  • 参考資料
  • MyEnigma Supporters

はじめに

これまでも各言語のUnit testのフレームワークなど、

Unit testの作り方を説明した記事はまとめてきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

どのような (どのように)Unit testを書くべきか(設計すべきか)という資料は

あまりまとまっていない気がしたので、

これまで自分が読んで来た冒頭の書籍や、

自分の経験を元にまとめておきます。

 

続きを読む

Googleのソフトウェアエンジニアリングを学ぶ


Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス

目次

  • 目次
  • はじめに
  • Tweetメモ
  • それ以外のメモ
  • 参考資料
  • MyEnigma Supporters

はじめに

冒頭の書籍を読み、

様々な学びがあったので

連続Tweetでメモを取ったものをまとめておきます。

個人的には、ユニットテストに関する内容がかなり学びがあったので、

この部分は別の記事でまとめたいとおもいます。

続きを読む

JavaのFutureとCompleteFutureの違い


プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書

目次

  • 目次
  • はじめに
  • Java8のCompleteFuture
  • 利点1: 手動での処理停止
  • 利点2: Futureの処理を完了したときに呼ばれるCallback関数を設定できる
  • 利点3 複数のFutureを繋いで処理することができる。
  • 利点4: Exception処理が実装できる。
  • Java9でのCompleteFutureの改善
    • timeout関連のAPIの追加
  • CompletableFutureの最大スレッド数の設定
  • 参考資料
  • MyEnigma Supporters

はじめに

最近様々な並列処理を学んでいるのですが、

Javaで説明されていることが多いため、

Javaにおける並列処理やスレッドを学んでいます。

 

そこで気になったのは、Future/promiseパターンによる並列パターンは

ja.wikipedia.org

Pythonにも、Juliaにもあり、

myenigma.hatenablog.com

Javaの標準機能にももちろん存在しているのですが、

FutureとCompleteFutureという2つの実装があり、

違いがよくわからなかったので、まとめてみました。

 

続きを読む