日本語教師、プログラマーになる。

韓国に嫁いで日本語を教えていましたが、なんやかんやでiOSアプリ作ってます。

SwiftからMWPhotoBrowserを使おうとしたらイケメンなお兄さんに怒られる

Objective-Cでできているプロジェクトを、Swiftに書き直してるんだけど

ライブラリがObjective-Cで出来てて、

そのまま使わないといけない場面が結構あります

(まだObjective-Cのまんまなクラスが結構あるので、一気に変えられない)

これが結構たいへん。

 

もちろん(プロジェクト名)-Bridging-header.hはちゃんと書いてますよ?

 

検索してみても、

ライブラリそのものをSwift製のやつに乗り換えちゃいましたテヘペロ

みたいなんが結構あってゲンナリです。

 

有名な写真閲覧ライブラリのMWPhotoBrowserもその一つ。

github.com

(詳細リンクを貼ってみたら、イケメンなお兄さんの写真が出て来てびっくりしました。このお兄さんが作ってくれたのかな?ありがとう愛してるよ!)

 

んでこれをObjective-Cのまま、Swiftから呼び出して使いたいんだけど

適当にSwiftに直してみただけだと

 

Type ‘なんとかビューコントローラー’ does not conform to protocol MWPhotoBrowserDelegate

 

とかいうのが出ます

つまり「必須メソッド足りとらんやんけ!!」と怒られてしまうわけです。

 

えぇ~必須のヤツ2つとも書いたやん???って思って結構迷ったんですけど

 

結局Swiftに書き直す段階で微妙に違うメソッドになってしまっていたために、

必須メソッドどこにも見当たらないじゃない!嘘つき!とか言われてたみたいです。

そこらへんは空気読んでくれよ!

 

で色々探してたどり着いたのがこちらの方法。

stackoverflow.com

 

ポイントは二つ!

-MWPhotoじゃなくてMWPhotoProtocolを返す

-IntじゃなくてUIntにする

 

お節介にもこの辺をMWPhotoIntって書き直しちゃうと認識できなくなっちゃうようです。

 

後ブラウザを実際使用するときに、setCurrentPhotoIndexっていうのがあるけど

そこでもIntじゃなくてUIntを要求される。すなわち

 

browser.setCurrentPhotoIndex(UInt(indexPath.row))

 

とかそんな感じです。

 

この記事を書くまでは結構ムカついていたけど

イケメンのお兄さんが出て来たので若干怒りが収まりました。

ありがとうイケメンのお兄さん!

cocoapodsのインストールができなかった(未解決)

ライブラリの更新をしようと思って、cocoapodsでやろうと思ったら、まだ入ってなかった。しっぱいしっぱい。と思ってかる〜く始めてみたら、インストールができない!

うおおおお。

 

まずなんかこんなん出た

ERROR:  Error installing cocoapods:

    activesupport requires Ruby version >= 2.2.2.

 

ルビーのバージョンが古いってこと?

222ってなんだよ猫の日かよ

そしたらね、同じので困っている人がいました

 

http://stackoverflow.com/questions/36402189/installing-cocoapods-on-os-x-el-capitan-error

 

うーん?なんか古いバージョンを入れろってかいてある

Cocoapodsは新しいバージョンに対応してないみたいね

というわけでよくわかんないけど言われた通りにやってみる

 

sudo gem install activesupport -v 4.2.6

 

お~っ動いてる動いてる

でもまたエラー><

ERROR:  While executing gem ... (Errno::EPERM)

えぺるむ。。?

 

http://qiita.com/AcaiBowl/items/4bb4708de03e6ee14a4a

 

これでかいけつ~

と思ったら

 

The dependency (ライブラリ名) is not used in any concrete target.

とか言われる。えーっTT

 

どうやらこちらの記事の通りにすれば解決するっぽいけど、そこまでは試してない。期待していらっしゃった方すみません。

qiita.com

 

Cocoapodsは便利だけど、どうやら最近はCarthage(カルタゴ)っていうのがナウいらしいですね。

 

仕事で使いますって言われて途中まで準備したはいいけど、結局Cocoapodsのままで行くことになってそのまま。いつ使うことになるかわからないし…。勉強しておこう。

 

ちなみに、カルタゴ入れようと思って入れたhomebrewは全然別のところで役に立ちました。

iwllgiveitatry.com

 

いや〜人生何が起こるかわからないものです。

このHomebrewは、最初にビールで乾杯🍻している絵文字が出てくるのが、すごーくカワイイなと思います。

