本は絶対聞いた方がいい

読書した方がいいという定説がありますが、スマホがあり、インターネットがあり、コンテンツに溢れるこの時代に読書って本当に必要なんでしょうか?僕は読書が苦手で、なんとなく本を読みたくなって買ってみてもだんだん斜め読みになって最後まで到達することがほとんどありません。そこで、もう2年くらい使っているのがaudibleというオーディオブックです。オーディオブックとはその名の通り、耳聞く本です。例えば僕のお気に入り...

続きを読む

さくらインターネットのSSL更新でめっちゃ苦労した件

SSLの更新は1年に1回だけだから前回のことを忘れて毎回苦労する。今年も苦労したので苦労ポイントをまとめておく。全体の流れはこちらのサイトが分かりやすい。サーバー証明書をどこに置けばいいのかなんか色々手順を進めていくと上図のような画面になる。これ、待っていれば勝手に処理が進むのかと思って待っていたらそういうことではなかった。fileauth.txtという認証ファイルがダウンロードできるのでそのファイルをhttp://申...

続きを読む

NISAについて調べてみた

NISAで株取引をはじめようというひとは大抵株に関して素人だと思う。ということはNISAに関してはすごく優しく説明されていないといけないのだけど、どのサイトをみてもなにか足りない部分があって、1つのサイトで説明が完結しない。そこで、NISAについて自分が疑問に思ったことをまとめてみようと思う。他のサイトでもわかることは割愛する。※少しずつ書き足していきます「120万円まで」って何のこと?NISAの口座なら年間120万...

続きを読む

「殺戮にいたる病」 我孫子武丸

はじめに解説や要約ではなく長い小説をショートストーリー化できないか。ということで我孫子武丸の「殺戮にいたる病」をショートストーリー化してみる。この小説は叙述トリックに定評がある。殺戮にいたる病蒲生稔は普通のセックスには満足できずにいた。もっと愛を感じられるセックスはないのか。そして稔は恐ろしいことを思いつく。死体を相手にセックスするということだ。ある日、自分が通う大学の学食で見かけた1人の女子大生...

続きを読む

人のアイデアは手料理と同じ

自分への戒めも込めて書くが、「人のアイデアは手料理と同じ」だから丁寧に扱わなければいけないと最近強く思った。恋人や家族、友達が手料理を振る舞ってくれた時、食べて開口一番「ていうか、人参おおきすぎない?なんかこういう味、よくあるよね。」なんて言う人は高速で嫌われるだろう。案外近しい人の手料理、特に母親の手料理には気づかないうちに失礼なコメントを言ってしまいがちではあるのだが、それはともかくとして、人...

続きを読む

background-positionをパーセントで設定する場合の光と闇

超ニッチな話題ですが、CSSでbackground-positionをパーセントで指定したい時に全く想定しない動きをして悩まされました。下の図を御覧ください。1-4の数字のボックスを横に並べたいとします。ラッキーな事に1-4が100pxずつ上下に並んだ画像を見つけたのでここから切り出すことにしましょう。http://www.sitepoint.com/examples/jquery/test.phpさて、1を切り出すにはどうすればいいでしょうか?height:100px;backgorund-pos...

続きを読む

Delegateとは?

iOSのプログラミングをしていると必ずDelegateという言葉にでくわす。意味を知らなくてもどうにかなることもあるが意味を知っておいたほうがいい。私自身、曖昧なままいくつもアプリを作ってきたが。。わかりやすく言うと「レバニラ定食。ライスをチャーハンに変更で。」というようなこと。レバニラ定食はレバニラと味噌汁とライスのセットと決められているが、そこをあえてライスをチャーハンに変更して注文するイメージ。店側と...

続きを読む

【Swift】requestImageForAssetがめちゃくちゃ遅い

requestImageForAssetで画像をライブラリから読み込もうとしたら、「3G回線でどこかからダウンロードしてるの?」というくらい読み込みが遅く途方に暮れてしまった。CPUを観察していると待ち時間の間まったくプロセスに動きはなく、謎の空白時間のあとに画像がぴょこっと出てくる感じ。いろいろ調べたが、ネットにもほとんど情報がなかった。ネットに情報がないということも情報の1つと言えて、こういう場合は問題と思っている場...

