Pocketでお気に入りしたページをはてなブックマークに追加するWebアプリを書いた
TL;DR
はじめてGo言語(Echo)でコードを書いてみた。
やりたいこと
Pocket でお気に入りした記事をIFTTTのメール通知機能を使ってはてなブックマークに投稿していたが、メールでのブックマーク投稿機能の提供が終わってしまった。
なのでGo言語の勉強も兼ねて作ってみた。Go言語わからなすぎてだいぶハマってしまった… 😭
やってること
POSTが呼ばれたらパラメータにいるURLをはてなブックマークAPIを叩いて追加するだけ。
Pocketでお気に入りをしたらPOSTを呼ぶ部分は IFTTTの webhook serviceからやっている。
使ったもの
- Golang 1.11.5 ( Go modulesを利用 )
- echo
- Heroku
- IFTTT webhooks
- ngrok (ローカルでの動作確認)
ハマったこと
リクエストトークンの取得 部分がうまく書けず、結局 はてなブログ API 用の gem を書いた - blog.kymmt.com に入っているトークンを取得するRubyコードを呼び出して取得した。
書いてはみたけどまだGo言語に慣れていない…
参考にしたもの
特に hatena-go についてはめっちゃコード参考にしました。ありがとうございます。
Nuxt.js + Skyway ( WebRTC ) で簡易ベビーモニタを作った
TL;DR
やりたかったこと
- iOSのカメラを使う
- リアルタイムで送ってほしい
- 音声も拾いたい
やったこと
- iOSのカメラを使う
- 音声も拾いたい
MediaDevices.getUserMedia() - Web API | MDN
を使った
- リアルタイムで送ってほしい
を使った
公開するまでの流れ
最初はリアルタイムで配信すること & 音声の取得は難しいと思っていたので、 ブラウザで撮影したカメラの画像をサーバに送信する方法 - NaCl非公式ブログ とを参考にして、 Rails 5.2 + Stimulusjsで作っていた。
お世話になっていた FJORD BOOT CAMP(フィヨルドブートキャンプ) のシステムでも似たような実装があったのを記憶していたのでそのコード部分の実装*1*2 も参考にした。(余談だけどこの機能は今は消えちゃってた)
ただ取得時間が短かったせいかうまく画像を表示させることができなかったので断念。
上掲のSkywayを試したら思ったよりもすぐ出来、Railsじゃなくても良くなったので Nuxt.js(デザインはbootstrap-vue)を導入。 全公開されちゃうのはちょっとなーと思ったので、合言葉と合致したら閲覧と配信ができるよう vuex-persistedstate を使った。Basic認証っぽいことをしたかったんだけど、SPAモードでそれができるやり方がわからず。なんか良いやり方があったら教えてください。
ホスティング先は
zeit.co を使った。 初めてだったけど、now
だけでデプロイされるのはすごい。 URLが毎デプロイごとに変わったので、now && now alias
を実行している。この辺もこのやり方でいいか気になっている。
感想
Nuxt.js + Skywayで簡易ベビーモニターを作って今日から使ってみてるけど、いちいち様子を見に行かずに済んで便利だ…
— 妬み、嫉み、僻み。 (@kimihito_) February 18, 2019
当たり前のことだけど、自分たちにとって「便利〜」というものを作るのはとてもいいなぁと思った。
沖縄県獣医師会のホームページが良くなった
で利用していた 公益社団法人 沖縄県獣医師会 が更新されました。
この変更に追いつかずに
のスクレイピングが壊れてしまっていたので修正しました。
公益社団法人 沖縄県獣医師会 がすごくわかりやすくなっていて良いです。
JSONで出力できるようにしたので、なにかアプリケーションとして一つ作れないかなぁ。
2018年の振り返り
今年の仕事を納めました。
— 妬み、嫉み、僻み。 (@kimihito_) 2018年11月29日
11月30日で今年の仕事を納めたので今年一年を振り返ります。
去年の記事はこれ。
健康
- 去年発症したアナフィラキシーは出ず過ごせた。食後の運動を控えたり、睡眠不足をなるべく回避するようにしたのが良かったと思う。
- 目が人工レンズになった。視力は1.5になったが、近くの文字が見えづらくなった。
- 歯がボロボロだった。虫歯がいくつも見つかったり、強く磨きすぎて神経を刺激している状態になった。詰め物で食い止めている感じ。歯茎も汚いとのことだった。歯磨きとフロスの使い方を教えてもらい改善を心がけている。4月ごろに診てもらうつもり。
- 日が昇る前に起きて徘徊(という名の犬の散歩)をしている。顔なじみの先輩方が増える。
仕事
- 去年から引き続き、コードタクト さんにお世話になっている。目の手術で1ヶ月休んだり、後述の理由で今月から仕事を休ませてもらったりとだいぶ融通を利かせてくれてありがたい。
- 一緒のプロジェクトメンバーは自分よりもすごい人たちばかりで、学びがある。プロダクションでDockerが使われていたり、今どきな感じ。
- スクラム開発っぽい開発の進め方を経験できたのは良かった。
- 自分がやったと記憶しているのはこんな感じ。基本的にRailsアプリケーション開発に付随する作業が主。
- Railsのアップデート
- 5.2.1.1までやった
- 合わせてActiveStorageに移行
- Webpacker + Vue.jsを導入
- bundle-auditをCIで回したり
- Firebase Cloud Messagingも導入したかな?
- Railsのアップデート
- 過去にテストがなかったときに自分が書いたテストコードが開発スピードの足かせになっている気がする。
- 開発外のところだと、事業の理解を努める作業が不足していた。
- Rails以外の業務経験が弱い。フロントエンド力がほしい。
- 個人開発では小さなプロダクトをいくつか作っては公開まで持って行けずに挫折することが多数。
- 個人開発のモチベーションが続かない、作り終わらない。原因と対策を考えてみた。 - フロントエンドの地獄 にあるとおり、技術の習得とプロダクトの開発をごっちゃにしているのが問題。
コミュニティ / OSS活動
- 仕事関連でRailsのバグを踏んだ。そのうち一つは同僚のおかげでコントリビュートするところまでできた。(デバッグまではやれたけど、プルリクエストを作るのは眺めていただけ)
- Ha4goをHerokuで動かして https://okinawa.ha4go.net にするところまではやった。 Ha4go自体へのコントリビュートはできていない。
- コミュニティへの参加はOkinawarbに参加にたまに顔を出すぐらい。しばらくオフラインでのイベント参加はできなさそう。
スポンサードはいくつかした。ただ協賛するだけで自身は参加しないということが多かった。去年の反省を含めてそういう行為をしていたんだけども、技術系カンファレンスのスポンサーシップへの考え方 | F's Garageの下記の引用部分を見て、「イベントに共感したので協賛する」という意識をもっと伝えないとと思った。
せっかく準備いただいてるわけですから、その機会は十分に活かさせてもらいたいですし、それを望んでイベント設計をされているわけで、しっかり話に乗って賑わいを出すのに貢献するという考え方でしょうかね。テンション低く、お金だけ出して終わるのも気分のよくない印象を与えてしまいます
技術コミュニティではなくて、ママさんコミュニティや沖縄の教育関係のコミュニティには足を運んだり良くしていたかも。
- ただどれも現時点ではフェードアウトしている。
生活
- 子供が生まれた。今年の残り一ヶ月は、疑似育児休業(たかが一ヶ月 && 別に育児休業給付があるわけでもないので「疑似」)と称して育児に奮闘してみるつもり。
- 子供が予定より早く産まれたりで10月、11月はずっと病院通いや手続きで市役所に行ったりだった。こども医療助成はすごい。
- 家庭の振り返りは去年から引き続き継続中。
- カレンダー振り分け術 を実践している。ゲームしてるみたいで楽しい。
- スプラトゥーンがSになった。
2017年時点の抱負の振り返り
去年書いたもの が今年どうだったかという話
謙虚に仕事をする
- 謙虚というか、静観という感じの仕事ぶりだったかも。
一発当てる
- あたっていない
読む / 書く
- 去年よりはマシになったかも
2019年の抱負
- 使える武器を増やしたい
- 一発当てる
- 意志はきちんと伝える
沖縄にある動物病院の夜間診療情報をJSONとして提供しています。 #CHNO
TL; DR
https://kimihito.github.io/veterinary-list/emergency_hospitals/2018_7.json
のURLで
公益社団法人 沖縄県獣医師会 に所属する動物病院の夜間診療情報をJSON形式で提供しています。
にあります。
きっかけ
に書いたとおり、柴犬を飼いはじめ、もうすぐ一年になります。
その中で夜間に具合が悪くなったときにどの病院が夜間診療をしているか知るのがスマホでは大変だったという経験がありました。
(夜間診療の電話は共通ですが、当日どの病院が当番なのか知るのが面倒だった)
ちょうどそのときに、GitHubでトルコの動物病院リストを取得した
を見つけて、沖縄獣医師会のサイトを見たところ、定期的に夜間診療の情報を更新していたのでスクレイピングして GitHub Pagesにホスティングしています。
実装
- Puppeteerを利用
- GitHub Pagesにホスティングする処理は、 GitHub - horesase/horesase-boys: 惚れさせ男子データベース で使っているWerckerの設定ファイルを参考にした
- Circle CIのNightly build で定期実行
Civic Tech Night Okinawa vol.3 に参加した
civic-hack-night-okinawa.connpass.com
Civic Hack Night というイベントは Code for Kanazawa の @PharaohKJ さんがよく connpassで募集している のを知っていました(情報のオープンさを心がけているのは本当にすごいです)、沖縄で開催されているのは知りませんでした。
今回の動物病院の夜間診療の内容はシビックテック向きかな?と思い参加して話してみたんですが、どうも主催の方には社会問題の解決とは遠いものだと感じられた(と僕は受け取りました)ようです。
グループディスカッションは他の方からの意見やアイデアなどはとても実りあるものだったと思います。それだけに早めに切り上げてしまったのはちょっと残念でした。
イベントの内容が非常に満足だったとは言えませんが、こうした場が継続的にあるのは素晴らしいと思いますし、より実りある場にするための貢献は参加者として取り組まければいけないと反省しました。
その他
動物病院情報も上記のGitHub PagesからたどればJSONが取得できるんですが、セレクタの指定が甘く、いくつか綺麗に情報を取得できていない部分があるので修正出来次第ブログに書こうと思います。
国会会議録検索システム検索用APIのRuby gemを作りました
TL;DR
のRubyクライアントを作ってみました
国会での発言が検索できる
国会での発言を検索できるAPIがあるということを このIssueで知りました。
最近は自分の一票がどう使われているかをラクに知りたいなというところに関心があるので、使いやすくしたいなぁという気持ちがふんわりありました。
ちょうど一ヶ月ほど休むことになったので、gemにしてみました。
作っている中でAPI側の不具合のようなものも見つけて報告していますが、まだ直っていません。。。
参考にしたGem
GitHub - esaio/esa-ruby: esa API v1 client library, written in Ruby
GitHub - sferik/twitter: A Ruby interface to the Twitter API.
特に esa.io のRubyクライアントは、ソースコードを読んだときに「きれいでかっこいい...!!!!」と思ったのでめちゃくちゃ参考にしています。
Twitter gem については、アプリケーションエラーハンドリングをどうしてるんだろうというので twitter/error.rb at 844818cad07ce490ccb9d8542ebb6b4fc7a61cb4 · sferik/twitter · GitHub あたりを参考にしました。
ハマったところ
パラメータのエンコードを =
や &
も含めて行わなければならない
この辺の対応については
を参考にしました。ありがとうございます 🙏
TravisCI上で ruby-head
だとテストが落ちる
ビルド履歴にあるように、 String#split
が ruby-head で落ちてしまっていました。
非力な僕は特に対処せずに放置しちゃいましたが、最近あったOkinawa.rbで相談してみたところ、TRICKで入選した @tompng さんから以下のリンクを教えてもらいました。
splitに意味ないブロックを渡していて2.6からsplitに渡したブロックが呼ばれるようになってruby-headでテストが落ちていた話をきいた #okinawarb
— Ⓜ️ (@hanachin_) 2018年7月18日
thats_it gem を作った @hanachin_ さんも含めていろいろ教えてもらったり、フィードバックをもらったりしました。
こういうコミュニティが近くにあってすぐフィードバックをもらえるのはとても有り難いです。また来月もあるので参加しようかなぁ(宣伝)
作ったGemについては、まだ不具合もあるかと思うのでフィードバックなどお待ちしております 🙇