swiftでpaizaのスキルチェックを受けてみた!

こんにちは。

再就職先が決まってほっとしているらばんじんです。

 

…なんですが、その会社から突然の連絡が。

 

会社「簡単なコーディングテストをしたいんですけど」

私「ハイヨロコンデー!(やべぇ…)」

 

いやいやちょっと待って^^;

今更テスト結果が悪かったら取り消しとかないよね^^;

内定くれた他の会社断っちゃったしね^^;

もしそうなったら断固抗議やからね^^;

 

しかも、「自分のパソコン持ってきてください」との事でちょっと不安に。

私のMacって、就業成功パッケージ*1の祝い金で買ったものだから奮発してMacBookProだし、大きいから重いんですけどぉ。

 

おっぱ「もしかしてMac支給してくれないんじゃないの^^」

 

やめて!!そんな不吉なこと言うのやめて!!w

きっとまだ準備できてないだけだと思う…!!

それか、普段使い慣れてるやつで受験してもいいですよーっていうなんかアレだと思う!!きっとそう!そう思いたい。

 

でも私、iOS開発はきちんと習った経験がなく現場の叩き上げなので基礎が超超超不安><

 

…というわけで、プログラミングスキルがチェックできるという「paiza」というところに登録してみました。paizaといえば、こちらで有名。

 

paiza.jp

 

スマホゲームの宣伝じゃないですよw

 

こちらは、本来は転職サイトなんですけど…。プログラミングのスキルって外側からはよくわからないから、実際に問題を解いてスコアで図るんです。「こういう数字を入力したら、こういう結果が出るコードを書いてね」って感じで、中身は自由だから焦る焦る!

結果を登録しておけば「なるほど経験はないけど、よく勉強してるな」「この人のコードは丁寧だな」っていう感じでオファーが来るらしい!

 

問題のところに対応言語ってあって、swiftが見当たらなくてしまったぁ><とか思ったんですけど、実際はswiftも選べますよ!

 

これすごくないですか!?

韓国語の求人や日本語教師の求人にもこういうのあったらいいんですけど!

 

韓国語だったらTOPIKのスコアと面接で決まると思うけど、ビジネス韓国語とか翻訳のセンスは実際働いてみないとよくわからないわけだし。だから、どうしても「どこそこの会社で働いてました」っていう経験やポートフォリオに依存しちゃう。

 

日本語教師だって専攻か420時間がメインで、私みたいな日本語教育能力検定試験合格組は肩身が狭い><面接でいきなり模擬授業して!って言われても、初対面の面接官に教えるわけだから調子が狂うしね…。実際の授業では、引き継ぎなら前任の先生からある程度聞いてるわけだし、転校生はそれなりにフォローしながら進めるわけだし。

 

あとなんか、就活用のスーツだと肩がうまく回らない(痩せろ)ので身振りがおとなしくなっちゃうw語学院は学校ではないので、「この先生の授業退屈だな」って思われたらアウト。「ひ〜破れる〜」なんてヒヤヒヤしながら進めるので、結構失敗しちゃってました。

 

とそんなこんなで、登録して少し解いてみたんですけど…。

 

む、む、難しい><

 

いやそもそも、swiftで標準入力なんてやったことない!!><

一応paizaの「得意な言語で回答」のとこでswiftを選ぶと、標準入力のコードは出してくれるんだけど、これ1行だけだし…。

当たり前だけどXcodeじゃないからスペル間違ってても指摘してくんない!うわぁ!w

もうなんか色々パニック。componentsSeparatedByStringも使えないし何これ?

 

qiita.com

はい。使えないそうです。

 

これなんかもさっぱり忘れてたし、ああもう…w

stackoverflow.com

 

勉強になりました…。

ていうか、こんなに色々アルゴリズム解いてるけど、普通に「画面作ってね〜」とかだったりして…(希望)

 

最近勉強不足を痛感するので、韓国の情報技術者試験「情報処理技師」?とやらを受けようかなと考えてます。

でも、外国人が受けられるのかどうかちょっとよくわからない(笑)。しかもなんか別に「情報処理産業技師」とかいうのもあって、こっちは実務経験が必要で…。でも、情報処理技師の方は工学部じゃないと受けられないみたいな話も聞くし…。受験以前の段階でつまづいてます。

 

韓国語の用語の確認もしたいし、本だけでも買ってみようかな…!

 

キタミ式イラストIT塾 基本情報技術者 平成28年度

