布団の中にいたい

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

軽いノリでプルリク投げたらmergeされた話

今年のぼんやりとした目標で、何かしらの他人のプロダクトにプルリクを投げようと考えていたのですが、年始にgithub trendingに上がっていたプロダクトにノリでプルリク投げたら5分かからずmergeされてしまいました。

プルリクを投げたのは以下。

github.com

facはコンフリクトを解消するためのツールで、ちょうど大量のコンフリクトに悩んでいた私としては使わずにはいられないものでした。実際に使ってみても便利だと思ったので何かしら貢献できないかと考えプルリクを投げてみました。

内容は至極単純で、constで連続した番号を定義している部分をiotaで書き換えただけです。

まぁ何が言いたいかというと、軽いノリでプルリクを投げてもmergeしてくれることがあるみたいなので、みなさんもプルリク投げてみましょう。

「Kotlin Webアプリケーション 新しいサーバサイドプログラミング」を読んだ

年末年始休み中で時間がまとまって取れるタイミングで積んでいる本を消化しています。

昨日から今日にかけて「Kotlin Webアプリケーション 新しいサーバサイドプログラミング」を読んだのでざっくり感想を。

Kotlin Webアプリケーション 新しいサーバサイドプログラミング

Kotlin Webアプリケーション 新しいサーバサイドプログラミング

前提として、私自身のKotlinの習熟度は、趣味でKotlinを使ってandroidアプリを作っている程度で、まぁ趣味の範囲でそこまで詳しくないです。

構成

全部で三部構成で章立ては以下のようになっています。

  1. Kotlin入門
  2. 簡単なWebアプリ
  3. 少し本格的なWebアプリ

第一部については、「Kotlin スタートブック」を持っていたので、そこまで注意して読んではいないので何かしら感想は言えないです。ある程度文法が分かるのであれば、必要になった時に読めばいいかと。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

第二部・第三部については、sparkやSpring BootといったWebフレームワークを使って、Todoリストを作ってみようというものです。第三部に関しては作って、テスト書いて、デプロイまで書かれているので一通り学べるので入門として非常にありがたかったです。

感想

kotlinを使用して、Webアプリケーションを開発する場合の概観がわかるので個人的には買ってよかったと思います。普段ちょっとしたものを作るときは、pythonでflaskを使って書くか、golangでnet/httpを使って書くかしていましたが、記述量・型の有無を考えた時にotlinを使っても全然問題なさそうなので、個人プロダクトでちょいちょい使ってみようかと思います。

2018年の抱負

あけましておめでとうございます。今年もポツポツ書いていこうと思います。

去年は色々あって、年始に極端に落ち込んでそこから立ち直るのに時間がかかってしまったという印象なので、今年は落ち込まないようにゆるゆるやっていきつつ、何かしら目標を立てて進めていければと思います。

あと、去年末に思ったことですが、その年の目標を最後の最後まで覚えきれていなかったので、もう少し期間を区切って考えていこうと思います。達成できるかはわかりませんが。

なので、目標は継続的に目標を立てて消化していくです。大枠で目標を立てつつ細かい目標を消化していくイメージで乗り切っていこうかと思います。

大枠で達成しようとしているものは以下ぐらいですかね。

  1. 英語
  2. 自分のプロダクト作り
  3. コンペへの参加

英語

英語は前々からやるといいつつやってなかったのでやります。と言ってもどうせすぐには動かないと思ったので一ヶ月ほど前から助走期間として一日一時間程度ですが、勉強するようにしています。勉強することに慣れてきたので継続的にやりつつ、試験受けようと思います。

自分のプロダクト作り

細々としてツールは自分で作ったりしているんですが、一からサービスを構築して継続的に運用する体制を整えるといったことはやったことがない(既にあるものを用途に合わせてチューニングしたりメンテナンスしたりはしている)ので、そのあたりを触ってみようかと思います。

コンペへの参加

去年は後輩にDeepAnalyticsを教えてもらってちょっとだけ参加したりしてましたが、少しいじって提出する程度で大したことできなかったので、今年はもうちょっと本腰入れて参加できればと。ちなみに今はkaggleのToxic Comment Classification Challengeに参加してたりします。

Toxic Comment Classification Challenge | Kaggle

自然言語処理全般に興味があるので、これ以外で何かしら面白そうなものがあれば参加してみようと思います。

まとめ

一昨年・去年と落ち込むことが多かったので、今年は穏やかに過ごせればいいなと思います。加えて自身の目標について少しずつ触っていければと。

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