布団の中にいたい

Elasticsearchいじったり、Androidアプリ書いたり。最近は数学の勉強が楽しくなってきました。

2017年のまとめ

さっくりとした2017年のまとめを。といってもそこまで大したことはしてないです。やったのは以下2つぐらい。

  • 転職
  • ブログ移行

転職

5月にそこそこ大きめの企業からベンチャーに転職しました。この記事を退職エントリにする気もないので詳細は書きませんが、給料はだいぶ下がり、たまにブラックっぽい感じになったりしますが、自由で開発に集中できるので非常に快適です。もう総務部の雑用を押し付けられないので色々楽しいです。

ちなみに前職ではPHPやjs、pythonなどを触っていましたが、今はもっぱらgolangです。

ブログ移行

確かgithub.ioで運用していたものをはてなブログに移行したんだったと思います。github.ioで運用していたときは、hugoでやっていましたが記事を書くPCごとにhugoの環境を作らないといけないのが面倒くさくなったとかそんな感じだったと思います。少し前にhugoを確認してみたときに相当使い方が変わっていたので移行してていてよかったなーとなんとなく思っています。

github.com

まとめ

2017年の1~3月は転職するかどうかを考えている期間で心身ともにダウンしてましたが、転職後は概ね平和だったように思います。しかし、そこまで生産的な行動を取れていなかったので、2018年は何かしらできるといいなーと思っています。概ね決めたらブログ書きます。

Elasticsearchで検索結果の件数のみを取得する

elasticsearchで検索するとレスポンスに検索内容とともに検索件数が返ってきますが、検索結果のみが欲しい場合があったので調べてみました。

結果としては、そもそも件数を取得するAPIであるCount APIが提供されていました。予想としてqueryで何か書くと思っていたのですが、少々驚きです。

エンドポイントは

/:index/:type/_countで、あとは通常の検索クエリをくっつければ検索件数が返ってきます。

詳細は以下

Count API | Elasticsearch Reference [6.1] | Elastic

LinearLayoutでViewを並べる

久しぶりにAndroidのアプリを触り始めたはいいものの、View周りについてびっくりするぐらいスッポ抜けてるので基礎から復習。LinearLayoutで中にある要素をどういった形で並べるかという話。

LinearLayoutは中にある要素を縦か横に並べるためのlayoutで要素の追加方向はandroid:orientation属性で定義されている。android:orientation=verticalにすると、中にある要素は縦並びに、android:orientation=horizontalだと要素は横並びに配置される。配置を工夫すると、縦並びのLinearLayoutの中に、横並びのLinearLayoutを入れて、そこだけ横並びみたいなことができる。

詳しいことは以下の公式ドキュメントから。

LinearLayout | Android Developers

EditTextで左斜め上から文字を入力できるようにする

久しぶりにandroidで遊んでいる中でEditTextで文字を入力するときに、左斜め上から文字を入力できるようにしたいと思って調べたので軽くメモ。

やり方はすごく簡単。android:gravitytop|leftを指定するだけ。

<EditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top|left"
>

なんでこうなっているかというとEditTextが継承しているTextViewで定義されているからです。なので、同様にTextViewやTextViewを継承している他のものも設定できるはずです。

詳細は以下。

TextView | Android Developers

Rasberry Piでサーボを動かしてみた

以前Rasberry Piでカメラを使えるようにしてみたものの、この次に何をするか特に思いつかなかったので、今度はサーボを動かせるようにしてみました。サーボは色々はっつければ遊べそうなので期待大。

買ったのは以下。欲しかったのはSG90でカメラマウントは特に欲しい訳ではなかったが、何か括りつけるのに便利そうだったのでついでに購入。

今回はブレッドボードとかは使わずに直接サーボとrasberry piを接続する形にしました。

ざっくりSG90の仕様を調べてみると、赤がvcc、オレンジがPWMで茶色がgroundのようなので、それぞれrasberry piの対応するpinに接続します。

SG90の仕様は以下で見られます。

http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf

rasberry piのpin配置については公式のREADMEに記載されていました。

GPIO: Models A+, B+, Raspberry Pi 2 B and Raspberry Pi 3 B - Raspberry Pi Documentation

ソースコードは以下の方のものを参考にしました。

Raspberry Pi講座 Servo ( SG90, SG92 ) - Hobby robot laboratory

とりあえず、もりもり動くことは確認できたので、次は何かに括りつけて動かしてみたいといいな。

f:id:asahima_194h:20171208221717j:plain

Rasberry Piでカメラを使えるようにした

先日rasberry piを買ってみたものの結局の所、botを運用するサーバーに成り果てているので、それっぽいことをしてみたくカメラを使えるようにしました。

購入したカメラは以下。理由は単純に評価が良さそうだったから。

Raspberry Pi Camera V2

Raspberry Pi Camera V2

rasberry piでカメラを使うようにする手順は以下。

  1. rasberry piでカメラを有効化する
  2. カメラを接続する

rasberry piでカメラを有効化する

やり方はとても単純。

以下のコマンドでrasberry piのconfigを開く。

sudo raspi-config

Interface Optionsという項目を選んで、先頭にあるP1 Cameraを選択。そのまま有効化するかどうか聞かれるので、有効化してrebootすればいい。

カメラを接続する

こっちはちょっと難しめ。実際に動画を見ながらやると捗ると思います。

私が参考にしたのは以下。爪をあげるところから見れるのでかなり役立ちました。

www.youtube.com

実際に写真を取れるか試したいのであれば、raspistillコマンドでお試しできるので、やってみるといいかと。

Rasberry Pi 3 model B を買ってみた

今更ながらRasberry Piで遊んでみたかったので、今の所一番新し目のRasberry Pi 3 model B を買いました。OSのセットアップをするのは嫌だったので、最初からセットアップされているものを買いました。ちなみに買ったのは以下。

Raspberry Pi3 コンプリートスターターキット (Standard)

Raspberry Pi3 コンプリートスターターキット (Standard)

あとはifconfigでip見て、sshできるようにしたり、ノリで買ったカメラモジュールで撮影できるようにしたりぐらいです。カメラ周りについてはまた後でまとめます。

Lチカをやってみたかったり、サーボ回したりしたければ、ブレッドボードとかを買う必要があります。暇なときに秋葉原にでも行って買ってきますかね。