キタミ式イラストIT塾 基本情報技術者 平成28年度

 

 日本のみなさんはおとなしく情報技術者を受けてください…。

これかわいいですね。

*1:취업성공패키지 韓国の就職支援プログラム。日本でいうハローワークみたいな所で申請できる

【速報】アンディーメンテのじすさん、Appleデベロッパー登録更新するってよ!!

アンディーメンテというのは、私のすごく好きな同人ゲームサークルの名前です。

 

同人ゲームサークルってなに?????

 

というひとが多いと思うので、一応説明しておくと、音楽でいうインディーズバンドのゲームバージョンみたいな感じで、メジャーデビューはしてないけどゲームを作って発表している人たちのことです。一人で作る人もいますし、チームを組む人もいます。

 

一人でどうやってゲーム作るんだよ!と思ったりしますが、絵や音楽は「俺の曲自由に使っていいよー」って無料で公開してくれている人が結構いるので、そういうのを使ったりしています。でも自分で絵も音楽も全部一人でやっちゃう変な人もたまにいます。

 

さてアンディー・メンテのジスカルドさんもそんな変な人の一人です。他にもメンバーはいるらしいけど、だいたいのことをこのじすさんがやっているそうです。スゴイ!

ここ数年、突然ボーカロイドという声が出せるソフトを使ってJ-POPみたいな楽曲を作ったり、そうかと思えば作家デビューしちゃったり、ファンの間では何が起こったんだ!?なんて言われていました。

 

一方そのころ私はiOSエンジニアとして毎日残業していました。残業してると現実逃避したくなりますので、今やってるiOSでゲーム作って一攫千金してぇなぁ〜なんて考えてました。

 

でもJavaAndroidの養成講座で先生が

「あのなー、お前ら、間違ってもJavaでゲーム作ろうとか思うなよ。考えてもみろ。ゲームに出てくるキャラクターやらアイテムやら何やらが全部オブジェクトだったらどうする?死ぬぞ。ゲームっていうのはなー、専用のゲームエンジンってのがあるんだ。昔はどうだったか知らんが、今はほとんどがそうだ。あとゲームで一番重要なのはメモリ管理だ。ゲームしてる時にちょっとでも重くなるとめちゃくちゃムカつくだろ。プログラミングの世界で一番難しいのは間違い無くゲームだ。俺はやりたくない。」

と断言していたのを思い出して、やっぱりUnity(※ゲームエンジンです。ゲームを作るためのソフトみたいなものと考えてください)とかできないとダメなのかなぁ〜、今やってるObjective-C(※iOSアプリを作るのに必要なプログラミング言語です)の知識は役に立たないのかなぁ〜。って思ったりしてました。

 

でも諦めきれずに検索していると、spritekitというものと組み合わせれば、swift(※Objective-Cメガシンカしたような言語です)でもゲームが作れるという情報を発見しました。それが、このブログでした。

 

jiscald.blog71.fc2.com

 

なななんと、このブログを書いているのが誰あろうじすさんだったのですよ。びっくりしました。こんなことってあるんですね。

「えー?だってもともとその人ゲーム作家さんなんでしょ?iPhoneのゲーム作ってたっておかしくなくない?」とか思うかもしれませんが、じすさんが作っていたWindows用のゲームと、iPhone用のアプリでは、作り方が全然違うんですよ。韓国語とロシア語くらい違うんです。そんな人が、たまたま私のやっているiPhoneの仕事を始めるなんてびっくりなわけです。

 

しかもiPhoneのアプリって、色々と面倒なことが多いんです。本当に理不尽なことではい却下!とか言われたりするんですよ。さすがリンゴが赤くなれば医者が青くなると言われるだけのことはあります。

長年日本の同人ゲーム界のレジェンドとして君臨してきたじすさんでも、アップル様にはリジェクト(※お前のアプリは公開してやらねーよ!ってアップル様におこられること)食らったりしていて、そうかー、じすさんでもそうなんだー、ってちょっと勇気をもらったりしていました。

逆に、そんなじすさんでもゲームからの収入は伸びず、これなら(今までやっていた)Windowsのゲームの方がまだ儲かるような事が書いてあったりして、ひえ〜〜〜っと思ったりしました。

 

そんなじすさんですが、「ほるほる」「おっさんと川」「私のタオル、使うなあぁああ!」の3作をリリースしたのち、ぱったりとブログの更新は途絶えてしまっていました。

 

