Golang用のGoogle Driveを扱うライブラリ

Google Driveにはプログラムから色々な操作を行うためのAPIが用意され、またそのAPIを簡単に呼び出せる各言語用の公式SDKが用意されている。公式SDKが使いにくいということはないが、実際に使いたい場面ではAPIの呼び出しのチェインやエラーハンドリング、パラメータの指定方法の都合などで少しばかり冗長なコードを書かざるを得ない部分がある。過去数年いくつかのシステムでGoogle Driveに関する機能の実装をしてきたが、振り返ってみると同じような冗長なコードをそれぞれのプロジェクトで書いてきていたので、このタイミングでコードを共通化して使いまわせるようにライブラリを作った。

https://github.com/yokoe/hakucho

v0.0.4現在、下記のような処理が実装されている。

  • フォルダの作成
  • ファイルのアップロード
  • アクセス権限の付与
  • ファイルの削除
  • 検索

例えば、ファイルの検索であればページングの処理なども含めて下記のように書くことができる。

files, err := hakucho.NewClient("/path/to/secret.json", "/path/to/token.json")
  .ListFiles(
    []string{"id", "createdTime", "name"}, // 作成日時、ファイル名などを結果に含める
    20, // 最大20件
    option.FullTextContains("Guitar"), // ファイル名や内容にGuitarが含まれるもの
    option.OrderBy("createdTime"), // 作成日時順に並び替える
)

Goでテストに失敗した時だけ通知したい

プロジェクトのコード規模が大きくなってくると、一回のテストの実行にかかる時間が数十秒を超えてくるようなことがある。変更があったファイルあるいはパッケージのみをテストするような進め方にすると効率が上がるが、後になってから「実は他のところが影響を受けてテストが通らなくなっていた」というようなことが起きるようになり、これはこれで効率が悪い。

加えて、テスト結果も欲を言えば「問題が発生した時のみ」通知してほしい。テストが終了するたびに結果を目視してOKかどうかを確認する、という作業も、1日に何十回と繰り返していればそこそこ目が疲れる。

そこで、開発作業中にファイルの変更があるたびにバックグラウンドで全パッケージの自動テストを走らせ、Failしたらノーティフィケーションで通知する、というようなことを試した。

“Goでテストに失敗した時だけ通知したい” の続きを読む

新しいiPad Proが届いたので、そろそろiPadでプログラミングしたい(Go言語編)

2014年にiPad Air 2を買ってから、リビングや出先ではノートPCやiMacの代わりにタブレットを使う場面が増えた。ブラウジングや読書に関しては、MacBookやiMacよりもiPadの方が素直に快適だと感じるようになった。そして今回、新しいiPad Proを購入したので、もう一度iPadでプログラミングもできないか挑戦してみようと思う。

“新しいiPad Proが届いたので、そろそろiPadでプログラミングしたい(Go言語編)” の続きを読む

GORMのソースコードを読む5 – Createその4

引き続き、Createに関するコールバックを一つずつ定義されている順番に読んでいく。今回はsaveBeforeAssociationsCallback。O/Rマッピングの実装が登場するので、多少読んでいくのが大変だが、一つずつ読んでいく。

“GORMのソースコードを読む5 – Createその4” の続きを読む

GORMのソースコードを読む3 – Createその2

ちょっと大変だが、createに関する各CallbackProcessorについて中身を見ていこう。createに関するコールバックはcallback_create.goに定義されている。まずは、最初に登録されるbeginTransactionCallback から。 “GORMのソースコードを読む3 – Createその2” の続きを読む

GORMのソースコードを読む2 – Createその1

OpenでDBの接続を行う部分のコードを読んだので、次はDBに対してクエリーを発行する部分を読んでいく。

db.Create(&Product{Code: "L1212", Price: 1000})

まずは一番わかりやすそうなCreateのコードを見てみよう。

DBのトランザクション、クエリー生成、O/Rマッピングなど、非常に長い内容になるため、いくつかのポストに分けて読んでいこうと思う。 “GORMのソースコードを読む2 – Createその1” の続きを読む

GORMのソースコードを読む1 – Open

Go言語でDBを操作するライブラリはいくつか存在するが、手軽さとAutoMigrationの便利さから、個人的にはGORMが気に入っている。ただ、ある程度使っていると、バッチInsertができないなど、いくつか気になる点が出てきた。せっかくなので勉強を兼ねてコードを読んでいくことにした。今回は長くなるので、何回かに分けて書いていく。 “GORMのソースコードを読む1 – Open” の続きを読む

Postfix Code Completion コードの後置補完

コード補完(Code Completion)と言えば、入力中の文字の後に続く文字列を予想し自動入力してくれる形が一般的だが、一部のIDEでは入力中の文字より前の部分に対して作用する後置補完(Postfix Code Completion)という機能が存在する。個人的に大分活用している機能なのだが、周りを見ていると意外と知名度が低そうなので、普及のためここに魅力を記しておきたい。 “Postfix Code Completion コードの後置補完” の続きを読む