引っ越しのお知らせ

GitHub Pagesに引っ越しました。 https://naoty.github.io/posts/index.html

Write 日報 Every Day

先月から毎日日報を書くことにした。毎日コードを書いてコミットし続けるのは大変だけど、通勤時間に本を読んだり仕事のなかで学ぶことはあるから、せめて日報にそれを記録しようと思った。 日報はDropbox内にmarkdown形式で書いている。~/Dropbox/Documents…

net/httpによるHTTPメソッドを含んだルーティングの実装

Go

最近GoによるWebアプリケーション開発を学び始めたので間違っている箇所があればコメントください。 ServeMux型によるルーティング http.Handle関数を使うとパスに対するルーティングを登録することができる。http.Handler型は実際にリクエストを処理するオ…

GoのためのDockerfile

base image library/golangで公式イメージが用意されている。ユースケースに合わせていくつかの種類が用意されている。 golang:<version>: 何が必要なのか分かっていない場合はこれを使った方がよさそう。 golang:alpine: Alpine Linuxをベースとしているため非常に軽</version>…

Goでちょっとしたツールを作った

Go言語のレベルアップを目的としてちょっとしたツールを2つ作った。 license MITライセンスファイル(LICENSE)を作成するとき、いつもMIT License | Choose a Licenseからコピペしていた。さすがに毎回同じことをするのは面倒になってきたのでテンプレート…

近況

5月 結婚式を挙げ、新婚旅行にいった。 6月 30歳になった。 仕事が忙しくなりはじめる。最近はRailsでサーバーサイドを書いている。 結婚式の準備などの忙しさから解放されたため、個人開発を少しずつ始める。ElectronでTodoアプリを作り始め、Webpack, Reac…

`bin/webpack`を読んだ