続きを読む

【Swift】cocoapodsの使い方

「画像をライブラリから複数選択する」という処理をしたく、実装方法を悩んでいたが結局ライブラリに頼ることにした。ライブラリを使うと100時間分の工数が一気に0に近くなったりするが、個人的にはあんまり利用したくない。というのは「なにかあったとき」になにがなんだかわからなくなる可能性があるからだ。それはともかく、BSImagePickerというライブラリがあったので使わせてもらうことに。https://cocoapods.org/?q=bsimage...

続きを読む

twitterが流行した理由をしっかり考えてみる

Twitterはなぜ流行ったのか?について私はよく考えることがある。とりわけ世界の国の中でも日本での盛り上がりが大きいそうだ。・文字数の制限が5・7・5に慣れ親しんだ日本人にマッチしている・日本にはかまって欲しい寂しがり屋が多いから・メディアがこぞって取り上げたから・APIが充実しているからなどの分析を見かけるがそれらはすべて一理あると思う。それでもまだなんとなく納得感がないのだ。なぜ納得しないのか。一番の...

続きを読む

クラウドは「どこまでやらなきゃいけないか」

クラウドってなに?を説明しているサイトはたくさんあるので概念的な部分は他に譲るとして、当記事では「クラウド使い始めようとしたけど、なにこれ?何選ぶ画面?」となってしまった人に、クラウドを使いはじめるには「どこまでやらなきゃいけないか」を簡単に説明する。「さくらのクラウドでとりあえずレンタルサーバーと同じような環境を作る」という記事でクラウドの導入方法は説明したのだが、それがそもそも何なのか?という...

続きを読む

XAMPPでapacheが起動できない時

XAMPPで急にlocalhostのページが表示されなくなった。もちろんXAMPP上ではApacheはONになっているのに。なんだろうと色々調べたが原因わからず。折角の機会なので最新版をインストールするか、と最新版を入れなおすことに。xamppをアンインストール後、xamppフォルダを空にして最新版をインストールした。これで大丈夫、なんて、大抵そんな簡単な話ではなく、起動してみたら今度はapacheが起動すらしなくなった。色々調べたが、Por...

続きを読む

スポンサードサーチで広告が表示されない

Yahoo!のスポンサードサーチを使って広告を出稿したいのになかなか審査が終わらないことがある。色々調べてみると「場合によっては10日くらいかかることもある」という記事にあたったのでそうかのかな?と思ったのだが、いじっているうちに審査が終わらないのではなく審査でNGが出ていることがわかった。つまり、審査がなかなか始まらないと思っていたら審査はNGと結論がでていたということ。これは気づかないとずっと待ち続けると...

続きを読む

Google Analyticsで解析ができない時の対処法

サイトをよく作るのだが、Google Analyticsの設置で手こずることがよくある。というか、1度も上手く行ったことがない。タグが間違っているとか、他のスクリプトが邪魔をしているとか、基本的なチェック項目は下記にまとめられているので参照していただきたのだが、ここに載っていない対処法を紹介しようと思う。http://www.webplus-listing.com/blog-webplus/cat-analyze/2217/1.ウェブマスターツールの認証ウェブマスターツール...

続きを読む

Owl Carousel 2 - Current Item

Playing with Owl Carousel 2.It is pretty nice plug-in, but I couldn't figure out how to get current item.Current item, I mean is the front center item, other word the item currently shown to user.Actually it was pretty easy to implement using the version 1 of Owl Carousel, however, I had really long time to google on that, and I couldn't get any good solutions.The official document says we can use...

続きを読む

Facebookページの多言語化

Facebookページを多言語化する方法を調べたら意外と最新の情報がなかったのでまとめる。Facebookページに行って、[設定] - [一般] - [ニュースフィードのターゲットと投稿のプライバシー設定]とすすみ、チェックを入れる。上記を設定するとオーディエンスを絞り込みができるようになる。多言語化だけじゃなくて例えば「女性向けの記事」なんていう絞り込みも可能。と、とりあえずはこれだけで日本人に英語が届くなんていうことを避...

続きを読む

Swift2とXcode7.0へ移行する時のハマりポイント抜粋

