読者です 読者をやめる 読者になる 読者になる

React NativeのAndroid版のJSブリッジはどうやってるの?

本日はおひさしぶりにyidev に参加。 今回も始終和やかな雰囲気で和みました。 その中で@motokiee さんのReact Nativeの発表を受け、React NativeのAndroid版はどうやってJSとブリッジしているのだろう?という疑問が私を含む一部で湧いたので、Android詳し…

LGTM iOS版をリリースしました

どうも @toshi0383 です。この度めでたくLGTM のiOS版をリリースしましたのでお知らせ致します。 LGTM - 高速LGTM画像ピッカー -Toshihiro Suzukiエンターテインメント無料 早いもので、mac版をリリースしてからもう1年経っていたんですね。 LGTM Macアプリ…

クロージャでプロパティを初期化する

Caution! この記事はまだSwift2.2です! 普段何気なく使っているのですが、たぶん初めて見た人は混乱するだろうなと思ったので。 extension UIImage { private static var contentPlaceholder: UIImage = { return UIImage(named: "placeholder_b.png")! }()…

tvOS-10-Sampler

Hey guys I just created a tiny sample app demonstrating tvOS 10 new APIs. github.com I open-sourced it because the AVContentProposal API is still buggy and I wanted feedbacks from other developers from the world. So this is the crash you c…

ぼくのSierraアップデート記

諸事情でSierra & Xcode8に開発環境をアップグレードしたので人柱記録です。 と言っても大した問題はなく、普段使っているツールは大体対応してくれていました。 gitup も問題なしでした。 SwiftLintなど開発用のコマンドラインツール群も問題なし。 Siriを…

RxSwiftのbindToについて

RxSwiftにはbindToが大きく分けて2種類あります。 引数にobserverを取るものと、binderを取るものです。 引数にvariableを取るものは基本observableを取るものと動きが同じです。 以下のような特徴があります。 引数にobserver/variableを取るもの 内部的に…

同じワークスペース内で作ったSwiftモジュールを使う

こういう感じの構成で、libの中をPokemonKitとしてモジュールにして、sourcesをアプリにしたいと思った。 app $ tree . ├── Makefile ├── README.md ├── build.ninja ├── lib │ └── pokemon.swift └── sources └── main.swift モジュールにしなければ、swift…

AppleTVの時刻ズレ問題

Forumに投稿しました。 AppleTV does not fix its device clock | Apple Developer Forums AppleTVは、当然ですが内部に時計を持っています。Siriに「今何時?」と尋ねると、ちゃんと答えてくれます。しかし、答えてくれる時間がおかしいことが、たまにあり…

コードを綺麗にする誘惑に君は耐えられるか

try! Swiftのセッションの翻訳を読んで、ちょうど今考えていたことと関連したので、記事にしようと思いました。 realm.io まだObjective-Cでメンテナンスが続いているアプリもたくさんあるわけですが、せっかくSwiftにしたんだったら、新しいパラダイムも取…

Tokyo iOS Meetup で発表してきました

Tokyo iOS Meetupというイベントの主催者に声をかけられて、tvOSアプリの開発について発表してきました。 www.meetup.com 内容は、先日のyidevで発表した内容を最新の情報で更新して、新たに得たtipsを追加したものになります。 なおtvOSのUIKitとAVKitにつ…

enumの値チェック

enumをrawValueから生成するときに、値を制限したいことはよくあると思います。 Himotokiと組み合わせることを前提に、rawValueが不正だった場合に詳細なエラーメッセージを含むDecodeError.TypeMismatch をthrowするinitializerを作ったので共有します。 な…

MacのFinderのTags

仕事のプロジェクトでFinderを使いこなしている人がいたので、仕組みについてちょっと調べてみました。 こういうやつです。 右クリックのメニューからタグを選択できます。 ターミナルで ls すると、@ というStickyBitがついています。 $ ls -l total 40 -rw…

CoreAnimatorを使ってみました

本日から始まったtry! Swiftカンファレンスで@TimOliverAU が紹介していたCoreAnimator。気になったので早速購入して使ってみました。 Core AnimatorPolished Play, LLC開発ツール¥11,800 たっけー。ま、自分でもアプリ作るし、先行投資ってやつです。 まず…

TVMLKitchen

こんにちは、皆さんAppleTV楽しく使っていますか?私はなんと毎日使っています。なぜなら案件についているからです! というのは実は(!)冗談で、今このゲームにハマっているからです。 アスファルト8:Airborne | Asphalt 8: Airborne | 公式サイト Audiのフ…

テストコードを読んでライブラリの難しいコードを理解する

こんにちは、@toshi0383 です。 この1年間振り返ると様々なライブラリにお世話になってきました。ライブラリは中身の実装は知らなくても使えるよう、「まアいつものアレでしょ」という処理が抽象化されているというのが便利な点なわけですが、ソースコードを…

Swift Package Manager のPackageがlinkerエラーでビルド失敗する

久しぶりにSwift Package Managerを触ったら、 この構成で、 $ ls Package.swift main.swift $ cat main.swift print("hello") $ cat Package.swift import PackageDescription let package = Package( name: "Queue", dependencies: [] ) こんなエラーが出…

sniper, the OSX app terminator in Swift

sniper というコマンドラインツールをSwiftで作ったので、作る過程で得られた知見も交えて紹介したいと思います。 github.com TL;DR sniper は、アプリのプロセスを探して殺すことができる簡単なコマンドです。 bin/sniper をどこかにコピーして使ってくださ…

Swift array map の性能測定の続き

前回の続き 前回の記事に対して@es_kumagai さんからフィードバックをいただきました。 今週忙しくて、やっと見る時間が取れました。 結論から言うと、今回の検証方法(ターミナルからswiftやswiftc を利用する)においては、標準のmapより速い実装が手に入…

Swift arrays are not lists

第2回 カジュアル Swift 勉強会 @ 青葉台で簡単に共有した内容をまとめました。 当日迷宮入りしてしまった部分も調査を進めましたので、ご興味あればご確認ください。 背景 Advanced Swiftを読んでいたら、mapはreduceを使うと簡単に実装できるよね、とい…

LGTM Macアプリを作りました

既にTwitterには流してたんですが、開発者のみなさんの普段のLGTMのフローがよりスムーズになるMacアプリを作りました。ご活用ください。 単純に本家(?)のWebサイトのレスポンスが悪かったというのがモチベーションです。 アプリはこちらからダウンロードで…

360|iDev まとめ

セッションビデオとスライドなどが出揃った模様ですので、記事にしておきます。 下記にまとまって公開されています。 Session Videos - 360iDev.com360idev.com phatblat/360iDev-Slidesgithub.com それだけなんですけど、そういえば運営的な視点でまとめて…

360|idev にきています(3日目)

1日目 2日目 200: WHAT’S IN FOR US AFTER THE INDIEPOCALIPSE? 個人アプリの黄金時代が終わったいま、どうすればいい?という内容。 人気者のMarin Torodof 氏(さくじつのEasyAnimationの人)が発表してくれました。 Trodof氏も元々は少人数の仲間を集めて…

360|idev にきています(2日目)

360iDev.com - 360iDev.com 1日目に続いて、2日目のレポです。 蓋を開けてみるとどうも1日目はおまけだったようで、一番最初にkeynoteがありました。 短いセッションが目白押しで、1日目とは違う体力を使いました。 STILL HERE keynote。 ジョブスのパロディ…

360|idev にきています(1日目)

360idev(すりーしっくすてぃ あいでぶ) 360iDev.com - 360iDev.com 2009年から続いているiOSの大きなカンファレンスで、アメリカでは結構有名みたいです。会社に「行かせてちょ!」と言ったら快く行かせてくれました。めったにない機会だと思うので、いろい…

第1回 カジュアル Swift 勉強会 @ 青葉台で発表してきました

SwiftをObjective-Cと一緒に使うことについて発表してきました。 SwiftでObjective-Cコードに立ち向かう from Toshihiro Suzuki 最後のオチがひどいんですが、まあうまく交渉がまとまればいいなあ、と思っています。 上のスライドにもちょっと書いてますが、…

今週の進捗:React.js

さて、NodeSchoolで基礎力もアップしたことだし、今週末も引き続き嫁そっちのけでReact.jsで作ったサイトをいじくり回した。 前の記事を書いてから進歩した点 browserifyを使って依存関係を解決! ひとつのjsファイルにまとめてそいつをuglifyjsで難読化した…

NodeSchool International Day in Tokyoに参加してきた

NodeSchool International Day in Tokyo 諸事情で途中からの参加になってしまったけど、みんなモクモクと作業していたので問題なく溶け込めた。 functional javascript workshopは前にちょっとやっていたんだけど、今回はjavascripting とかlearnyounodeとか…

GWなのでReact.jsでイベントサイトを作った

ジャムセッション情報共有アプリ | Jam Navi イベントといっても音楽関係でしかもジャムセッション縛りという割とニッチなサイトを作った。 ざっくり とりあえずリリースすることが最優先だったのでサーバサイドレンダリングとかはなし。Fluxとかも知らない…

javascriptとSwiftでArray#reduceを自分でも実装してみた話

最近1年くらいQiitaにばかり書いていましたが、こちらではもう少し日記みたいな感じで徒然と書いていこうと思います。さて、今日はちょっと趣味でjavascriptの勉強をしようと思いました。 これまでjsは真面目に書いてこなかったのですが、とりあえずとっか…