収入もあんまりなかったようだし、このままiOSアプリのことは忘れちゃうのかな…。と思っていたら、今日こんな記事を発見しました。

 

andymente.blog.fc2.com

 

あと一年は続けてくださるそうです。やった!

そうなんです。iPhoneApp Storeって、アプリを載せるだけでも毎年1万円かかるんです。ヒドイでしょ?

というわけで、あと一年は上記みっつのアプリがダウンロードできますよ。

みなさんもぜひぜひやってみてください。

 

ちなみに気に入っているのは「おっさんと川」ですが、

アンディーメンテ初心者だったら「私のタオル、使うなぁああ!」がおすすめです。死人が出ませんから。

 

Don't use my Towel!

  • Kazuyoshi Izumi
  • Games
  • Free

 

おじいちゃんが可愛いです。

Swiftで写真にいい感じのグラデーションをつける

残った仕事を片付けつつ、たまにはMarkdown記法も使わないと忘れそうなのでメモしとく。

このご時世にグラデーションなんているか〜!?と思いつつも、 やっぱり必要な部分はあるみたいで…。 ほら…Android版との兼ね合いとか色々さ…。

特に、背景写真+白いラベルをつけたい場合。 写真が白っぽかったりすると、文字が見えない!汗

f:id:lavandin:20160530150946p:plain

(全然わかんないけど、本当は白いラベルがある。)

そんな時、ラベルの後ろにうっすら黒っぽいグラデかけておくと、映えて見えるんですよね。

まず、Storyboardでグラデーションさせたい部分に「gradientView」とでも名付けておきます。 冒涜的なネーミングセンスはつっこまないで下さい…。

//まずはグラデーションレイヤーをつくります
let gradientLayer = CAGradientLayer();

//上は透明、下は黒。
let colorTop = UIColor.clearColor();
let blackColor = UIColor.blackColor();

//まっくろくろから始まるとヘンなので、黒にちょびっとアルファをプラスしてあげます。
//ま適当に0.7くらいかな。
let colorBottom = blackColor.colorWithAlphaComponent(0.7);

//そしたら、この二つを最初につくったレイヤーの色にセット。
gradientLayer.colors = [colorTop.CGColor, colorBottom.CGColor];

//フレームをきっちりセットしてあげないと、どこから始まるのかわかんないみたい。
gradientLayer.frame = gradientView.bounds;

//addSublayerでもいいのかな?
gradientView.layer.insertSublayer(gradientLayer, atIndex: 0);

こんな感じで、実行するといい感じにモワァ〜っと影っぽくなります!

f:id:lavandin:20160530150931p:plain

あっ…。今見たら、そんな言うほどいい感じじゃねぇッ…!!

まぁ、なんか、アルファ値とか幅とか適当にいじくったらいいと思うよ(適当) これがこういうイラストではなくて、JPGイメージとかだったら、結構いい感じなんすよ!(半泣き)

黒にアルファ値を設定してあげとくのがミソです。 最初、ズルして黒じゃなくてグレーにしたら、なんだか白く濁ってきちゃない色になっちゃいました。

透明〜透過黒のグラデーションにしてあげるのが正解でした!

Storyboardの右下のUIコントロール選ぶとこがアイコンだらけになっちゃった!あるいは韓国語で「シャボン玉」と言いたかった

あーっ、ビックリした〜。

ネタバレすると、全然大したことないです。 でも同じようにビックリする人がいるかもしれないので書いときます。

何が起こったかと言うと、いつも使ってるあそこあるじゃないですか?

f:id:lavandin:20160520234158p:plain

そうです、そこです。右下のそこです。 いつも、普通にフィルターで絞り込んで、すい〜っとドラッグして追加するあそこです。

そこがある日

f:id:lavandin:20160522133112p:plain

突然こんなんなってたんすよ! インスタグラムかよ!! アイコンだけで表示されてもさあ!わかんないから!名前!

特に、TableViewControllerと単なるTableViewとかただでさえいつも間違えてるから!! いらないから!そういうおしゃれセンス!!

でね、結論からいうと、実はこれフィルターの左に表示切り替えボタンがあるんです(恥) 平常時は田んぼの田みたいなやつで、 このインスタ野郎のときは将棋倒しになったこけしみたいなやつね。

f:id:lavandin:20160520234159j:plain

おわかりいただけただろうか…。 まっとにかくそこ押して切り替えればいいだけ!

これ使うやついるのかぁ??とか思ったけど、 リスト表示よりは一度に検索結果が表示されるからアイコン丸暗記してるようなクサレりんごオタク共は便利かもね!