webpackerを理解するため、rails g webpacker:installで追加されるbin/webpackや設定の中身を読むことにした。 bin/webpack newenv = { "NODE_PATH" => NODE_MODULES_PATH.shellescape } cmdline = ["yarn", "run", "webpack", "--", "--config", WEBPACK_CO…

vim も zsh も捨てた

プロジェクト移行期に入って暇な時間ができたので、開発環境をリフレッシュすることにした。vim や zsh の設定が少しずつ壊れてきていたのだった。 .vimrc や .zshrc を眺めてみると、かつて意識が高かった頃に施した設定が何のためのものだったのか忘れてし…

Homebrew で自分のためのツールを公開するのが楽しい

Homebrew で自分のためだけの細々としたツール類を公開するのが楽しい。naoty/homebrew-misc という tap を作って、そこにツールのための Formula を置いている。brew tap naoty/misc を実行すると、インストール可能になる。 自分で作ったソフトウェアを日…

Swiftのオブジェクトグラフを生成する flock を作った

Swift で定義されたオブジェクト間の依存関係を可視化する flock というツールを作った。これによって、 Swift で書かれたコードベース全体を把握しやすくなったり、リファクタリング時に影響範囲を把握しやすくなる。 Usage Homebrew からインストールでき…

Homebrew にコントリビュートした

あらすじ 前回、 naoty/todo というツールを Homebrew で配布しようとしたときにとある問題にハマった。 todo という名前を持つファイルが README.md や LICENSE のようなメタファイルとして判断されエラーが起きてしまうという問題だった。 Homebrew に Pul…

Homebrewで自作Formulaを作るときの落とし穴

naoty/todo という CLI ツールを Homebrew で配布しようとしたときにハマったことを書く。 naoty/todo は Go で書かれており、コンパイル済みのバイナリを GitHub Releases にアップロードしてそこから配信したいと思っていた。ドキュメント等を調べると以下…

CHANGELOG.mdを書き始めた

チビチビ開発しているライブラリの1.0.0をリリースしたのを機にCHANGELOGというものを書き始めた。その際にCHANGELOGについて調べていた。 そもそもCHANGELOGは何のために必要なのか考えてみた。CHANGELOGは各バージョンの変更点をざっくり把握するためにあ…

2016年振り返り

今年書いたコード 仕事のiOSアプリを0からSwiftで書いた。 Timepiece: Swift 3に対応し、1.0.0をリリースした。 cocoapodsにcontributeした。 AnyQuery: Swiftでのリポジトリパターンを設計していた。 clr: Swiftのアプリ開発以外のユースケースを見つけた。…

コード署名・証明書

iOS開発で頭を悩ます問題のひとつに、コード署名や証明書の問題がある。Code Signing Errorなどのような単語で検索すると、どのように問題を解決するのか、どのような手順で証明書を発行しXcodeに設定するのか、といった情報がたくさん返ってくる。しかし、…

エンジニア立ち居振る舞い:生産性を計測する

お題「エンジニア立ち居振舞い」 僕は開発以外の立ち居振る舞いとして、いくつかのツールと習慣によって開発の生産性を計測している。 自分のチームではスクラムを採用していて、各タスクにはストーリーポイントが割り振られている。相対的な作業量のような…

Timepiece 1.0.0をリリースした

最初のバージョンはSwiftが出た2014年だった。それ以降、細かな機能追加やバグ修正を繰り返し、0.5.0でSwift 2.3、0.6.0でSwift 3に対応した。どこかのタイミングで多くのStar、issueがつくようになり、多くのユーザーが使ってくれるようになった。 そして昨…

CocoaPodsにコントリビュートした

開発中のiOSアプリでCocoaPodsでインストールしたライブラリのライセンス表示を実装する際に、とある理由でライセンスに表示したくない状況があった。いろいろ調べたところ、CocoaPodsが出力するPods-{ProjectName}-Acknowledgements.plistにMITといったライ…

通信周りの処理をミドルウェアで整理する

課題感 APIリクエストの送信前、APIレスポンスの取得後にさまざまな処理をはさみたいことがある。例えば、こんな処理だ。 ネットワークインジケータの表示・非表示 リクエストとレスポンスのロギング 二重送信の防止 ログイントークンが有効期限切れだったと…

Xcodeのカラーパレットを作るコマンドをSwiftで書いた

clrというコマンドラインツールをSwiftで書いた。上のスクリーンキャストにあるようにXcodeで使うカラーパレットをターミナルから作成できる。 近年ではStoryboard(かつてはXib)がどんどん進化しているので、見た目に関する設定はコードじゃなくてStoryboa…

ブログタイトルを変えた

以前はnaoty.to_sというRuby-ishなタイトルだったけど、Swiftをやっていきたいという気持ちにマッチしなくなってきたのでSwiftyなタイトルに変えた。 AnyTypeはもちろんSwiftのそれのようにいろんなTypeの記事を書いていきたいという気持ちを表しているし、…

型消去を用いたSwiftによるリポジトリパターンの実装

リポジトリパターンとは リポジトリはオブジェクトの参照を取得するのに必要なロジックをすべてカプセル化するためのパターンです。 Domain Driven Design Quickly 日本語訳 iOSアプリ開発の文脈では、オブジェクトをWeb APIから取得するのかRealmから取得す…

try! Swiftに参加してきた

http://www.tryswiftconf.com/ 3/2~3/4の三日間、try! Swiftというカンファレンスに参加してきた。 33セッション * 30分という超濃密な構成で過去参加したカンファレンスの中でも最も充実した内容だった。特に、下のようなトピックが多かったような印象があ…

SwiftCSVをフルスクラッチした

おととしSwiftCSVというCSVをSwiftで扱うためのライブラリを作った。 けっこう思いつきで作ったので、あんまりちゃんとパースできないし、思ったよりissueがたくさん来てつらくなってしまったので、放置していた。仕事でもSwiftをまったく書けずにいて、Swif…

HIGで推奨されているアラートをSwiftで効率的に組み立てる

最近、Swiftにおけるエラーハンドリングについて興味をもっている。エラーハンドリングの中でアラートを組み立てて表示するコードをよく書いたり、目にしている。アラートを実装する際に気をつけているのは、ユーザーが目にしたときになるべく怒らせないよう…

FriendlyErrorType

新しいエラーハンドリング Swift 2でthrowを使ったエラーハンドリングが新たに導入された。従来のNSErrorを使ったエラーハンドリングの問題点は、メソッドにNSErrorポインタの代わりにnilを渡すことで無視できてしまうことだった。新たに導入されたエラーハ…

2015年の振り返りと2016年に向けて

2015年 2015年はRailsをやってる時間が長かった。Androidを少々書いていた時期もあり、ほんの僅かな時期iOS(Objective-C)をちょろっとやってた。Rails自体への意識を高めていこうとした時期もあり、その結果として初のrails本体へのコミットも果たした。た…

「エンジニアのための時間管理術」を読んだ

エンジニアのための時間管理術作者: Thomas A. Limoncelli,株式会社クイープ出版社/メーカー: オライリー・ジャパン発売日: 2006/10/19メディア: 単行本(ソフトカバー)購入: 11人 クリック: 322回この商品を含むブログ (153件) を見る この本を読もうと思…

近況

最近大きな環境の変化があったり先日行ってきたYAPCで影響を受けて心境が変わってきたので、近況という形でブログに残しておきたい。 大きな心境の変化として、プライベートの時間の使い方を変えようと思っている。より優先度の高いことに時間を使うようにし…

Timepieceを0.4.0にアップデートした

naoty/Timepiece Timepieceを0.4.0にアップデートした。ぶっちゃけブログの記事にするくらいならちゃんとCHANGELOGにしろという話なんだけど、技術的な詳細も少し話したいのでブログの記事にした。軽微なバグの修正と以下の2点が今回の変更点だ。 タイムゾー…