Swift2が発表され、Xcodeは7.0になり、iOSは9。こういうメジャーアップデートは開発者を興奮させる一方で絶望させる。これは経験したことがあるひとじゃないとわからないことだが、昨日まで調子よく動いていたコードに何百というエラーが出てきて修正をせまられる。この時の絶望といったらない。ただ直せばいいてもんじゃなく、当然その後テストも必要なので、ものすごい工数がかかる。創造的な工数ならどれだけでもかけたいところ...

続きを読む

ローカルな専門用語を捨てよ

このブログでは基本的に技術的な内容にしか触れてこなかったが、最近感じたことがあるのでここにまとめておこうと思う。数学や理科の教育は英語で学校で誰しもが学習する数学や理科には色々な専門用語がでてくる。例えば数学で登場する「絶対値」。この「絶対値」という言葉を初めて聞いてこれがなんなのか想像できるひとが果たして何人いるだろうか?英語だと絶対値は「Absolute value」。英語がわかる人なら「絶対値」というよく...

続きを読む

Twitterに広告を出稿してみる その2

Twitterに広告を出稿してみるでTwitterへの出稿手順を簡単にまとめた。その後、数万円程度だが出稿してみたので少しまとめる。まず、注意(?)しなければいけないことがある。それは広告の出稿ツールは1つではないということだ。前の記事で「Yahoo!の人から電話で案内をされて・・・」という説明をした。案内はとても丁寧だったのでそれはそれでいいのだが、広告を出稿したり管理したりするツールはてっきりその時に案内されたも...

続きを読む

Twitterに広告を出稿してみる

例えばアプリをリリースした時などにダウンロード数を伸ばす施策として広告を出したいことがある。昨今、ウェブ上に広告を出す方法は充実してきており、個人でも簡単に導入できる。その1つにTwitterにプロモツイートとして広告を出す方法がある。下記に簡単に導入方法を示す。と言っても、下記の公式ページで順番どおりに進んでいくだけ。スタートボタンを押して順に進んでいくと電話番号等を入力する画面になり全て入力して登録...

続きを読む

YouTubeのDATA APIを使ってみる

マーク・ザッカーバーグが「これからは動画だ」と言ってから世の中もそのようになりつつあるが、動画を使ったウェブサービスやアプリを作るときインフラ部分まで手作りするととんてもないコストが掛かる。そこで便利なのがYouTubeなどのすでにあるインフラだが、今回はYouTubeのData APIの導入について書く。目標「キーワード検索した結果をJSONで取得する」YouTubeのData APIで取得できる項目やりたいこととAPIで得られる情報にミ...

続きを読む

不特定多数にメッセージを送るアイデア

デバイスの名前にメッセージ、例えばメールアドレスをいれてテザリングすると・・・こんなふうにネットワーク名(SSID)がメッセージのように表示される。なにかに使えるかもしれない。...

続きを読む

【Swift】modalの表示が妙に遅い場合

modalを利用して別のViewControllerを表示させようとするとき、処理が妙に遅いことがある。下記のようにメインスレッドで処理すれば遅延が解消される様子。NSOperationQueue.mainQueue().addOperationWithBlock({self.presentViewController(self.modalView, animated: true, completion: nil)})...

続きを読む

iTunes ConnectでMetadata rejectedの時の注意点

iOSのアプリを申請するとリジェクトされることがあるが、Metadataをリジェクトされるというステータスがあることを最近知った。Metadataをリジェクトされた場合は「Submit to Review」ボタンを押してはいけない場合があるとのこと。これをしてしまうと審査の順番待ちがはじめからになってしまう。場合によっては「ここを確認して再度Submit to Reviewしてね」と書いてあることもあるのだが、そうではない場合は基本的にメッセージ...

続きを読む

【Swift】全てのModalを閉じる

現在のModalを閉じるには下記のようにする。 self.dismissViewControllerAnimated(true, completion: nil)すべてのModalを閉じるには一番上の階層で下記のようにすればよい。self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)...

続きを読む

【Swift】hashタグやメンションをUITextViewでクリックできるようにする

