Karabiner-ElementsでESCやCtrl+[キー押下時に日本語入力を解除できるようになっていた
タイトルで全て言った。
普段からメモにMacVimを常用してるのだけど、Karabiner-Elementsになってから日本語モードからの切替時に いちいち日本語IMEを自分で解除しないといけなくて、手間だった。
が、気づいたらこれをさっと実現するCustom設定が使えるようになってた。。。!
実は結構前からっぽい。 すごく幸せになれる設定だったので、早速入れてみた。
設定方法
Karabiner-Elementsの[Preference]->[Complex Modifications]
下部の[Add rule] -> [Import more rules from the Internet(open a web browser)]
これで、 Karabiner-Elementsの追加ルール群のページ が開くので、
そこで [International (Language Specific)] -> [For Japanese (日本環境けの設定) (rev 3)] を import する
再びKarabiner-Elementsの[Add rule] 画面を開き、
escキーを押したときに、英数キーも送信する(vim用)
Ctrl+[を押したときに、英数キーも送信する(vim用) (rev 2)
の2つを Enable
にする。
これで、vim上で挿入モードを抜ける際に日本語入力を解除できるようになる。
快適で涙が出るっす。
補足と参考
この設定は別にvim専用の設定にはなっていないので、当然他のアプリ上でもESC叩くと英数キーが送信される。
個人的には困らないからいいかなーと思ってるけど、もし対象のAppを絞りたい場合には以下のように 自分で complex modificationの設定を書いて追加することが可能ぽい。
docker & Kubernetes on Mac の環境構築 at 2018初頭
ここしばらくインフラ方面の知識updateがなく、久々にdocker周りから復習するかーと思い立ってみました。
が、進化の速さとか大人の都合とかによって1~2年のうちに状況が2転3転していたようで様々な情報が入り乱れていて、入門するにしても「で、どれを信じればええねん」という感じに。
というわけで自分なりに状況を調べて、「少なくとも2018年1月現在において、こうセットアップしてくのが便利かつ標準そう」というのを手順とともにまとめました。
目指す環境
- Mac上でdocker、およびKubernetesのローカル環境を構築する
リモートのdocker / Kubernetes はcliの docker / kubectl を使えばいいので、ひとまずこれだけ。
先にまとめ
先にまとめると、以下をやっとけば良い。
% brew tap caskroom/versions % brew cask install docker-edge % open /Applications/Docker.app -> Preference -> [Enable Kubernetes]
もう少し状況説明
Dockerについて
- 現時点では
Docker for Mac
を利用するのが便利かつ標準 - homebrewの場合は
homebrew-caskのdocker
を使うのが正解- homebrew本家が持ってる
docker
fomulaは古いので使わない
- homebrew本家が持ってる
- 現時点では
Kubernetesについて
Docker for Mac
の Edge版から入ってくるKubernetesを使うのが良さそう- 多分まだ世の中は
minikube
が標準 - Docker for MacのKubernetesサポートによって変化が始まってて、どちらが標準をとるかはまだ不明
- でも手軽さ分こっちかなーって思うので採用した
- 多分まだ世の中は
- caskのversionsに
docker-edge
があるので、当面はこれが楽
ちなみにKubernetesのInstall
これをチェック入れて、進めると
これで完了。
最後に
Kubernetesとかkubectlの発音って、DockerCon の動画見てると キューバネティス
キューブコントロール
って呼んでて、僕も今度からそう呼ぼうって思いましたまる
iOSDC Japan 2016 に参加してきた
iOSDC Japana 2016、まるっと一日参加してきました。 すごくたくさんの人と熱気で、トークも面白いものがぎっしり詰まっていてとても充実したイベントでした。
スタッフならびにスピーカーの皆様、素敵なイベントをありがとうございますっ!\\\٩( 'ω' )و ///
LTはペースに追いつけずにまとめられなかったんですが、今日聞いてきたトークはそれぞれログを取りました。 (資料が貼ってないものは、見つけ次第足します)
色々新しい情報とか参考になる話を聞けたので、明日は気になるところを少し深掘りとかしてみようかなー。
- iOSDC Japan 2016 参加メモ: A-1 - Handling rich text in Swift
- iOSDC Japan 2016 参加メモ: A-2 RxSwiftは開発をどう変えたか
- iOSDC Japan 2016 参加メモ: A-3 iOS 10時代の新しいCollectionView使いこなし術
- iOSDC Japan 2016 参加メモ: A-5 Reactive State Machine
- iOSDC Japan 2016 参加メモ: A-6 ドッグフーディングしやすい環境を整える
- iOSDC Japan 2016 参加メモ: A-7 メモリー管理の嬉しいバイキング料理
- iOSDC Japan 2016 参加メモ: A-8 デザイナーにStoryboardをお任せする技術
- iOSDC Japan 2016 参加メモ: B-9 Swiftのこれまでの動向のまとめと今後のさらなる発展の期待
- iOSDC Japan 2016 参加メモ: A-10 SwiftでJavaScript始めませんか?
- iOSDC Japan 2016 参加メモ: A-11 Xcodeで快適なデバッグライフを追い求める
iOSDC Japan 2016 参加メモ: A-11 Xcodeで快適なデバッグライフを追い求める
Xcode
クラッシュしたらAppDelegateだった問題
- もしくはアセンブラだった問題
Exception Breakpointを追加
Breakpoint追加時に
Exception Breakpoint
を選んで追加- ただし、Exception前提で書かれていると意図と違うタイミングでbreakしてしまう
- storyboardがなければフォールバックする、とか
- ただし、Exception前提で書かれていると意図と違うタイミングでbreakしてしまう
Diagonosticsを設定
- 不正なメモリ操作を検知
- dynamic library
- Edit Schemaから設定できる
- Enable Zombi Object
- Enable Address Sanitizor -> パフォーマンスは下がる
- アセンブラレベルまでクラッシュした場合、これがあれば追える
どのViewControllerかわからない問題
新しいプロジェクトに入ると。。。
Symblic Breakpointを追加
- SymbolにviewWillAppear / viewDidLoadなどを追加
- commandで
bt 0
するとでる
- commandで
- viewControllerで設定しておかないと、Symbolic Breakpointが効かない
- SymbolにviewWillAppear / viewDidLoadなどを追加
Share Breakpointすると、チーム間で共有できる
起動時に特定のViewControllerにしたい問題
- デバッグ時に深いページ開くの辛い。。。
- Environment Variables
端末のログやファイルを取得したい問題
実機のログやRealmをみたい
- できるけどめんどくさい
LLDBを使って該当ファイルをSlackに送信
- breakpointでbreakしてコマンドを打つ
- gistに公開しました
./llidbinit
の中に呼び出しを入れておく
まとめ
- 快適になると良いね!
QA
Closureの中でオブジェクトを参照する方法とかありますか?
- lldbが巧くフレームを取れてないのが悪そう
- 2連発で取ると巧く行くことはある。。。けど基本諦めてる
Breakpointとlogが多すぎてわからなくなるのはどうしてますか?
- Loglevelを切り替えられるようにしたりして、フィルタしてる
iOSDC Japan 2016 参加メモ: A-10 SwiftでJavaScript始めませんか?
JavaScriptすきですか?
- SwiftからJavaScriptが使える!
- JavascriptCore
熊谷さん
- 横浜の方で勉強会してます
- ネットラジオも始めます
SwiftでJavaScript
- JavaScript
- 手軽に書けるスクリプト言語
JavaScriptCoreとは
- JSのランタイム実行環境
Swiftとの相互運用が可能
使用例
ちょっとまった
基本的な使い方
- JavaScriptCoreをimport
- JSContext生成
- JSコード実行
- evalの結果はcontextに溜まっていく
- 実行結果をSwiftで受け取る
- 返り値をSwiftで受け取れる
変数の扱い
JSValueで表現
- toTypenameメソッドでSwiftの型にできる
- isTypenameプロパティで判定してから取り出せる
オブジェクトもJSValueで
- swift側からforPropertyなどで取り出したりできる
JavaScript API
- JSの基本的な組み込み機能だけが備わっている
DOMなどの高度なものはない
自分の手でAPIを構築していく
- やり方は色々
- JSからでもSwiftからでも
- やり方は色々
変数/関数/オブジェクトをJSで定義する
- 普通にeval
Swiftで定義する
- setObjectすることで、JS上で参照できるようになる
- 参照型だと共有しちゃう
関数をSwiftから取り込む
- クロージャをコンテキストに設定する
- AnyObjectにキャストしてsetObjecすると、JS上から呼び出せる
Swiftの型をJSで使う
Swiftの機能をそのままJS上で使える!
コードを書きやすくする方法
- 普通に書いてると読みづらい
- プロジェクトにJSファイルを組み込んで、Bundleから読み込んでStringにしてevalに流してあげれば楽にできる
まとめ
- JSをSwiftから簡単・自在に扱える
- 審査通るかは、後日!
QA
ECMAScript 2016は対応してる?
- 行けそう
JS側でSwiftのオブジェクトを参照した場合、開放されたオブジェクトの扱いはどうなる?
- JS Managed Valueあたりを見るとわかるかも
React Nativeは使ってたはずなので、審査は通りそう
iOSDC Japan 2016 参加メモ: B-9 Swiftのこれまでの動向のまとめと今後のさらなる発展の期待
@_mono
小野 将之さん Join.us の中の人
Swiftの変遷
これまでをおさらい
2014/06公開
2015/09
- Swift 2
- 主な不満点が解消
- クラッシュ頻度低下
- 差分ビルド対応
- 言語仕様が十分揃ってきた
2015/12/03
これからの話
Swift 3.0
- オープンソース化初のメジャーアップデート
Swift 2.2
- 3.0のプレリリース的扱い
Swift 3のアップデート内容
最後の大きな破壊的変更
- 微妙な言語仕様を全面見直し
あらゆるものをSwiftyに
互換性問題
Swiftyにしていく
- Objective-C由来のインターフェースの見直し
-
- Objective-Cとして正しく書かれたAPIを自動変換
Foundationフレームワークのクラスに対応したSwiftの値型が追加
- C言語APIをSwiftっぽく変換
- 古いライブラリでもオブジェクト指向っぽくかける
最後に
- 連載もよろしくね!
QA
iOSDC Japan 2016 参加メモ: A-8 デザイナーにStoryboardをお任せする技術
- はてな 加藤さん id:cockscomb
背景
今回のゴール
- デザイナーがStoryboardを編集するワークフローの獲得
- チームの生産性向上
導入
- チームや個人のモチベーション重視
- やる気がなさそうならさっさと諦める
- 開発環境をセットアップ
- 手取り足取り教える
- 実際に触れてもらう
Interface Builder
- 意外といろいろ新しい要素がある
デザイナ的には案外わかりやすい
登場する要素について
- View
- ここはわかりやすい
- ViewController
- 黄色いアイコンのやつがViewControllerだよ!
- Viewとペアになってるよ
- AutoLayout
- これが。。。。
- View
UIKit User Interface Catalog
- これを教えてあげるのが良い
- ViewController Catalog for iOS
- ちょっと古い
AutoLayout
教えるべきことがたくさんある
- Layout Constraint
- Intrisic Content Size
- Priority
- Error / Warning
NSLayoutConstraint
- 制約の式の中に対象のattributeなどを設定すると考える、というのを教えてあげる
- 揃える、という意識とConstraintは対応してるので意外と行ける
Intrinsic Size
- 固有のサイズって話でわかる
Priority
- 伸びにくさ、ちぢみにくさのPriorityのことを徐々に教えてあげる必要がある
- 絵で説明する
AutoLayoutのエラー
- エラーがあると怒られる
- どういう時に怒られるか知っておいてもらう
Adaptivity
- Dynamic Text
- Size Class
- Trait Collection
ここまで学ぶのにどこまで大変か?
ワークフロー
- アプリの機能が企画される
- デザイナーがレイアウトを決める
- エンジニアが実装
- デザイナが細部を調整
- コードレビュー
Make App Designable
- IBDesignable
- Storyboardで見れる
- IBInspectable
- Storyboardから値を設定できる
ヒント
- 前提を共有する
同じドメイン知識を共有する
- サービス
- プラットフォーム
- ユーザーインターフェース
用語をきっちり揃える
独自のViewをたくさん作る
- 再利用性のあるコンポーネント
- パラメータを @IBInspectable
- 最初から作り込み過ぎない
よく作る例
- Border
- 線の幅を指定できたり
- 物理pixcelにしたい場合、とか
- AttributedTLabel
- BorderedButton
- Border
エンジニアにとって大事なこと
- UIKitについて学ぶ
- 知らないことは意外と多い
- Storyboardを巧く管理する
- 分割は必須
- コンフリクトは最大の敵
- 同じ所を同時に触らない
- デザイン調整は後で、ぐらいでも良い
- デザイナーを手助けする
- 忙しい
- 丁寧なサポートを心がける
- レビューがあると安心感が出る
まとめ
- 開発チームが協力することで実現
- 難易度は高め
- 大きなメリット
- 同じ言葉で成果物をコミュニケーションできる
- デザイナーがトライアンドエラーしやすくなる
QA
Storyboardのレビューはどうしてる?
- 複雑な場合はcheckoutしてアウトラインで見てみたり
ContainerViewを多用したい場合はどうしている?
- エンジニア側でContainerを作ってStoryboardを分割してしまう
- 中身だけお願いします、みたいな