月別アーカイブ 12月 2019

takahashi 著者:takahashi

“ワンセグ対応”スマートフォンが減少中らしい…

ふと気になる記事が目に留まりました。

ネットでの映像配信が増えているためか ワンセグ搭載は1機種のみ – Engadget 日本

そういえば最近、確かにワンセグ対応を売りにした端末を見かけなくなった気がします。

自分が持っているPixel 3aも日本仕様ですが、ワンセグは入っていないですしね。

また、見れる機種であっても、別アンテナの接続が必要だったり、そもそも受信感度があまりよくなかったり…なんていう感じもあり、正直実用性は疑問に感じていました。

昔はフルスペック重視の考え方で、必ず”ケータイにはワンセグが入っていてほしい”という考えでしたが、最近は”どこでもテレビが見れる”こと自体の需要をあまり感じなくなったのもあるかもしれません。

ただ、災害時などを考えるのであれば、むしろテレビ受信に特化した専用機とかメディアプレーヤーとして出ていた方が欲しくなるかもしれませんね。(HDD接続で録画できる、とかあったらもっといいかもですね。)

  • この記事いいね! (0)
著者:ym

静岡県の地域防災の日

防災の日ということで3地区合同の避難訓練へ参加してきました。どちらも重要なセキュリティ対策です。

小学校にある防災の備品をすべて出して組み立て。いままでは訓練でもそこまでやりませんでしたが、今回、備品をすべて組み立てたりするのは初めて観ました。
避難場所でどの様なものが保管されているかわかると、自宅で用意しなければならないものもイメージ付きやすいので、結構よかったと思います。

自助、近助、共助。

ビデオ観ましたが、会社にいても、自宅にいても、近所付き合いが非常に重要とわかりました。

ドリルは訓練というのはわかりやすいけど。broca はポルトガル語だけど。翻訳すると電気ドリルの画像がでてきましたけど、あってるのかな。

  • この記事いいね! (0)
村上 著者:村上

【Swift】iOSアプリにチュートリアルを簡単に実装できるライブラリ「Gecco」

iOS アプリで、初回起動時にチュートリアルを表示したいときにオススメのライブラリ「Gecco」のご紹介です。
こちらのライブラリでは、実際の画面にオーバーレイ表示して、各ボタンなどの使い方を説明する「コーチマーク」のチュートリアルを実装できます。

GitHub のページはこちらから。

GitHub – yukiasai/Gecco: Simply highlight items for your tutorial walkthrough, written in Swift
https://github.com/yukiasai/Gecco

 

実装方法は、まず Podfile に下記を追加して、pod install を実行します。

pod 'Gecco'

そして AnnotationViewController.swift というファイルを、下記の内容で追加します。

import UIKit
import Gecco

class AnnotationViewController: SpotlightViewController {
    
    var annotationViews: [UIView] = []
    
    var stepIndex: Int = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
        
        // ボタン等を強調した時に表示したいテキストがある場合は、ここで annotationViews に追加する
        let message1: UILabel = UILabel(frame: CGRect(x:0, y: 0, width: self.view.bounds.width, height: 150))
        message.text = "チュートリアルで表示したいメッセージ1"
        message.layer.position = CGPoint(x: self.view.bounds.width/2, y: 300)
        self.view.addSubview(message)
        annotationViews.append(message)
    }
    
    func next(_ labelAnimated: Bool) {
        updateAnnotationView(labelAnimated)
        
        let screenSize = UIScreen.main.bounds.size
        switch stepIndex {
        case 0:
            spotlightView.appear(Spotlight.RoundedRect(center: CGPoint(x: screenSize.width/2, y: 320), size: CGSize(width: screenSize.width, height: 500), cornerRadius: 50))
        case 1:
            spotlightView.move(Spotlight.Oval(center: CGPoint(x: screenSize.width - 28, y: 42), diameter: 50))
        case 2:
            spotlightView.move(Spotlight.Oval(center: CGPoint(x: 28, y: 42), diameter: 50))
        case 3:
            dismiss(animated: true, completion: nil)
        default:
            break
        }
        
        stepIndex += 1
    }
    
    func updateAnnotationView(_ animated: Bool) {
        annotationViews.enumerated().forEach { index, view in
            UIView.animate(withDuration: animated ? 0.25 : 0) {
                view.alpha = index == self.stepIndex ? 1 : 0
            }
        }
    }
}

extension AnnotationViewController: SpotlightViewControllerDelegate {
    func spotlightViewControllerWillPresent(_ viewController: SpotlightViewController, animated: Bool) {
        next(false)
    }
    
    func spotlightViewControllerTapped(_ viewController: SpotlightViewController, isInsideSpotlight: Bool) {
        next(true)
    }
    
    func spotlightViewControllerWillDismiss(_ viewController: SpotlightViewController, animated: Bool) {
        spotlightView.disappear()
    }
}

上記ファイルを追加したら、チュートリアルを表示したい ViewController の任意の場所で下記を実行します。

let viewController = AnnotationViewController()
viewController.alpha = 0.5
present(viewController, animated: true, completion: nil)

基本的な処理は以上です。
なお、Storyboard は変更する必要はありません。

また、もしボタン等を強調する際にテキストを表示しない場合は、AnnotationViewController.swift の 6行目、15~19行目、23行目、42~48行目の処理は不要なので、コメントアウトするか削除してください。

またボタンを強調する際には、円形もしくは四角形を使い分けることができます。

// 円形の強調を使用する場合
Spotlight.Oval(center: [円の中心座標], diameter: [直径の値]))
// 四角形の強調を使用する場合
Spotlight.RoundedRect(center: [中心座標], size: [四角形のサイズ], cornerRadius: [角丸のサイズ])

具体的な使用例は、AnnotationViewController.swift の 28行目、30行目、32行目をご参考にしていただければと思います。

 

以上、iOS アプリでチュートリアルを簡単に実装するためのライブラリ「Gecco」のご紹介でした。
サンプルコードは Storyboard を使用していたので、若干手こずりましたが、コツさえつかんでしまえばシンプルでとても使いやすかったです。
ご参考になれば幸いです。

  • この記事いいね! (0)
著者:杉浦

【MySQL】SELECT hoge FROM information_schemaでテーブルやカラムの情報を得る

 SQLで定義を調べる時はSHOW TABLES;やSHOW COLUMNS;といったSHOW構文を使う方法を良く取ります。まあ便利なのですが、FULLオプションをつけても欲しい情報が足りない時、表示量が多すぎて分かりにくくなる時があります。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.5 SHOW 構文
 そういった時はinformation_schemaデータベース中のテーブルに対してSELECTすると解決しやすいです。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 21 INFORMATION_SCHEMA テーブル
 information_schemaはMySQL中の各データベース全体のメタ情報を集積しているデータベースです。例えば、各データベースのテーブル定義がTABLESテーブルに入っています。以下の様にすると、

select TABLE_SCHEMA, TABLE_NAME, TABLE_COMMENT
from TABLES
where TABLE_SCHEMA = 'mysql'
limit 5

以下の様なテーブル名と説明コメントが出力できます。

TABLE_SCHEMA TABLE_NAME TABLE_COMMENT
mysql columns_priv Column privileges
mysql db Database privileges
mysql engine_cost
mysql event Events
mysql func User defined functions

 他にも各テーブル中のカラム定義の格納されたCOLUMNSテーブル、ユニーク制約や主キーや外部制約などの情報の格納されたTABLE_CONSTRAINTSテーブルなどなど色々あります。このあたりを使うと既存のDBから好きなようにER図用のPlantUML、マイグレーション定義などを生成できるようになります。

  • この記事いいね! (0)