下記のサイトに方法が書いてあるのでこの通りに進めればいい。https://github.com/ThornTechPublic/SwiftTextViewHashtagとはいえ、英語なのと少々説明不足な部分があるので下記にまとめたい。UITextViewにはもともとリンクを検出してクリッカブルにする機能が備わっているのはご存知の通りだ。この機能を利用し、ハッシュタグをURLのリンクのように偽ってクリッカブルにし、さらに、クリックした後の動作も定義しようとするのが上...

続きを読む

【Swift】スクロールの開始と終了を検知

UIScrollViewやUITableViewでスクロールの開始や終了を検知したい時は下記を利用。ちなみにUITableViewはUIScrollViewを継承しているのでこのままで利用可能。 func scrollViewWillBeginDragging(scrollView: UIScrollView) { println("スクロールスタート") } func scrollViewDidScroll(scrollView: UIScrollView) { println("スクロール中") } func scrollViewDidEndDragging(scrollView: UIScroll...

続きを読む

【XCODE】crashレポートを解析する

iTunes Connectにアプリを申請するとCrashしました、とRejectされることがある。そんな時はCrashレポートを添付してくれているが、そのまま見ても何が何だかわからない。もうちょっとなにか情報の渡し方があるんじゃないのかな、と思うところではあるが、このCrashレポートを少しわかりやすくできる。すなわち、生データから人が読み解けるものに変換できる。下記のステップはいかにも面倒臭く感じるが、Crashレポートを一旦無視し...

続きを読む

【Swift】print VS println

Swiftの勉強は書籍を参照して行った。その他にもネットで調べたり動画をみて勉強したりしたが、コンソールにメッセージを出したい時はprintln("hello world")とするようにと、どのソースでもprintlnを紹介していた。だから長いことprintlnしかないと思っていたのだが、実はprint("hello world")もある。違いはprint("hello ")print("world")hello worldprintln("hello")println("world")helloworldのようにprintlnは文字列の後に改...

続きを読む

iTunes Connectで「Your app information could not be saved. Try again. If the problem persists, contact us.」

アプリをアップロードしてSubmitしようとしたら下記のエラーが表示された。Your app information could not be saved. Try again. If the problem persists, contact us.なにか登録情報が間違っているのかとあれこれ確認してみたが見当たらず、どうやらApple側の問題の様子。一度ログアウトしてログインし直したらSubmitできた。...

続きを読む

【PHP】標準出力できない状況でのエラー確認方法

PHPは完全に裏方に使い出力を一切行わないケースなどでは普段通りのデバッグが行えなかったりする。普通に標準出力する場合ならエラーをそのまま表示させたり、printやechoで切り分けていったりするが、それができない、または、それをすると煩雑になってしまうことがある。そんな時は下記のように出力内容をテキストファイルに書き込んでしまえばいい。テキストファイルのパーミッションに注意。...

続きを読む

【Swift】admobを導入する方法

iOSのアプリを作ったら広告を入れたくなる。広告にはいくつかプロバイダ(アドネットワーク)がある。有名なのがiAd, nendそしてAdMob。それぞれサービスや料率が違ったりするのだが、今回はそのなかからGoogleが提供しているAdMobの導入方法(Swift)をまとめる。0. 新しいプロジェクトを作成このステップは必要に応じて。既存のプロジェクトにadmobを入れたい場合はこのステップはスキップでOK1. SDKをダウンロードしてzipファイ...

続きを読む

【Swift】TextViewを選択状態(アクティブ/フォーカス)にする

例えば何かのボタンを押したらTextViewにフォーカスを当ててキーボードを出したい、ということがある。そんな時はbecomeFirstResponderを利用すればいい。ただ、単純にmyTextView.becomeFirstResponder()とすればいいわけではない(ようだ)。上記ではうまくいかなかったので下記のようにしたらうまくいった。NSOperationQueue.mainQueue().addOperationWithBlock({ myTextView.becomeFirstResponder()});つまり、メインスレッド...

続きを読む

【Swift】Swift + PHPでiOSから画像をアップロードする

iOSのアプリで写真を選択してそれをサーバーにアップしたいということがある。今回はSwift + PHPでこれを実装する。実はこちらのブログに詳しい方法が載っており、ご丁寧に動画まで貼り付けてある。私もこれを参考にして実装した。が、このブログのコメント欄を見ればわかるように、「できない!」という声が多い。私もかなり悪戦苦闘した。結果はまりポイントがいくつかあったので当記事を参考にしていただければと思う。まず、上...

続きを読む

【Swift】Apps that crash will be rejected と言われた時の考えうる1つの要因

「Apps that crash will be rejected」で2度もリジェクトされたが再現できず。もしやと思いiPadのシミュレータで起動してみたら再現できた。つまり、「iPhoneでは落ちないが、iPadでは落ちる」処理があるわけだ。私がやられたのはアラートの処理。Twitterでシェアするかどうかを選択させるために下記のようにコーディングしていた。これはiPhoneでは問題なく動く。が、これをこのままiPadで動かすとクラッシュするのだ。それを回...

続きを読む

【xcode】this class is not key value coding-compliant for the key

XCodeはアプリ開発の強力なツールであるのは間違いないが、時として悪さをすることがある。例えば下記のエラーでアプリが落ちることがある。this class is not key value coding-compliant for the key #####経験上、storyboardとコードを接続したり接続を解除したりしていると突如としてこのエラーが発生してCleanしても再起動しても解決できず途方にくれるというパターン。そんな時はずばり、「storyboardでいじっていたコントロ...

続きを読む

android studioでエミュレータ起動のエラー

android studioでアプリを作ろうとするとき、エミュレータを立ち上げるところで起動できずにハマることがある。色々調べたが下記の記事が参考になる。ntel HAXMのインストールと設定ただ、自分は2箇所違う点があった。上記では「IntelHaxm.exe」というファイルを実行するとあるが、自分の利用しているバージョンではC:\Users\【ユーザ名】\AppData\Local\Android\sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelha...

続きを読む

ハンターハンター全148話を一気に見た

基本的に漫画は読まないしアニメもテレビもあまり見ないのだが、友達が「ハンターハンターはこころに残る名作」と語っていたので一気に全話(物語はまだ続くっぽい)見てみた。オープニングとエンディングの歌を飛ばすと1話大体20分くらいなのでおよそ50時間くらいか。■感想をひとことで率直にとても面白かった。冒険や闘いがメインなのだが、要所要所でロジックや心理学的な描写が出てくる。ゆえに何かをしながら片手間で見ている...

続きを読む

iOSアプリの動きを軽快にするための分析

結論からいうとInstrumentsというxcode付属のソフトを使う。ユーザーガイドは下記https://developer.apple.com/jp/documentation/InstrumentsUserGuide.pdf...

続きを読む

sshで接続できなくなった時の対処法

さっきまでsshで接続できていたのに急に接続できなくなった、ということを何度か経験したので対処法をメモ。こういったたぐいのトラブルはいくつも原因が考えられるので例えば「サーバーがsshを許可していない」とか「sshのポート番号が間違っている」なんてことも原因として考えられる。まとめると、1. サーバーがsshを許可しているか?2. ポート番号が間違っていないか?3. ユーザー、パスワードを間違っていないか?4. 接続する...

続きを読む

【Swift】フォントは変えず、サイズだけ変える

軽くハマったのでメモ。タイトルの通り、下記の方法だとフォントのサイズだけを変えたいのにフォントの種類も変わってしまう。mylabel.font = UIFont.systemFontOfSize(28)正確には、storyboardで別のフォントに設定していてもシステムフォントに戻ってしまう。そこで下記のようにすればフォントの種類は変えずサイズのみ変更できる。mylabel.font = mylabel.font.fontWithSize(28)...

続きを読む

さくらのクラウドでとりあえずレンタルサーバーと同じような環境を作る

ウェブサービスを作ろうとかWebを介すモバイルアプリを作ろうとかする時に悩むのがサーバーをどうするか。私は小さいサービスを作るときには「ロリポップ!」と「さくらインターネット」のレンタルサーバーを使っている。「小さい」というのは同時接続数が100行かない見込みのサービス。ウェブサーバーには503エラーというエラーが有り、同時接続数があるラインを超えるとこのエラーがページに表示されて訪問者は目的のサー...

続きを読む

【Swift】ACAccountでTwitterのアカウントを指定する

iOS上でTwitterのアカウントは複数持てるので、Twitterのアカウントを使ってあれこれする時にはリストの中からどのアカウントかを指定する必要がある。一番シンプルな方法は下記。 var twAccount: ACAccount? var accountStore = ACAccountStore() func selectTwitterAccount(){ let accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter) let accounts = sel...

続きを読む

【Swift】UIApplicationDidEnterBackgroundNotificationが複数回呼ばれる原因

アプリが重いなと思っていたらUIApplicationDidEnterBackgroundNotificationが複数回呼ばれていた。どうやらシーンを移動して戻ってくると1つ増える様子。原因は単純でobserverが増えたから。Observerの追加はViewDidLoadで行っていた。だからシーンを移動して戻ってくるたびにObserverが増えるということ。つまり、下記のようにしてはいけない。これをするとシーンの移動をトリガーにobserverが増えてしまう。 override func ...

続きを読む

【Swift】音を鳴らす

Swiftで音を鳴らしてみる。この手のプログラムは簡単にできるようで割とはまりポイントがあったりするのでいろんなサイトをぐるぐる回って時間がかかってしまいがち。「できた」方法を下記に記す。import AVFoundation//import UIKitの下にでも書く var audioPlayer: AVAudioPlayer? func playsound(){   //この関数を音を鳴らしたい場所で呼び出して使う if let path = NSBundle.mainBundle().pathForResource("s...

続きを読む

【Swift】外をタップしてキーボードを閉じる

タイトルの通り、キーボードを開いたときにその他の部分のタップを検知してキーボードを閉じる処理。いろんなサイトにいろんな方法が書いてあったがなぜかうまくいかず。下記の方法でできたのでメモ。下記をどこかに書く。どこかとは例えばviewDidLoad()var tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")view.addGestureRecognizer(tap)そして下記の関数を定義。 func DismissK...

続きを読む

【Swift】UITableView 複数行消す時の注意点

テーブルの行を複数消したいときにハマる可能性のあるポイントをまとめる。具体的なコードの提示は逆に混乱に繋がると思うので概念だけを記載する。下記のようなテーブルがあったとする。tabledata = [1, 2, 3, 4, 5]テーブル:|1|2|3|4|5|「tabledata」とはテーブルに表示するデータソース、「テーブル」とは実際に作成したテーブルを表す。このテーブルから5を削除したい場合、deleteRowsAtIndexPathsを使って「テーブル」から5...

続きを読む

【Swift】Custom Segueを作る方法

Segue(シーンの切り替え)のアニメーションを好きなものにできるとアプリが一気にかっこよくなる。なんだか面倒くさそうだが、実際にやってみると割と簡単なのでご紹介。こちらの記事(英文)を参考にしたが、ものすごく丁寧で不要部分もあるのでエッセンスだけを取り出すと下記のようになる。1. カスタムSegue用のファイルを作る(コードを書く部分)2. 通常のSegue設置と同じように設置する1. [File] > [New] > [File] > iOS - ...

続きを読む

【Swift】Segueが機能しない場合

例えばこんなことを実現したい場合。タイトルページ(一番初めのシーン)はじめてアプリを開いた → 設定画面へ遷移 過去にも使ったことがあるかを判別 → ゲーム画面へ遷移この場合、タイトルページで「はじめて開いたか」を判別して正しい方向へ誘導しなければならない。画面繊維はSegueを使うと思う。Segueの基本的な使い方はこの辺を見ればいいのだが「ボタンでは上手く遷移するのに、コードでは上手くいかない」とハマるケ...

続きを読む

twitter API 1.1 「75,000フォロワー」の壁

Twitter API 1.1を利用してアプリを作る時、テストすることが難しいチェック項目にぶつかることがある。それが「めっちゃフォロワーが多かった場合」の挙動だ。大抵テストアカウントはフォロワー数が少ないので、「もしこのアプリを100万人フォロワーがいる人が使ったら?」というテストができない。何かいい方法はあるのだろうか。ところでタイトルの件、twtter API 1.1には「Rate Limit」と呼ばれる呼び出し回数制限がある。T...

続きを読む

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。



ページの先頭へ戻る