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

面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

フリーのApple IDアカウントを使ってXcodeからアプリを実機転送できることで、App ID登録時にエラーを出してしまう可能性の問題

要約 Xcode7からApple IDアカウントがあれば、有料の開発者登録を行わずとも実機にアプリを転送できるようになった その結果App IDを無作為に作成することができ、アカウントが違っても同じApp IDを作成することはできないので、何故かApp IDの登録でエラー…

iOS(Swift)から3ステップでMastodonに画像付き投稿を行う

まえがき 前回は、登録、ログイン、投稿の3ステップを記載 前回の延長線上で画像付きの投稿もやってみよと思い立つ 画像やmime/typeは固定で記述してるので適宜変更してください。 今回もmastdn.jpを使用しています。適宜変更してください。 タイトルのこと…

Kaspersky Internet Security(for Mac)は使い物にならない

導入理由 Macを使うようになったのもここ4〜5年の内で、今だメイン機Windowsだったりする。 PCゲームをすることもあって、自作PCも組むこともあり、必然的にWindowsがメインになるわけ。 そしてPCゲームする時セキュリティソフトは軽く、検知率が高いほうが…

iOS(Swift)から3ステップでMastodonに投稿を行う

流行りのMastodonのiOSアプリがAmaroqというアプリしかないため、 作ってみようかなと思い立った。 Qiitaにも投稿済みその過程で必要なログインと投稿の処理を記載する。 正確には3ステップ必要。 全部POSTのみでいけるため、下記の処理を使用今回はmastdn.j…

Swiftでsuper.init()前にプロパティを初期化しなければいけない理由

前提 Swiftで独自クラスを作成してinitメソッドを書く時、 この独自クラスが持つプロパティの初期化をsuper.init()の後に行って エラー( Property 'self.property' not initialized at super.init call )に会う人は少なからずいると思う。 Objective-Cでは、…

引っ越しました

今まで引っ越したいと思っていてずるずる生活してたけど、 1月末から急に引っ越しに意欲的になり、引っ越し先を決めて引っ越しを完了まで1月程度で行った。そのために2月中はずっとドタバタしてて記事を書くに書けない日々。 ようやく2月末に引っ越しを終え…

Amazonで買い物した総額を省みる

とあるサイトでAmazonで使った総額いくらかという話題があったので、 気になり自分も調べてみた。 年 注文回数(回) 合計金額(円) 2006 1 3,585 2007 1 25,800 2008 3 24,271 2009 6 29,626 2010 8 25,515 2011 11 79,021 2012 13 86,035 2013 21 117,603 201…

ViewControllerのpresentedViewControllerを辿る際の落とし穴

iOSのプログラムを書いている際、最前面に表示されているViewControllerを取得したいと思うことがある。 この時、rootViewControllerからpresentedViewControllerがnilになるまで取得して、 最前面のViewControllerを求めることを少なからずやったことだと思…

新年とっくに明けましておめでとうございます

