なんとかするから、なんとかなる

エンジニア関係のことを書きます

iOS UIFontで数字の等幅フォントを取得する iOS How to get a monospace font for digits in UIFont.

English version below. UIFontで等幅フォントを取得する 等幅フォントとは、すべての文字で幅が等しいフォントです。 等幅でないフォントでは1 と8 の幅が全く異なります。その結果、文字が変わるごとにデザインのバランスが崩れることが発生します。 そう…

iOS UITextField でRetrunを押したときにキーボードを閉じる。iOS UITextField How to dismiss the keyboard when user tap a retrun key.

English version below. はじめに 意外と忘れてしまうことの方法。 実はきちんとAppleの公式ドキュメントにも書かれています。 やり方 UITextFieldDelegate に適合する 対象のUITextFieldインスタンスのDelegateを設定する textFieldShouldReturn:を実装する…

RxSwift ObserverとPublishObject, BehaviorSubject

はじめに 今さらながらRxSwiftを試して見ました。 Disposable Observerしている情報を保持しているオブジェクト Disposable.dispose()を呼び出すことで通知の解除が可能 複数のDiposableを一度に処理するためにDisposableBagがある ObserverとPublishObject …

iOS Carthage で"dyld: Library not loaded: Reason: image not found"の対処法

背景 Carthageで Cartfileに記述 例ではGitHub上の"YOUR_LIBRARY"というフレームワークを導入。 github "YOUR_LIBRARY" ~> 1.0 コマンドラインでコードを実行 $ carthage update --platform iOS ビルドしてみると次のエラー発生。 dyld: Library not loaded:…

iOS UITableViewのdeleteRows(at:with:)で落ちる (UITableView deleteRows(at:with:) is crashed)

English version is below. はじめに UITableViewを使っていて、deleteRow(at:with:) を読んだときにクラッシュする問題にぶつかりました。 その解決方法について紹介します。 問題 次のようなコードを書いたときにアプリがクラッシュしました。 func tableV…

iOS Decodableで初期化したのに値が適用されない

