新しいMacをセットアップする度に、方法を忘れるので書いておく。
$ defaults write -g ApplePressAndHoldEnabled -bool false
を terminal.app
とかで入力してから、再起動すると消える。
新しいMacをセットアップする度に、方法を忘れるので書いておく。
$ defaults write -g ApplePressAndHoldEnabled -bool false
を terminal.app
とかで入力してから、再起動すると消える。
iOSとその周辺技術に関するエンジニアのためのカンファレンスである、iOSDC Japan 2018(iOS Developers Conference Japan 2018)に参加・発表してきました。
去年初めて参加してとても楽しかったので、今年も参加しました!もちろん、とても楽しかったです!
昨年もとても素晴らしいホスピタリティを誇るカンファレンスだったのですが、今年もレベルアップして最高のホスピタリティに満ちあふれていました。
今年も美味しいランチが待っていました。去年は少し物足りないなぁという感じていたのですが、今年はガッツリとご飯もの!味も美味しいし、お腹もいっぱいで幸せでした。
そして食後は、無限コーヒー。ホットだけではなくアイスもあって最高ですね。しかもこのコーヒー美味いんですよ。最高。 食後に美味いコーヒーを飲みながらトーク開始を待てるなんて、なんて贅沢なんでしょう。ここは国際学会か?
懇親会ではビールに日本酒と最高の銘柄が揃っておりました。毬花はうまいぞ。いい感じの枡もあったんですが、入手に失敗しました。くやしいー。
また、会場全体には無線LANが飛んでおり、いつでもどこでも快適なインターネット環境を得ることができました。 これもひとえにネットワークスタッフのみなさまのおかげです。ありがとうございます! 来年はグローバルIPを使って、Server Side SwiftなWebアプリが公開できる準備をしていきたいと思いました。
こちらの内容を話をしました。iOSDC1日目、朝イチ、Track Cという夜型人間に厳しい枠でした。 内容のニッチさと、時間帯、そして裏番組が
の2つでかなり強かったので、あまり人は来ないだろうと安心しきっていたのですが、なんと満員御礼。 わずかですが立ち見も出ており、嬉しいやら申し訳ないやら。
時間の都合上、AVPlayerの基本的な使い方をすべてカットしたため、本当に初心者の人には何もわからない内容だったと思います。
ただ、発表中でもお話したとおり、この内容は「複数HLSを同期再生する時の手助けになる資料」を目指して作りました。
もしどこかの誰かが、 EXT-X-PROGRAM-DATE-TIME
タグを利用して、複数のHLS動画を同期再生したくなった際には、とても役に立つと思います。
いったいなにがどうなると、そんな状況に陥るのか全く分かりませんが。むしろ陥らないほうが幸せなのでは。
ちなみに、たくさんの人に聞きに来て頂いたので「すごい!複数HLS同期再生仲間がいるかもしれない!」と内心すごいわくわくしていたんですが、 誰一人としてHLS同期仲間に出会えませんでした。かなしい。ただ、AVPlayer仲間には出会え、動画再生の知見を交換したり、 「AndroidのExoPlayer便利じゃね?」という話をしたりできたのは、とても楽しかったです。
去年参加した時もとても楽しかったんですが、スピーカーではなかったので、どうにも物足りない気持ちでした。 「来年は絶対にCfP大量に出してスピーカーで参加するぞ!」という強い意気込みをもち、 今年は全部で4つのCfPを出し、無事にスピーカーとして参加することが出来ました。
これは不思議なんですが、スピーカーとして参加すると「圧倒的当事者意識」が高まることに気づきました。 「せっかく採択してもらったし、ちゃんと発表準備しないとな」、「わざわざ聞きに来てもらうのだから、役に立つ情報をわかりやすく伝えないとな」と思い、何度も資料の構成を練り直しました。 iOSDCという参加するだけで楽しいイベントを、スピーカーという立場から盛り上げるためにはどうすればいいだろうかと考えながら作った資料なので、だれかが楽しんでもらえていると嬉しいです。
ちなみに、会社として用意したノベルティである「LGTM扇子」や「iOSできますよ。Tシャツ」も、そんな「参加者の人達の楽しみをもっと増やしたい」という気持ちから生まれたものだったりします。(もちろん自分一人で考えたわけではないですが)
おはようございます!
— Atom(アトム) (@FromAtom) September 1, 2018
本日も数量限定で「LGTM扇子」を配布してます!
写真のようにピヨピヨしたコードのTシャツを着たピクシブ社員に「コードレビューお願いします」と声をかけてくれた方に、先着でお配りします。
昨日手に入れられなかった方も、ぜひ再チャレンジしてみてください!#iosdc pic.twitter.com/uiaXym8Ljn
これが本当によくて、あまりの良さにちょっとウルッとしていました。
iOSDCスポンサー紹介動画の「みなさまは、人を巻き込み活性化する、iOSDCコミュニティーの一員です。」でちょっと泣きそうになる。 https://t.co/CIXFUlrCZ8#iosdc
— Atom(アトム) (@FromAtom) August 31, 2018
「俺たち、ビジネスでは敵かもしれないけど、審査やXcodeやAutoLayoutに苦しめられながらも、iOSアプリ開発を楽しむ仲間じゃん?」
今年もiOSDC Japanの季節がやってきましたね!ありがたいことに15分トークが採択されたので、登壇します!
プロポーザルには、
ライブ配信サービスが流行っている中、WWDC2017で
EXT-X-PROGRAM-DATE-TIME
タグのサポートが発表されました。これにより、複数のAVPlayerに表示されるライブ映像を同期することが可能になりました。このトークでは、
・複数のライブ映像をズレなく同期再生するノウハウ
・ハマりどころ
・設計のコツ
を実際にプロダクション環境で運用した経験をもとにお話します。
https://fortee.jp/iosdc-japan-2018/proposal/ea691c74-27ed-45ca-9961-287004c2a2e0
と書きました。内容はほぼこの通りですが、完成した資料の目次としては
となりました。
このトークは将来「複数のライブ映像の同期再生を実装するだれか」が困った際に、手助けになることを目指してデザインしました。また、同期再生をする予定がない方でも、動画の再生やAVPlayerに興味がある方にも楽しめる内容になっているかと思います。
登壇は、
となっています。朝イチかつ1発目という非常に緊張する枠ですが、やっていきます。動画再生が得意・興味がある皆さんはぜひ聞きに来てください!そしていろいろお話しましょう!
iOSDC 楽しむぞ〜〜〜。
※この記事は Sequence.flatMap
を使って多重配列をFlattenしていた人向けの記事です。
Swift4.1になってから Sequence.flatMap
がDeprecatedになり、かわりに map
と compactMap
を使うようになりました。これらの使い方や導入経緯はこちらが詳しいです。
さて、 .flatMap { $0 }
を使ってFlattenをしていた人からすると、多重配列をFlattenする方法がなくなってしまいました。
joined()
を使えば良いです。
let multiDimensionalArray: [[Int]] = [[1, 2, 3], [4, 5], [6, 7, 8, 9]] let joinedArray = Array(multiDimensionalArray.joined()) print(joinedArray) // => [1, 2, 3, 4, 5, 6, 7, 8, 9]
よかったですね。
Swift3で flatten()
が joined()
になっていたらしい。知らんかった。
ErgoDox EZ買ってウキウキしてたんですよ。
でも完全に馴染めずに埃をかぶり、前から使っていたHHKB Pro2を使い続けることになりました。馴染めなかった理由としては、
というわけでこうなりました。
ErgoDoxに馴染めなかった男の末路 pic.twitter.com/tcQZLJBYUs
— Atom(アトム) (@FromAtom) July 31, 2018
同じもの2個買えばええんや!キーマップは普通だし、分離式をやめたくなっても1個ずつで使えるしで最強!コスパもErgoDoxよりちょっと高いだけ!勝ったな!
ジョークです
クソコードであることを認める構文ほしい
— ぶんちょう (@yutopp) 2018年7月4日
kuso {
// すみません
}
みたいなのでいいです
これのF#実装が出てきた
クソコードであることを認める構文をF#で実装してみた
— ada (@adacola) 2018年7月5日
ほんとにクソコードであることを表明する機能しかない上に特にテストとかしてないのでこれ自体がクソコードhttps://t.co/VQNlZBjL8n https://t.co/wZZnDfeOOg
せっかくなのでSwiftで書いてみた。
import Foundation @available(iOS, deprecated: 1, message: "[KUSO] これはクソコードです") func kuso(_ block: () -> Void) { block() }
使うときは
kuso {
// ここにクソコードを書く
}
こうやって書きます。
ちゃんと警告がでて便利ですね。
Warningを出したいと思って色々調べてたんだけど、Swift4.2から
#warning("this is incomplete")
と書けば警告を出してくれることがわかった。
ただ、この方法だと #warning
を書いた場所に警告が出てしまって kuso {}
を利用している場所では警告が出せない。なのでDeprecated警告をだす文法を利用して表示しました。
明日から業務で使えない情報でした。
CocoaPodsを利用してライブラリの管理をしている人は多いと思いますが、ビルド時にLibraryのWarningも大量にでて困ることがあると思います。こんな感じで
これでは、自分の開発しているアプリのWarningが埋もれてしまいますね。
inhibit_all_warnings!
を指定してあげれば良いです。公式のドキュメントはこちら
実際に指定しているPodfile
はこんな感じです。
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'sample-app' do use_frameworks! inhibit_all_warnings! # <= この指定を追加する pod 'DTCoreText' target 'sample-appUITests' do inherit! :search_paths # Pods for testing end end
inhibit_all_warnings!
を追加した後に
$ pod install
をしたあとでXcodeでビルドを実行してみると
すごい!なにも表示されなくて、まるでビルドしていないかのようです。実際に開発していれば、ここにはSwiftLintやコンパイラが吐いてくれるWarningが表示されるので便利です。