それにしても、言うに事欠いて「右下のコントロール選ぶとこ」って意識低すぎでしょ…。 なんか呼び方ありましたっけ…

実は最近、うちの社長(エンジニア出身)が「Swiftおしえて〜」って言ってくれて、 僭越ながらも時々指導させていただいてるんですよ。ありがたいです。

でもあの、ほら、Xcodeっなんかアイコン多すぎじゃないですか!? アイコンだけで、文字なんもないってUI的にどうなの〜〜〜っ!?

f:id:lavandin:20160520234916p:plain

海外にいると痛感するけど、絵って万能じゃないんだよね。 何かを見て何を感じるのかって、結構国によってバックグラウンドによって大きく違う。 例えば、韓国の「サランへ」ポーズ。両手を大きく曲げて百会(頭のてっぺんのツボ)に指先をぴたっと合わせて、ハートのつもり。なんだけど…。あれ、日本人には「お猿さんのポーズ」にしか見えない。 多分、渋谷でそこらへんの日本人を捕まえて、「猿やってください!」って頼んだら、100人中98人はこうする。私もそーする。

「えっと、そこの新聞紙みたいなやつ…」 「野球のホームベースが…」 みたいな言い方しかできないんで、なんか幼稚園スパイの符牒みたいでカッコイイよね! 韓国に野球が伝来してて助かったよ。

でも、この前「シャボン玉」って言いたくて 「シャボン玉ってなんだろ…。あっ물방울か」って思ってずーっとムルパンウルムルパンウル連呼してたけど

実は비누방울の間違いだったっ…!!

ムルパンウルは「水玉」でした>< ハズカシイ>< ごめんなさい><

誰も使わないと思うけどSwiftでBANDに投稿する

UIActivityを使って韓国のアプリ「밴드」に投稿する方法。

どこにも書いてないからメモ。


最初登場したときはすぐ死にそうだと思っていたんだけど

あれよあれよという間に人気になって

今じゃネイバーカフェより身近な存在になった感のある「バンド」。

私なんか未だに「カフェ」「バンド」「カッス」の違いがよくわかってませんっ!!

(※カッスはカカオストーリーの略)

韓国最大の愛猫家コミュニティ「猫でよかった」等を擁するカフェにくらべ

バンドはより個人的な集まり(同窓会とか)に使える…?感じ…??


それはともかく調べてみたらなんかバンドはシェアボタンしか提供してねぇーッ!!

しかもObjective-Cのしかねぇーッ!!

やる気あんのかこらー!!

のでUIActivityをカスタマイズして無理やりぶっこむ。

とここで問題発生

なんかエラーが出てウンともスンともいわなーい><

絶望してたけど単にエンコードの問題でしたァン

適当にBandUtirityとかなんとか作ってそこに書く。

func openBANDWithItem(item: [AnyObject]) {
let isInstalled:Bool
= UIApplication.sharedApplication().canOpenURL(NSURL(string: "bandapp://")!)
//バンドがみつからないとき
if isInstalled == false{
print("そんなアプリ知らんがな")
}

//バンドがみつかったとき
//文字列とURLを取り出す
let text: String = item[0] as! String
let orgUrl: NSURL = item[1] as! NSURL

//投稿用URLを作る。ここでのrouteが何だか分からん…。
//でもドメイン入れてねってかいてあったので一応入れておく
let urlString = "bandapp://create/post?text=\(text)\n\(orgUrl.absoluteString)&route=www.hogehoge.net"

//パーセントエンコーディングしないとおこられるのでする
let encodedString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let decodedString = encodedString.stringByRemovingPercentEncoding
let url = NSURL(string: encodedString!)

//無事成功したら投稿!
if UIApplication.sharedApplication().canOpenURL(url!){
UIApplication.sharedApplication().openURL(url!)
}
self.activityDidFinish(true);
}

Swiftでのパーセントエンコーディングがよくわかんなかったのでなんかゴリゴリ書いてたら stringByAddingPercentEncodingWithAllowedCharactersで一発でできてズコーッてなった。

で〜、あとは透過したアイコンを準備しないといけないんですけど…。 (※透過しないとまっくろくろで表示されちゃいます)

勝手に透過処理しちゃっていいのかね? なんか、저작권문제(著作権問題)とかどうなんの? いっそ問い合わせようか…

とかやってたら、結局普通にシェアボタンで行こうやってなったのはまた別の話です。