背景 Decodableで構造体を初期化した際、値が代入されていなかったので、備忘録。 起きたこと 次のようなコードを書いたときに初期化時に値が入りませんでした。 json形式の値を受け取り、初期化したときに失敗しました。 struct SomeStruct: Decodable { le…

iOSでステータスバーの色を変更する

はじめに iOSのStatusBarの色を変更したいことはよくあります。 でも、やりかたをよく忘れてしまいます。 なので、まとめます。 アプリ全体での色の設定 info.plistで "View controller-based status bar appearance"にNOを設定 appDelegate.swift のdidFini…

iOSでViewControllerのライフサイクルでsuperを呼ぶべき?呼ばなくても良い?

背景 iOSの開発をしていると必ず必要となるViewController。 ViewControllerにはライフサイクルがあります。 ここまでは、普通の話ですがライフサイクル中のメソッドviewDidLoadなどで 親クラスのメソッドsuperを呼び忘れることがあります。その場合大丈夫な…

iOSで.xcodeproj/project.pbxproj ファイルを編集したときにエラーが起きた時の解決方法

背景 Gitでマージがコンフリクトすることはよくあります。 今回は xcodeproj/project.pbxproj がコンフリクトしたときに少し詰まったのでその解決方法を紹介。 起こったこと Gitで xcodeproj/project.pbxprojに手作業で修正したとき次のようなエラーがでまし…

Azure Funcionsをローカルで作成してテストする。

背景 「Azure Functions 開発をローカルで完結させてデバッグしたい」でデバッグする方法を紹介しました。 実はもう少し簡単にローカル実行できる方法を見つけたので再度紹介。 環境 Mac Node.js やり方 func init ”Fuctions App 名” func new "Function名" …

Azure Functionsを速攻で準備してデプロイまでする(Node.js編)

背景 あ、あれ試したいと思ったとき、Azure Functionsって便利ですよね。 ただAzure Functionsを準備するのが面倒なことが度々ありました。 なので、わずか10ステップでAzure Functionsをデプロイまでする方法を紹介します。 環境はMacです。そしてNode.js…

時間計算量の話

背景 プログラマーなら一度はBigO記法を聞いたことがあるだろう。 これはコードのシンプルさ効率の良さを表す1つの指標となっている。 ふとしたことをきっかけにBigO以外にも表記があることを知ったのでご紹介。 BigO記法に似たものたち BigO 学術的に、計…

Xcode「...nib but the view outlet was not set」というエラーが出たとき

背景 xibファイルを利用してCustomViewを作成して、ViewControllerと接続したときに遭遇した問題です。 解決方法 File's OwnerのCustomClassを設定する OutletsのViewとviewを接続する Interface Builderへ行き、~~ViewController.xibのFile's Ownerの上でCo…

JenkinsでiOSアプリをテスト後にレポートを確認する

概要 JenkinsでiOSアプリをテスト後にレポートを生成する方法 少し前に試した内容なので少し情報が古いことがあると思います。 背景 iOSアプリをテストする場合、xcodebuildをコマンドラインで実行することでテストができる。 ただし、xcodebuildで実行した…

QnA Maker とLUISについて

QnA MakerとLUISの違いについて、よく混乱するのでまとめてみる。 QnA Maker FAQなど質問に対して、簡潔に回答できる。 FAQに特化しているため、汎用的にではない。 SDKを見る限り、ユーザの入力を直接受け取り、そのままDaialogにて返答までする。 LUIS ユ…

Azure Bot Service のNode.js SDK概要

Azure Bot ServiceのNode.js SDKに関するドキュメントを読んだまとめです。 需要が高そうなら、真面目に記事に直します。 基本形 bot.dialog("something", function(session) {"MY_CODE"}).triggerAction({"MY CODE2"}); triggerAction そのdialogを着火する…

Azure Bot ServiceのMessages概要

Azure Bot Serviceのメッセージに関するまとめです。 需要が高そうなら、真面目に記事に直します。 session.send("String") 基本的なメッセージの送信 builder.Message(session) textFormat を指定したメッセージの作成が可能(Markdown形式などに対応) 詳…

Azure Bot ServiceのStorage概要

Azure Bot Serviceのストレージに関するまとめです。 需要が高そうなら、真面目に記事に直します。 In-memory data storage 一時的なメモリ。Botが再起動するたびにクリアされる。 var inMemoryStorage = new builder.MemoryBotStorage(); var bot = new bui…

Azure Bot Serviceの概要まとめ

AzureのBot Serviceに関するMSDNドキュメントを読んで試して見ました。 おもにNode.jsのSDKで試しましたが、C#でも概念的な部分は同じです。 需要が高そうなら、真面目に記事に直します。 Bot BuilderとBot Frameworkについて Bot Builder Bot開発のためのSD…

iOSのUIColorをカラーコードで設定する

UIColorをカラーコードで指定したいときって多いですよね。どうして公式対応してもらえないのだろう。 私はいつの以下のようなExtensionで拡張しています。 extension UIColor { /// Hex表記でカラーを生成 /// /// - Parameters: /// - hex: カラーコード /…

iOS でCarthage updateでエラーが発生したときの対処法

Carthage updateをしたときに次のようなエラーが発生した際の対処法 A shell task ("YOUR_PRODUCT_PATH" CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES -list) failed with exit code 72: xcrun: error: unable to find utility "xcodebuild",…

iOSのメインスレッドに処理を依頼する

iOSでメインスレッド、UIスレッドに処理を依頼したい場合の書き方です。 よく忘れてしまうので、備忘録。 メインスレッドで実行する DispatchQueue.main.async { // ここにメインスレッドで実行したい処理を書く } メインスレッドで実行されているかの確認 i…

iOSのUINavigationControllerを利用した画面遷移まとめ

UINavigationControllerを利用した、画面遷移にメソッドのまとめです。 画面を閉じる/戻る dismissViewController Modalダイアログで表示された場合に画面を閉じる popViewController UINavigationControllerで管理されている場合に画面遷移を戻る popToRooV…

C#の非同期処理まとめ

C#

C#で非同期処理する方法がいろいろあって混乱したので、勉強してみました。 非同期処理について こんなコードは不要 Task.Run(), Task.Factory.StartNew(),Task.Start() Task.Wait(), Task.Result Threadクラスを直接使う じゃあ、どうする? 実装編 Asyncた…

C#でStringの中に変数を混ぜる

C#

Stringの中に変数を混ぜるとき string data = "pen"; string.Format("This is {0}", pen);

C# でクラスのメンバ変数のGetterの書き方

C#

C#のGetterの書き方 public string Hoge { get { return str; } set { this.Hoge = value; } }

C# のコンストラクタ内部でベースクラスのコンストラクタを呼ぶ

C#

class Sample { // ベースのコンストラクタ public Sample() { System.Console.WriteLine( "Sample()" ); } // 引数1コのコンストラクタ // →ベースのコンストラクタを呼ぶ public Sample( int ivalue ) : this() { System.Console.WriteLine( "Sample( int …

初めてのASP.NET MVC

初めてASP.NET MVCを触ってみたときの入門的な内容 ASP.NET MVCを勉強したときのメモ View .CSHTMLに書かれておりC#記法とHTML記法の共生が可能 Razor構文を利用する C#記法で記述する場合は、C#部分前に@をつける @foreach (var item in Model) { <tr> <td> @Html</td></tr>…

Unityのステンシルバッファを使ってみた

Unityのステンシルバッファ(stencil buffer)を使ってみました ステンシルバッファ ステンシルバッファとは レンダリングを実行する際に、各ピクセルに対してレンダリング実行時の条件をバッファしておくもの。 あるピクセルに対して、レンダリングを許可する…

UnityのScrollViewの使い方

UnityでスクロールViewを使ったときのメモ ScrollViewの使いかた Scroll View pivot scrollViewで表示する位置 Scrollbar Horizontal/Vertical スクロールバー水平/垂直方向を制御する。 これが無いとContentに追加しても表示されない(なぜ?) Content Scr…