暮らしの技術

暮らしを豊かにする技術や、特に暮らしを豊かにしない技術があります

手書きブログサービス「綴る」をリリースした

しました。

5月ごろにiPad Pro と Apple Pencil を買って、それからしばらくメモアプリに色々書き込みながら過ごしていただけれど、しばしばこのままオンラインで公開したいな〜と思う瞬間があった。

同時に、お絵描きツールを自分で作ってメンテしたいという気持ちが昔からあったのを思い出し、じゃあ作るかということで形にした。

コメント機能とかもないし、色々と不足はしているけれど、最低限の機能は出来上がったのでリリースすることとした。

基本的に PC+ペンタブ か、タブレット+スタイラス での使用を想定しているけれど、PCの場合マウスでも書き込めるようになっている。

スマートフォンの場合、タッチ操作に対して編集画面のスクロールなのか線の描画なのか区別がつかない、という素朴な理由で使うことができなくなっている。

マイクロブログサービスのような気軽に投稿、という方向性のサービスではないので、これでいいかなとも思っています。

フリーハンドでの入力を前提としているので、文章以外にも簡単なイラストや手書きの地図なんかを添えても面白いと思います。

お楽しみください。


ちなみに私の日記はこちら: side_tanaの日記 | 綴る

trade-static-normalizer をリリースしました

github.com

財務省貿易統計という資料が公開されておりまして、HSコードごと、年月ごとに輸出入金額やさまざまな数量を調べることができるわけです。

HSコードというのは「商品の名称及び分類についての統一システムに関する国際条約」で定められている品目ごとのコードで、例えば 綿製のTシャツであれば 6109.10.900 が割り当てられているようですが、素材やプリントの有無でも変わるようなので、もし何か輸入しようと考えておられる方は通関士の方や関税局の方とよくよくご確認をされるのが良いでしょう。

ともかく、そういった分類ごとに輸出入の統計が出ているものですから、特に輸入に頼っているような商品であれば、国内のマーケットがどの程度あるか、と言ったことを実際のデータをベースに考える材料になります。輸出は輸出で、相手国ごとのデータもあるようですから、自社で取引のない国でも実は大きなマーケットが、、、と言ったことを調べるヒントになるかもしれません。

ともかく使い出がありそうなデータなのですが、いかんせんフォーマットが計算機で処理しにくい。

ということで正規化するためのツールを作りましたのでここに公開するものであります。よかったですね。

自分が使う前提で考えられているか

ソフトウェアを開発する上で機能要件の話に終始してしまうことがあると思う。特に開発者が利用者ではない場合は悲惨だ。

ユースケースヒアリングは合意が取りやすい一方、非機能要件、とりわけ使い勝手の部分については、担当者がどのように業務を遂行しているかつぶさに観察する必要がある。その点、開発者が利用者である場合はヒアリングもインタビューも必要なく、どうすれば自分(達)が使いやすいかを考え抜けばいいから幸いである。

このような幸いな状況は作り出すことができて、つまり開発者を実際に利用者の立場にしてしまい、半年なのか一年なのか、あるいはもっと長い時間実際に業務に取り組んでもらうのが現実的なのだと思う。逆パターンももちろん可能なのだけれど、より難易度が高い気がする。

mackerel でギガを監視する

ギガっていうの受け入れちゃったね*1

こうなります。検証のために追加クーポン(200円)を買いました、これって経費で落とせますか?

数年前 IIJmio に乗り換え、以来便利に使っているのだけれど、最近は気がつくと月のデータ通信量を使い切って破滅、と言ったことが増えてきた*2

それほど困っているわけではないが、一体いつ使い切ったのか調べようとすると、公式のアプリでは5日ほどしか遡れず、また1日単位でしか確認ができないのでよくわからない。

調べてみると API があるとのことなので、mackerel にサービスメトリックとして投稿することで可視化してみた。

IIJmioクーポンスイッチAPI | クーポンについて | IIJmio

これをみながら実装する。

認証周りをエイヤし、`/mobile/d/v2/coupon/` API を叩くとのようなレスポンスを得られる*3

{
  "returnCode": "OK",
  "couponInfo": [
    {
      "hddServiceCode": "XXXXXX",
      "coupon": [
        {
          "volume": 0,
          "expire": "202209",
          "type": "bundle"
        },
        {
          "volume": 4000,
          "expire": "202210",
          "type": "bundle"
        },
        {
          "volume": 0,
          "expire": "202209",
          "type": "topup"
        },
        {
          "volume": 0,
          "expire": "202210",
          "type": "topup"
        },
        {
          "volume": 0,
          "expire": "202211",
          "type": "topup"
        },
        {
          "volume": 0,
          "expire": "202212",
          "type": "topup"
        }
      ],
      "hdoInfo": [
        {
          "couponUse": true,
          "coupon": [
            {
              "volume": 0,
              "expire": null,
              "type": "sim"
            }
          ],
          "hdoServiceCode": "XXXX",
          "sms": true,
          "number": "090XXXXXXXX",
          "regulation": false,
          "iccid": "XXXXXXXXXXXXXXXX",
          "voice": true
        }
      ],
      "plan": null
    }
  ]
}

あとは好きな方法で mackerel に投稿できるフォーマットへ変換する。以下のようなコードを書いた。

const input = require("fs").readFileSync(process.stdin.fd, "utf8");

const couponResponse = JSON.parse(input)
const targetServiceCode = 'XXXXXXXX'
const coupon = couponResponse.couponInfo.find(e => e.hddServiceCode === targetServiceCode).coupon
const body = coupon.map(c => {return {'name': `iijmio.${targetServiceCode}.${c.type}-${c.expire}`, "time": Math.floor(Number(new Date())/1000), 'value': c.volume}})
console.log(JSON.stringify(body))

最終的に、 `curl IIJmio APIリクエスト` | node format.js | `curl mackerel サービスメトリック投稿` と言った風にパイプをつなげた shell script を cron で実行すれば終わり。

ここまでできれば、最初の画像のようなグラフが自動で生成されます。

さらに mackerel の機能を使うことで、例えば過剰に使っている時にアラートを出すなども簡単に実現できますね。

それでは皆様、よき監視ライフを!

*1:実際ギガって呼ぶのに慣れちゃうといちいちデータ通信量って呼ぶのだるいよね。ということでデータ通信量の話です。

*2:時代が変わったのか私のスタイルが変わったのか

*3:ドキュメント通り