Google Cloud APIの中には、gs://[bucket]/[path]
の形式になっているCloud StorageのURLを与えることができるものがある。今回はGoogleドライブに入っているファイルをCloud Storageにコピーしてgs://
のURLとして使えるようにしたかった。
streamをうまく使うことで、一時ファイルを作らずにコピーすることができた。
続きを読むターミナルで作業中、たまに意図せず時間のかかるコマンドを叩いてしまうことがあります。例えば、curlでダウンロード仕掛けたは良いけどファイルサイズが大きかったり、無意識にcarthage update
叩いてしまった場合などです。
そうなると、終わるまでちょっと待つかと思ってブラウザを開き、その結果ネットサーフィンが捗りコマンドが終わってからも十数分くらい想定していない時間の使い方をしてしまうことがあります。
最初から長くなるのがわかっているときは、以下のようにafplay
コマンドを使って音を鳴らすようにしていました。
$ npm run deploy; afplay /System/Library/Sounds/Purr.aiff
この方法では、たまたま実行したコマンドがの実行時間が長かった場合に、音を鳴らすためには一度実行を止めなければなりません。
そこでシェルのフック機能を使って、コマンド実行が長かった場合は自動的に音が鳴るようにしてみました。
続きを読むサークル 伊勢的新常識は2019/09/22(Sun)開催の技術書典7に参加します。スペースはい13Cです。
今回は、これまでのプッシュ通知基板開発の経験を凝縮した1冊をお届けします。
技術書典公式のサークルリスト内のページ でも予定情報がみれますのであわせてどうぞ。
今回の新刊です。
昨年まで、8年間にわたりプッシュ通知開発を共にやってきた id:lufiabb と、これまでの経験を1冊にまとめました。 いまやプッシュ通知はFirebaseなどのmBaaSを使って配信することが多くなっていると思いますが、直接APNs/FCMを使ってプッシュ通知を送ったり、ウェブプッシュの実装あったり、ずっと見てきたからこそわかるこれまでの歴史など、まとめて紹介しています。
この一冊があなたのバックエンドを、更なる高みに引き上げる一助となればと思っています。
データベースのアイコンを見ていたら、これがもう湯のみにしか見えなくなってしまいました。 ということでそのまま湯のみにしました。温かい飲み物がおいしくなる冬に備えてぜひそろえていただきたい一品です。
BOOTHで先行販売したところ即完売しました。ぜひこの機会にどうぞ。
今回は既刊としてZ-01K HACK BOOKとAristeaラバーストラップを少数持ち込む予定です。あわせてご利用ください。
サークルのウェブサイト では既刊情報も合わせてご紹介していますのでご参考ください。
い13Cでお待ちしておりますので、ぜひお立ち寄りください。
ここ数年は決まった声優さんだけではなく、様々なアーティストのライブに行くことが多くなってきた。ロックバンドのライブは封入先行、オフィシャルHP先行、プレイガイド先行など、予約するタイミングが複数あって、予約先もアーティスト公式/ぴあ/e+だけではなくLINEチケットやなどのチャンネルに分かれている。
そうすると何が起こるかというと、同じライブのチケットを複数の先行予約で購入してしまうということだ。他にも同じ日に異なるライブのチケットを買ってしまうことも出てくるだろう。しかも1枚4000円〜10000円くらいするので、そのようなことがあるとおサイフのダメージが大きい。
防ぐためにちゃんと管理しないと…と思うと出てくるのがこの衝動。
ライブのチケット管理するアプリほしい
— いせ (@iseebi) June 8, 2019
アプリ作ろうと思ったのだけど、いや、どう考えてもそこまでコストかけることか…?Accessの現代版はないものか…?と思っていたら丁度よさそうなAirtableというサービスを見つけた。
2ヶ月ほど運用してみて、わりと良い感じだったので、どう管理しているか紹介しようと思う。
続きを読む仕事でTwitter認証をサポートしたアプリを開発していますが、その認証処理に使われていたライブラリがとても古く、あっちこっち警告出しまくっていたので入れ替えることになりました。
いろいろ考えた結果、小さなライブラリを新しく起こしました。SimpleTwitterAuthenticationと、そのものズバリな名前のライブラリです。
実のところ、入れ替え先のライブラリを検討したのですが、公式のTwitterKitを使うとTwitterアプリがあれば飛んで、専用のOAuth画面を出してくれるようになっています。しかし、既にdiscontinuing support
と書かれているし、認証のためだけに大型のライブラリを入れるのはビルド時間も延びるのでよろしくない。
このライブラリはTwitterKitのソースを見て同様の処理を実装し、端末にTwitterアプリがあればTwitterアプリに遷移しますし、なければiOSバージョンごとに適切な認証用ViewController(ASWebAuthenticationSession/SFAuthenticationSession/SFSafariViewController)を起動して認証するようになっています。認証に必要な処理だけ書いているので1ファイルのみのシンプルなライブラリになっています。
続きを読む
iOS/Androidアプリを簡単かつ複数の端末にインストールできるMacアプリ、TransporterPadを久しぶりにアップデートしました。
今回は再びはやかわさんにご協力いただき、ダークモードに対応させました。
Macに繋がっているすべてのiOS/Android端末に、指定したIPA/APKを一括でインストールするツールです。
iOS/Android アプリの実機転送は公式の TestFlight などや、DeployGate といった OTA 配信の仕組みが使われることが多くなっています。しかし、そのような環境を構築できない場合もあります。そのときは USB をつないでの転送をすることになりますが、この方法だとエンジニア以外にはハードルが高く、デザイナーやマネージャーが新しいビルドを試しづらい環境だと思います。例えば、Apple ConfiguratorやAndroid Studioは扱い方やファイルサイズの点から、導入が大変だと思います。
また、テスターが複数の実機を横に並べてテストする際、そのインストールは大変な手間となってしまいます。
TransporterPadは小さく、取り扱いも簡単ですので、開発チームの多くの人が手軽にUSB経由の実機転送をすることができます。
その他、下記の資料が参考になると思います。
speakerdeck.com speakerdeck.com
ぜひ使ってみてGitHubのスターや感想などいただけますとうれしいです。
昨日の記事で、アプリはHardened Runtime対応されたものの、リソースとして埋め込まれる実行ファイルがHardened Runtimeに対応していない状態だったためNotarizationに失敗していました。
実は、Hardened Runtimeへの対応はアプリのビルド時ではなく、コードサインでフラグを立てることでなされます。
codesign コマンドに --options runtime
をつけてバイナリを署名することで、Hardened Runtime対応となります。
codesign --force --options runtime --sign "Developer ID Application: Shin ISE (XXXXXXXXXX)" adb
CocoaPodsなど、Xcodeで処理されているバイナリに関してはXcode側にHardened Runtimeのフラグを立てることで署名されていますが、問題のバイナリはRun Script Phaseでバイナリをコピーするようにしていたので、これらコピーで追加した実行ファイルは独自に署名してやる必要があります。
というわけで、Run Script Phaseにcodesignコマンドの呼び出しを追加しました。--sign
の引数は$CODE_SIGN_IDENTITY
に置き換えて、このような形にしています。