(遅くなりましたが)㊗️新年明けましておめでとうございます はてなブログを始めて1年経ったなーと感慨に耽ってみて、 最初の記事を見たらGW明けだったので、全く1年経ってませんでした。今年の目標は、 1. はてなブログをもう少し細かく書く(目指せ週1ペース…

DS215jとMacの接続プロトコルはafpの方が速いかもしれない

環境 タイトル通りなのだが、うちの環境を晒すと下記な感じ。 ・WindowとMacを併用 ・SynologyのNAS「DS215j」を使用 (構成はWDのRed4TB×2でSynology Hybrid RAID) ・NASは2台の橋渡し兼音楽や画像等のデータベース ・Windowsからはネットワークドライブの割…

JavaScriptでTextBoxに入力された内容からリンクを生成

仕事でURLSchemeのテストをする際、 TextBoxに入力された値からリンクを生成したかったので調べて作ったのを記載。 <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <header> </header> <body> <form name="form1" id="id_form1" action=""> <input name="textBox1" id="id_textBox1" type="text" value="" placeholder="文字列入力"/ size="45">…</form></body></meta></html>

Swift2のguard let構文で順序を意識せずクラッシュする書き方をしていた話

Swift2のプロジェクトの話 NSTimerを扱う処理を書いており、userInfoにBool値を渡して、後から安全にキャストして取り出す処理をguard letを使って下記のように書いていた。 // Swift2 // before func hoge(timer: NSTimer?) { guard let timer = timer, fla…

PlaygroundでPage追加

小ネタ程度の話。 自分が知ったのは少し前だったので、 少数ながらも意外に知らない人もいるのでは?と思ったので、書いておく。 Playground自体Swiftの記述でテストや検証に簡易的に扱えることもあり、 頻繁に使うと思うのだけれど、色々書きすぎてプレビュ…

Scheme呼び出しで://の//をリンク形式でなら省略することができる

スマホアプリはでよく使う機能にSchemeがあると思う。jp.co.hoge://paramのような形式でアプリにあらかじめ登録しておくと、 スマホのブラウザから上記アドレスを呼び出すことでアプリを起動させ、 パラメーターによって処理を行わせる。このSchemeで//を省…

NSTimerでinitとscheduledTimerWithTimeIntervalは別物ということを知った話

NSTimerで処理を書いた際、repeatsをtrueにしているのに繰り返し処理してくれないで悩んだことがあった。initメソッドの public /*not inherited*/ init(timeInterval ti: NSTimeInterval, target aTarget: AnyObject, selector aSelector: Selector, userIn…

GIFアニメなんて古い!時代はAPNGだ!(12/04追記)

画像アニメといえば、昔から知られたGIFアニメが有名で、 アニメーション画像が貼られていたらまず誰しもがGIFアニメだと思うことでしょう。だがしかし!ITの世界は日進月歩で、GIFアニメなんて数十年前の代物だし古い! 今はアニメーション画像の形式にAPNG…

購入予定や気になっているMacツール(アプリ)

medium.comこの記事を見て、"Tower 2"と"Kaleidoscope"が欲しいなーと思った。 セール時に買い忘れないようにと、よくアプリ名忘れるのでメモがてら記載。 "Pixelmator"は買ったし、"Graphic"や"PaintCode 2"、"Sketch"は買う予定だけど、タイミング伺ってい…

PlayStation VRの体験

PlayStation VRの1次予約〜3次予約が見事Amazonとヨドバシで全敗したものの、 半分自棄になって発売日前日からヨドバシカメラに並んで購入しました。気になっていたものの、実際体験としてどうなのだろうという興味本位から VR界では安くとも値段としてはそ…

SourceTreeでgit-svnのリモートが表示されなくなった問題

現場ではSourceTreeを用いてgit-svnでバージョン管理を行っています。 そんなある日、リモートにあるSubversionの名前の横にある▷が表示されなくなっていました。以下加工画像によるイメージ before: after: これではサーバからプルもプッシュ何もできません…

Slackでアンケート機能を使う

現場の作業で、ルールを決めたり、コードの書き方に迷った時にこういう書き方はありかなしか というのを聞きたいなーと思うことがしばしばある。チームでSlack使っているし、アンケート形式で聞けたら解決できそうかなと思い、 Slackでアンケート機能を使う…

UIImageViewを継承しているCustomViewはdrawRectを通らない

うっかり忘れるので書いておく。タイトル通り。 UIViewを継承しているUIImageViewなので、 LifecycleとしてdrawRectを通りそうなものの、 UIImageViewを継承しているCustomViewは通らないため 処理を書いても意味がない。 参考 stackoverflow.comqiita.com

あると便利なextension"find"

Swiftで色々便利になったり、融通が効きやすくなったけど、 個々の状況では不便だな〜とか、こういうメソッドあったらいいのに〜と 思うことも多々ある。そんな時はextensionして使い勝手良くしてしまえばいい。 現場で教えて貰ったextensionで便利だなーと…

Swift3.0で繰り返し処理の速度比較

処理速度の速い今となっては意味があるかわからないが、 とりあえず気になったから検証してみる (計測方法が合ってるか不安あり) 比較項目 for-in (単純列挙) forEach (単純列挙) enumerated (index付列挙) enumerated.map (index付列挙) 実験環境 Xcode8.0 …

拡張子"xip"を調べてみた

Xcode8のbeta版配布時、サイトからDLしてくると.xipという拡張子でファイルを取得してくる。 特に気にせず、ダブルクリックで開けていたのできにしていなかったが、改めてどういう形式なのか気になり調べてみた。terminalでman xipと打つと下記のように説明…

iOS10でアプリ起動時にアプリのアイコンが拡大表示される現象

iOS10でアプリ起動時(Launch Screen)にアプリのアイコンが拡大表示される現象に遭遇したのでまとめときます。 <発生条件> iPadのみ (手持ちのiPhone6sでは発生しなかった) アプリのprojectにLaunch Screenを設定していないでBuildしている 現象の見た目は…

UIImageのRenderingModeのサンプルコード

1枚の画像で色だけ変えて使いまわしたいと思ったものの、 色の数だけ画像を用意するのも大変だし、動的に色を変えるのも難しいと思い、 いい方法がないか調べたところ、UIImageにRenderingModeなるものが存在することを今更知った。今回下記画像を用意し、実…

ATS(App Transport Security)を"Xcode8 GM seed"+"iOS10 GM seed"でテストしてみた

iPhone7が発表され、Xcode8やiOS10のGM seedも来ましたね。 いつものごとく、テストしてみました。 実質リリース版と同じなのでテストとしてはラストになると思います。 テスト方法 テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記…

AVAudioPlayerで音が鳴らなかった問題

結論:インスタンスはプロパティで保持しろ do { let player = try AVAudioPlayer(contentsOfURL: fileUrl) player.volume = 1.0 player.numberOfLoops = 0 guard player.prepareToPlay() else { return } player.play() } catch let error as NSError { pri…

AppleWatchのwatchOSをβからstable(安定版)に戻す方法

結論:AppleSupportに送ってやってもらうしかない… iOSみたく、復元とかからできるのかと思ってたけど、予想外だわ。 βからそのままStableにアップデートできるならいいんだけど…前iOSで出来なかったような記憶があるから、もしかするとwatchOS3β入れてる自…

deferを正しく理解していなかった

使い方次第では便利なdeferだけど、理解しているようでやや理解していないというか勘違いしていた話。 // defer使用方法 defer { // 後から行いたい処理 } 下のような書き方してて、ふと処理Aと処理Bどちらが後から処理されるんだろうと思った。理解している…

AutolayoutのconstraintもIBOutletでソースに関連付けれる

StoryboardからUIViewやUIButtonをcontrol+ドラッグ操作でソースに関連づけて、UIをStoryboard、内部処理や動的変更をソースで行える。これがconstraintも同じことできて、状況に応じて動的変更ができると今さならがら知った。Autolayoutもちゃんと覚えれば…

Xcode7でiOS10をデバッグ実行する方法

結論:Xcode7パッケージの内容を表示して、Xcode8βのパッケージ内容からiOS10のDisk Imageをコピーしてくる Disk ImageがあるPATH: Xcode/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/ Xcode8のstable版が出る直前だけど、Xcode7を使って…

ATS(App Transport Security)を"Xcode8 beta6"+"iOS10 beta6"でテストしてみた

夏期休暇でだらけている間にXcodeβ5、β6と出ていたので、生活を戻しつつ検証記事含めもろもろ書いていこうかなと。 とりあえずβ5やる意味がないので、β6をいつも通り検証してみました。 テスト方法 テスト方法は、プログラムの使い回しで基本今までを踏襲し…

Lightningケーブルのイヤホンが気になったので買った話

開発とは大きく離れた話。音楽を日常的に聞くので音質に少しこだわろうと思って、音質をCDと同等以上で取り込むためALACで曲を取り込むようにしたわけですよ。 可逆圧縮のロスレスなら少なくとも音質の劣化なく取り込んで保存しておけると。 FLACにしなかっ…

ATS(App Transport Security)を"Xcode8 beta4"+"iOS10 beta4"でテストしてみた

いつも通りbeta4が出たので検証してみた。 テスト方法 テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記赤字が変更点となります。 iOS10は、iOS10.0 beta4を使用 iOS9は、iOS9.3.3を使用 ATSは、最初Xcode7BuildのipaとiOS9の組み合…

ATS(App Transport Security)を"Xcode8 beta3"+"iOS10 beta3"でテストしてみた

今回は、beta3が出て早々記事にしてみた! どうせ結果は、beta2と変わらないんだろうなーと思って検証してみたが…前回のXcode8.0 beta2の追記からhttpによるLANへのアクセスも検証に加え始めた。 テスト方法 テスト方法は、プログラムの使い回しで基本今まで…

ATS(App Transport Security)を"Xcode8 beta2"+"iOS10 beta2"でテストしてみた(追記)

前回、"Xcode8 beta1"と"iOS10 beta1"でATSと新しいKeyNSAllowsArbitraryLoadsInWebContentの調査したが、想定と違う結果になり、バグだったのでは?という結論に至った。 beta2リリースから1週間経ってしまったが、beta2で改めて確認してみた。今回NSAllows…

Swiftで値が含まれるかif文で判定する方法

qiita.com上記記事をひょんなことで知って、そんな書き方もあるのか!!と目から鱗状態になり、 記事が少し古いから今のSwiftで使えるか確認しつつ気になったことをPlaygroundで検証してみた。 (たぶん自分がまだ無知なだけで、Swift慣れている人は知ってい…

Amazon Prime めぼしいものリスト (自分用)

Amazon Prime めぼしいものリスト(買うとは言っていない) 07月12日 0時〜 Microsoft Office Personal 2013 [プロダクトキーのみ] [パッケージ] [Windows版](PC2台/1ライセンス)出版社/メーカー: マイクロソフト発売日: 2013/02/07メディア: License クリック…

Mac向けのはてなブログ用エディタ"mocha"

Mac向けのはてなブログ用エディタ"mocha"がMac App Storeでリリースされたようです。 新規リリースキャンペーンで今なら無料らしい。まだ、はてな記法には対応していないものの、対応予定ということで、先にDLしていずれ使うことになるかも?! オフラインで…

iOS10+FirebaseでPushNotificationの最小実装

iOS10でPushが大きく変わるってことで、以前にちょろってどんな実装になるか試そうとしたことがあったけど、 時間都合により実装できずに終わった。時間が取れたので改めて実装する。 また、前回やろうとした時、Parse.comからPushを送るテストをしていたが…

MacとWindowsを並行使用するのによさそうなロジクールのキーボードK780

昔いた現場では、WindowsとMacを同時に使用する環境で、キーボードとマウスがそれぞれにあって机の上がごちゃごちゃしてた。 その上、たまに操作も間違えたりとややこしかったり。なんか7/1からロジクールから出るキーボードが3台登録しておいて、瞬時に切り…

ATS(App Transport Security)を"Xcode8 beta1"+"iOS10 beta1"でテストしてみた

developer.hatenastaff.com この記事に触発されたこと、愛用するKinoppyがiOS10βで一切通信が正常に行えなかったこと、そのあたりでATS(App Transport Security)の振る舞いが気になり実機でテストしてみた。気になったこととして Xcode7系でBuildされている…

iOSアプリの申請時に画像関係で引っかかった箇所

何度かiOSアプリの新規申請や更新申請を経験していて、慣れているもののそれでもたまにちょっとだけミスしてエラーになることがある。 現在プライベート開発で作成したアプリの1.0版が完成したので、申請を仲間内で協力して行っていたのだけど、 スクリーン…

怠け癖のあるあなたのための記事まとめ

自分酷い怠け癖があるんで、記事を参考に改善目指したい…www.lifehacker.jpwww.lifehacker.jpwww.lifehacker.jpwww.lifehacker.jpwww.lifehacker.jp

UIView(とおまけでUIViewController)のLifecycle

UIViewControllerのLifecycleは馴染み深く、よく使うしわかりやすいので覚えているから困らないけど、たまにUIViewのLifecycleの知識が必要になるときがある。 名前と処理と呼ばれる順序が脳内で一致していないので、ひとまず順序だけでもまとめておこうと思…

iOS9系のiPadで不可解なフリーズ現象

iOS9系のiPadで不可解なフリーズ現象に遭遇し、原因はわからないものの解消することができたので、 今後同じことに遭遇した時のために、備忘録として記載。 最小限のテストプロジェクトで試してみたが、再現できなかった。 発生した条件 iOS9のiPad端末(ただ…

WWDC2016のページのまとめ(2/2)

1ページに収め切るのきつかったので、WWDC2016の情報を分割してまとめ。 基本自分の興味と関係がありそうなところを抽出。 WWDC2016 Video WWDC 2016 - Videos - Apple Developer macOS Sierra developer.apple.comdeveloper.apple.com developer.apple.comd…

WWDC2016のページのまとめ(1/2)

WWDC2016の発表から時間それなりに経ったし、いい加減情報に目を通しておきたいところ。 ざっと興味というか覚えておかなきゃなーと思ったのは、Notificationか。以下、自分用にWWDCのリンクまとめ macOS www.youtube.comwww.youtube.comwww.youtube.com iOS…

疲れている人のためのLifehacker

どうにも疲れて、平日のどこかで帰ってきてから仮眠をとらないと生活に支障をきたすことが…。 体力が足りてないのもあるけど、疲れがとれないことも原因かな。 あと睡眠時間が5〜6時間っていうのは、記事見る限り足りてないみたいね。www.lifehacker.jpwww.l…