もっさり日記

だらだらと。

【iOS】SwiftでQRコード読取り

急ぎでサンプル作ってくれと言われて昨日から開始
先週末に話しが出てきて今週末に見せろとかひどい話だよ…。
XCode自体触るの6年ぶりくらいだからよくわからんちん。
Swift?初めて触ったよ(*´∀`*)
kotlinっぽいので思ったよりは触りやすかった。

【動作端末】
iPad mini(初代)
OS:9.3.5

【開発端末】
iMac(21.5-inch,Mid 2011)
OS:10.13.5
メモリ:4GB
会社のPCは全てポンコツです。

【開発環境】
IDEXcode 9.4
BaseSDK:iOS11.4
Target:iOS9.3
Swift:4.1

要件としてはiOS6で動くQRリーダー+サーバアプリだったんだけど
OSだけは新しくしてくれということでiOS9になるようお願い
そもそも端末買い換えろって話だけど昔大量に買った端末を有効活用したいんだと
使ってなかったのを数年後に無理やり活用とかホント多くて嫌になる。

ってことで、ソース

import UIKit
import AVFoundation

class ViewController:UIViewController{
  var session:AVCaptureSession? = nil
  var qrcodeText: UILabel? = nil

  override func viewDidLoad(){
    super.viewDidLoad()
    // デバイスの取得、今回はフロントをメインに使いたい
    ver targetDevice:AVCaptureDevice? = nil
    let devices = AVCaptureDevice.devices()
    for device in devices {
      if device.position == AVCaptureDevice.Position.front {
        device = device
        break
      }else{
        device = device
      }
    }

    // セッションの初期化とか
    session = AVCaptureSession.init()
    // 入出力の初期化とか色々
    let input = try? AVCaptureDeviceInput.init(device:device!)
    let output = AVCaptureMetadataOutput.init()
    session?.addInput(input!)
    session?.addOutput(output)

    output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
    output.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]

    // プレビューの初期化とか
    let preview = AVCaptureVideoPreviewLayer.init(session:session!)
    preview.videoGravity = AVLayerVideoGravity.resizeAspectFill
    preview.frame = CGRect(x:0,y:0,width:self.view.frame.size.width, height:self.view.frame.size.height)
    self.view.layer.insertSublayer(preview, at:0)

    // QR読取り結果の表示領域設定
    qrcodeText = UILabel.init(frame:CGRect(x:20,y:20,width:450,height:26))
    qrcodeText?.text = "QR読込結果"
    qrcodeText?.backgroundColor = UIColor.white
    qrcodeText?.textColor = UIColor.black
    self.view.addSubview(qrcodeText!)

    // カメラセッション開始
    session?.startRunning()
  }
  override func didReceiveMemoryWarning(){ super.didReceiveMemoryWarning() }
}
// キャプチャ結果のデリゲート
extension ViewController:AVCaptureMetadataOutputObjectsDelegate {
  func metadataOutput(_ output:AVCaptureMetadataOutput, didOutput metadataObjects:[AVMetadataObject], from connection:AVCaptureConnection) {
    for data in metadataObjects {
      if data as? AVMetadataMachineReadableCodeObject {
        // 結果をラベルに書き出し
        qrcodeText?.text = data.stringValue
      }
    }
  }
}

色々なサイトを参考にしたけど記述が古いのかビルドが通らないこと多くて苦戦した。
下記みたいなのとか。

let videoDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)

ちかれた。

【世界樹X】プレイ日記2

ちまちま進めてます、はい。

先日、第7迷宮3Fに到着
平均レベルは43とちょっと上がりすぎかな?
マスタースキルが習得できるようになってやっとインペリアルが本領発揮し始めましたw
FOE駆除が大分楽になったのは良いことですね。

とりあえず思ったこと。
・ドライブ撃たないペリはペリじゃない
・航海皇女すごすぎる(胸元が)

【世界樹X】プレイ日記

発売日に買ったのですが娘に取られてなかなかできなかったです。
娘がやらない時間にちまちまと進めてます。

現在は第二迷宮の3F
パーティはこんなんです。
【前衛】
インペリアル インペリアル プリンセス
【後衛】
パラディン プリンス

はい、偏ってますねwww
毎度のことですが長期戦どんとこいな耐久型パーティです
腕縛りやめてくだしぃ

しかし、集大成だけあって過去の世界樹モンスターや職業、システムに音楽と
懐かしさを感じながらプレイできるのは良いですね。
特に4が一番好きなので今の迷宮は嬉しくて仕方がないです。

土日でもう少し進めたいなー。

☆花火☆

今日は水戸千波湖の花火大会です。
毎年行っているので代わり映えしないのですが子供が喜ぶので
がんばるw

長女は去年から友達と行くようになってしまって少しさびしい感もします
下の子もあと数年したらそうなるんだろうなぁ
そしたら自分は子どもたちの送迎オンリーになってしまいそうw

逆襲の…

ガチすっぱいレモンってのが売ってたので飲んでみた。
すっぱいっちゃすっぱいけど美味しいもんではないですねwww
炭酸水にいれてレモンスカッシュにしたら美味しく頂けそうです。

www.nissin.com

【アニメ】最近みたもの

AmazonPrimeVideoやAbemaTVアプリでちまちま見てます。
昔はTVかビデオしかなかったので良い時代ですよね。

オーバーロード(3期) 3話
もうひとりの主人公エンリの成長に関わる話で原作でも好きなところ
ナーベがルプーと同じくらい綺麗と言われて見下す話し方から目線を合わせて
会話していくところの表現が凄くよかった。
人外たらしですね、エンリw

はたらく細胞
1話~3話まで娘たちと一緒に見ました。
授業で血液系の話をやってるみたいで、「そうだったんだー!」とか
「白血球こわいw」、【血小板かわいい!」とか言いながら見てました。
知育にも役立つ良いアニメですね、面白いし
次回は「食中毒」とのことで楽しみです。

・殺戮の天使
原作知らないけどなんとなく見てます
ザックの声優さんのぶっ壊れっぷりがw
そしてマトモな人間が誰一人もいないというカオスっぷり
EDで歌うレイチェルの声が儚くて好きです

他にも見たいのあるけど時間ぐぁ・・・

暑い!

毎日暑い日々が続いてますが皆さんお元気でしょうか?
子どもたちが夏休みに入ったので昼休みは一緒に御飯を食べてきました。
上の子は陸上部なので今日の暑さは堪えた模様…
下の子にいたっては鍵を忘れて1時間くらい家の外でウロウロしてました(;・∀・)
いやぁ、倒れてなくてほんとよかった…

ちなみに埼玉は最高気温を更新中みたいですね、恐ろしい、
茨城もそのうちこんなになってしまうのだろうか…
www3.nhk.or.jp