文字っぽいの。

文字を書いています。写真も混ざります。

CMSampleBuffer を Resize する

はじめに CMSampleBuffer をResizeしてサイズを小さく(大きく)したいことがあると思います。試していませんが、途中で CIImage になっているので、回転、変形、加工などCIFilterで行う処理を適用できると思います。 環境 Xcode11.1 Swift 5.1 手順まとめ C…

RPBroadcastSampleHandlerで得られるCMSampleBufferのorientationを取得する

コード override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) { if let orientationAttachment = CMGetAttachment(sampleBuffer, key: RPVideoSampleOrientationKey as CFString, attachmentMode…

#iOSDC Japan 2019で『スクリーン配信機能の実装が大変だったので知見をお伝えします』というお話をします。

今年もiOSDC Japanの季節がやってきましたね!ありがたいことに30分トークが採択されたので、登壇します!去年は、こういったタイトルで発表しました。 fromatom.hatenablog.com 去年は再生側をやったので今年は配信側です。こいつ、いっつも「大変だったの…

#esa のURLを展開してくれるKujakuで、コメントも展開できるようになりました。

Kujakuとは Closedなesaの記事URLをSlackに貼ったら展開してくれるやつです。詳しくはこちら inside.pixiv.blog 今回のアップデート 2つアップデートがあります。 コメントが展開できるようになりました 今まではコメントのリンクを貼り付けたとしても、コメ…

Swiftで配列の要素を安全に取得する。

毎回忘れるのでブログに書く。配列の要素を取得するとき、 if 0 <= index && index < array.count { let item = array[index] } のようなコードを書くと思う。ちょっと頭いい感じだと if array.indices.contains(index) { let item = array[index] } とも書…

自分にとって簡単な仕事が、他人にとっても簡単とは限らないという話。

半年ぐらい前、弟が使わなくなったパソコンを譲り受ける為にレンタカーを走らせている時、こういった相談を受けた。 「自分なんかが回せる仕事なんだから、他の人でも簡単にできると思っていたのに上手くできないことが多い。その人が無能だとは思わないのだ…

App Store ConnectでAdmin権限を持っているのに、他のユーザーをAdminにできないときの対処法

Adminにしようとチェックマークを入れて、保存ボタンをクリックすると こんな感じで、 ご利用のアカウントには他のユーザを編集する権限がありません。詳細については、お客様のチームエージェントにお問い合わせください。 と出てきてAdminに変更できない。…

#esa の記事が古いものか一発で分かるChrome拡張「esa鮮度」をリリースしました。

様子 こんな感じで、よくある「最終更新日からn日経ってます」という表示が出ます。便利。 なお、README更新されてないやんみたいな意図は全く無いのであしからず。 インストール こちらからどうぞ。 chrome.google.com 実装 github.com 簡単なコードですが…

UIScrollViewがスクロール中かどうか判定する

やりたいこと UIScrollView, UITableView, UICollectionViewなどがスクロール中かどうか知りたい タップはしてないけどまだ慣性スクロールが続いてるとか 見た目上動いてないけどユーザーが指を置いていてスクロール状態だとか 解決コード こんな感じのコー…

MTGで良い質問をしてもらうためのテクニック

結論まとめ MTG後に「あの場では言い出せなかったんですけど〜」と個別に相談やDMが飛んできたら良くないことなのでやめるように指導する 質問の仕方を工夫して、「さて、これを実行するにはどういう順序かな?」と考えてもらえるようにする 内容 MTGなど一…

株式会社はてなに入社しました

株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記 ことしもこの季節かと思うと、1年が過ぎるのは早いなぁと感じます。

Sora iOS SDKがちゃんと導入されているのに Module 'Sora' has no member named 'hoge' となる問題の解決法

import Sora struct Test { init() { Sora.shared.audioEnabled = false } } と書くと使えるはずなんですが、Module 'Sora' has no member named 'shared' とエラーが出てしまいます。これを直すのは簡単で、 こういう感じにSimulatorではなくて こうする。…

マネジメントとエンジニアリングの両立が難しいのはなぜか?のたとえ話

与太話です。 数ヶ月前、マネジメントをしながらメイン機能の開発をしていたら完全にタスクがオーバーフローして大変なことになったんですよ。 その時に「両立が難しいのは分かったが、なぜ両立が難しいんだろうか。」をひたすら考えていたら思いついた「た…

iOS 12以降のAPIで "NSKeyedArchiver" と "NSKeyedUnarchiver" を使う

環境 Swift: version 4.2.1 やりたいこと NSKeyedArchiver と NSKeyedUnarchiver を使って、UserDefaultsやKeyChainに色々入れたり出したりすることがあると思います。iOS 11まではこうやって書いていました。 // ArchiveしてUserDefaultにセット let rootOb…

「いい温泉に入る」を目的としたストイック家族旅行に行ってきました。

背景 嫁の友人4人が泊りがけで我が家に遊びに来ることに。コミュ障な旦那は家から逃げ出すため、弟を召喚して温泉旅行を計画。せっかくだからと両親も誘って家族旅行にした。 takachi.hatenablog.jp この記事をよんで「山梨ええやん」となったので、 日帰り…

2018年に買ってよかったもの

年末ですね。 BOSE QuietComfort 35 wireless headphones Ⅱ Bose QuietComfort 35 wireless headphones II ワイヤレスノイズキャンセリングヘッドホン Amazon Alexa搭載 快適な装着感 20時間連続再生 通話マイク搭載 ブラック出版社/メーカー: BOSE発売日: 2…

Storyboardを利用したViewControllerのインスタンス生成を楽にする

背景 1つのStoryboardに1つのViewControllerという運用をしていると、ViewControllerのインスタンス生成するコードを書くことが多くなると思います。雑に書くと、 let storyboard = UIStoryboard(name: "SomeViewController", bundle: .main) let vc = story…

Slackのstatusに六曜を表示してデプロイの無事を祈る

六曜とは 六曜(ろくよう、りくよう)は、暦注の一つで、先勝(せんしょう)・友引(ともびき)・先負(せんぷ/せんぶ)・仏滅(ぶつめつ)・大安(たいあん)・赤口(しゃっこう)の6種の曜がある。 日本では、暦の中でも有名な暦注の一つで、一般のカレン…

Swift 4.2でコマンドラインツールを作るときに外部ライブラリを使う方法

開発環境 Swift 4.2 Xcode 10 手順 $ mkdir SwiftCommandSample $ cd !$ $ swift package init --type executable 中身はこうなっている。 . ├── Package.swift ├── README.md ├── Sources │ └── SwiftCommandSample │ └── main.swift └── Tests ├── LinuxMa…

Macで英語入力時にキーを長押ししたときに出るウムラウトとかのポップアップを出さなくする

新しいMacをセットアップする度に、方法を忘れるので書いておく。 $ defaults write -g ApplePressAndHoldEnabled -bool false を terminal.app とかで入力してから、再起動すると消える。

#iOSDC Japan 2018 に参加して、発表もして、感情になりました。

iOSとその周辺技術に関するエンジニアのためのカンファレンスである、iOSDC Japan 2018(iOS Developers Conference Japan 2018)に参加・発表してきました。 iosdc.jp 参加者として 去年初めて参加してとても楽しかったので、今年も参加しました!もちろん…

#iOSDC Japan 2018 で『複数のライブ映像を同期再生するのが大変だったので知見をお伝えします』というお話をします。

今年もiOSDC Japanの季節がやってきましたね!ありがたいことに15分トークが採択されたので、登壇します! プロポーザルには、 ライブ配信サービスが流行っている中、WWDC2017で EXT-X-PROGRAM-DATE-TIME タグのサポートが発表されました。これにより、複数…

Swift 4.1 で多重配列を Flatten する。

環境 Swift version 4.1.2 Xcode 9.4.1 背景 ※この記事は Sequence.flatMap を使って多重配列をFlattenしていた人向けの記事です。 Swift4.1になってから Sequence.flatMap がDeprecatedになり、かわりに map と compactMap を使うようになりました。これら…

ErgoDox EZに馴染めなかった男の末路

ErgoDox EZ買ってウキウキしてたんですよ。 ergodox-ez.com でも完全に馴染めずに埃をかぶり、前から使っていたHHKB Pro2を使い続けることになりました。馴染めなかった理由としては、 そんなに手がでかくないから完全に死ぬキーが生まれる 仕事で使いたいの…

Swiftでクソコードを認める文法をつくった

はじめに ジョークです 文脈 クソコードであることを認める構文ほしいkuso { // すみません}みたいなのでいいです— ぶんちょう (@yutopp) 2018年7月4日 これのF#実装が出てきた クソコードであることを認める構文をF#で実装してみたほんとにクソコードである…

CocoaPodsで入れたライブラリのWarningを消す方法

困りポイント CocoaPodsを利用してライブラリの管理をしている人は多いと思いますが、ビルド時にLibraryのWarningも大量にでて困ることがあると思います。こんな感じで これでは、自分の開発しているアプリのWarningが埋もれてしまいますね。 解決方法 inhib…

iOS 12でOpenGL ESがDeprecatedになったので、Metalを使うにはiOSいくつ以降をサポートすれば良いのか調べた。

結論 iOS 11以降のサポートにすればよい iPhone 5, iPhone 5c, iPad(4th) がMetal非対応だがiOS 10がインストール可能になっている Apple公式的には最新2つのメジャーバージョンのサポートを推奨している iOS 12が落ち着いたらiOS 10のサポート終了を準備し…

Comparable#clampがSwiftにも欲しいので作った

Comparable#clamp という便利メソッドを知った。 blog.bigbinary.com いままではこう書いていた let number = 100 let lowerLimit = 0 let upperLimit = 20 min(max(lowerLimit, number), upperLimit) // => 20 Swiftにもほしいと思って調べたけど、Rangeの …

「ずるい」ではなく「いいなぁ」って言うとすべてが上手くいく

気がする。 子供のしつけで「ズルいわけじゃないんだよ」って教えるってのよく話題になる気がする。そもそも「ずるい」って 《形》人をだしぬいて自分が得をするような、正しくないやりかただ。わるがしこい。こすい。 という意味なので、ネガティブなんです…

株式会社はてなに入社しました

株式会社はてなに入社しました 今年もよろしくお願いします。 株式会社はてなに入社しました - hitode909の日記