ブックマーク / dev.classmethod.jp (13)

  • [Swift] UserDefaultsの機能を隠蔽した保存設定用モデルを作ってみた | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 「起動中のアプリを落としても消えない(永続的に保存される)データ」の実装手段として、UserDefaults の仕組みを使用するのが一般的な方法かと思います。 しかし、この UserDefaultsの実装は、時として思いのほか冗長になりがちです。 理由としては、機能追加や仕様変更などで開発途中にデータの項目を増やす必要が出てきたり、 それに伴って様々な型に対応しなくてはならなくなるなど、次々と付け足されていくからではないでしょうか。 そうならないためにも、UserDefaultsの処理自体はできるだけ隠蔽しておいて、 保守・拡張しやすい形にしておけば、後々の開発時にも迷子にならなくなるのではないかと思います。 ありがちな実装とは プロジェクトの規模や開発者によって書き方は多種多様かと思いますが、 Swift における UserDefaults

    [Swift] UserDefaultsの機能を隠蔽した保存設定用モデルを作ってみた | DevelopersIO
    tanjoin
    tanjoin 2021/03/15
  • [iBeacon] Mac を iBeacon 端末にする(Swift3編) | DevelopersIO

    1 はじめに iBeaconの発信(ペリフェラル側)は、Macでも作成可能です。この事については、既に、ここDevelopers.IOでも、紹介されておりますので、詳しくは、こちらをご参照下さい。 [iOS 7] [iBeacon] Mac を Beacon 端末にする 既に、語り尽くされた感のあるiBeaconの話ですが、今回これをSwift3で書いてみましたので紹介させて下さい。 なお、CBPeripheralManager が Yosemite (10.10) で動作しなかった問題については、改善されており、記事で紹介するコードは、El Capitan(10.11) 及びmacOS Sierra(10.12) で問題なく動作させる事ができました。 [iOS][OS X] Yosemite で Beacon アプリを動作させる CBPeripheralManager startAdv

    [iBeacon] Mac を iBeacon 端末にする(Swift3編) | DevelopersIO
    tanjoin
    tanjoin 2020/07/16
  • [iOS] 位置情報の取得 (Swift3編) | DevelopersIO

    1 はじめに 以前、「位置情報の取得」に関する記事を掲載させて頂きましたが、最新の状況で(iOS 8 〜 iOS 10)で少し状況が変わってきているのと、サンプルコードをSwift3に変更することで、再編させて頂きました。 [iOS] 位置情報の取得 位置情報取得に使用するCLLocationManagerには、以下のようなサービスがあります。 standard location service (標準の位置情報) significant location change service (大幅な位置の変更) region-monitoring service (iBeaconによるリージョン境界の出入り) beacon ranging service (iBeaconへの近接測定) heading service (コンパス iOSのみ) visits service (訪問先の取得)

    [iOS] 位置情報の取得 (Swift3編) | DevelopersIO
    tanjoin
    tanjoin 2020/02/27
  • [iOS][iBeacon] iOS 7.1 からアプリを起動していなくても領域観測できるようになったので、さまざまなバックグラウンド処理を試してみた | DevelopersIO

    iOS 7.1 ちょっと前の話になりますが、2014年3月11日 に iOS 7.1 がリリースされました。このアップデートで iBeacon が改善されている件が開発者の間で話題になっていました。 iOS7.1でのiBeaconが改善されまくった話 | Qiita 噂のiOS7.1でiBeaconを試してみよう!! | Takahiro Octopress Blog iOS 7.1ではアプリが稼働していなくともiBeaconが利用可能に | apptoi iOS7 で iBeacon を使用してみよう ~応用編~ | ギャップロ 特に重要なのがアプリを起動していなくても領域観測できるようになったという点です。iBeacon の機能で一番問題視されていたところだったので、これはかなり嬉しい機能改善ですよね。ということで今回はバックグラウンドでさまざまな処理を試してみました。 領域観測を試し

    [iOS][iBeacon] iOS 7.1 からアプリを起動していなくても領域観測できるようになったので、さまざまなバックグラウンド処理を試してみた | DevelopersIO
    tanjoin
    tanjoin 2020/02/27
  • MySQLでビューを使う | DevelopersIO

    はじめに MySQLの理解を深めるために調査した結果を記事にします。 今回はビューを使用し、想定する状況に対応する例を考えてみました。 想定する状況 ・屋(2店舗)に関する情報を管理している。 ・テーブルは3つ。 ・依頼に応じたデータを提出する必要がある。 ・関連するテーブルの内容を手間無く取得できる様にしておきたい。 テーブル stores(店舗ごとの在庫) id=行番号、store_id=店番号、item_id=商品番号、items=在庫数 +----+----------+---------+-------+ | id | store_id | item_id | items | +----+----------+---------+-------+ | 1 | 1 | 1 | 10 | | 2 | 1 | 2 | 30 | | 3 | 1 | 3 | 100 | | 4 | 2

    MySQLでビューを使う | DevelopersIO
    tanjoin
    tanjoin 2019/12/15
  • 知らないのは損!npmに同梱されているnpxがすごい便利なコマンドだった | DevelopersIO

    こんにちは。サービスグループの武田です。 Nodeは現代のフロントエンド開発にはなくてはならない存在となりました。またクラスメソッド社内で静かなブームとなっているAWS CDKでの開発もNodeを利用します。そのCDKプロジェクトのひな型を作成する際に、npxコマンドを使用している例をよく見かけたのですが、そういえばこのコマンドよく知らないな?ということで調べてみました。 検証環境 次の環境で検証しています。 npx is 何 npxはnpmパッケージを簡単に実行できるコマンドです。具体的には次のようなことができます。 run-scriptを使用せずにローカルインストールしたコマンドを実行する グローバルインストールせずに一度だけコマンドを実行する GitHubGistで公開されているスクリプトを実行する npxはnpm@5.2.0から同梱されるようになった新しいコマンドです。Node@

    知らないのは損!npmに同梱されているnpxがすごい便利なコマンドだった | DevelopersIO
    tanjoin
    tanjoin 2019/09/17
  • [Google Apps Script] LINE Bot を作ってみよう | DevelopersIO

    はじめに 今回は、前回の記事で予告した通り、コンテナバインドちゃんを使ったサンプルスクリプトとして、優柔不断な私に代わって今日やるべきことを決めてくれる LINE Bot の作り方をご紹介します。 手順の一部にGoogle スプレッドシートの操作が含まれますが、スプレッドシートやシート名の名称変更、セルへの値入力などはできる前提で説明をしています。 正直、私専用なので、 LINE Bot である必要性はこれっぽっちもないんですが、 GAS で LINE Bot を動かしてみたかったんじゃーい。 どうやってやるべきことを決めてくれるの? スプレッドシートにやりたいことのリストを作っておくことで、 Bot くんがリストの中からランダムに1つを選び、今日はこれをやれ!と LINE で通知してくれます。 早速作ってみよう! 用意するもの Google アカウント LINE アカウント チャネルのC

    [Google Apps Script] LINE Bot を作ってみよう | DevelopersIO
    tanjoin
    tanjoin 2019/08/26
  • [小ネタ][git] 日本語ファイルの文字化けを回避する | DevelopersIO

    gitで日語ファイルが文字化けする こんばんは。小室です。gitを使っていて日語のファイル名を入れるとファイル名の表示が崩壊するという経験をしました。 割と今までは放置していたのですが、きちんと日語ファイル名を表示するコマンドを教えてもらったため、備忘録として記録しておきます。 若干人を小馬鹿にしたようなファイル名のファイルを配置したディレクトリをサンプルとして用意しました。 $ ls -la total 8 drwxr-xr-x 4 komurohiraku staff 136 Mar 25 19:09 . drwxr-xr-x 22 komurohiraku staff 748 Mar 25 19:08 .. drwxr-xr-x 10 komurohiraku staff 340 Mar 25 19:08 .git -rw-r--r-- 1 komurohiraku staff

    [小ネタ][git] 日本語ファイルの文字化けを回避する | DevelopersIO
    tanjoin
    tanjoin 2019/03/06
    “git config --local core.quotepath false”
  • AWS LambdaへのJSON入力はごっつええかんじ | DevelopersIO

    AWS Lambdaでは、json形式でLambda関数に入力できます。 Python3で試してみました。 Lambdaへの入力と受け取り Lambda実行時に、PayloadとしてJSON形式のデータを渡せます。{"key":value}といった形です。 Lambda関数では、event['key']でvalueを取得できます。 Payloadの階層が深い場合、keyを繋げます。 Payloadが{"name": "koki", "like": {"aws": "s3", "sports": "soccer"}}の場合、Lambda関数ではevent['like']['aws']で"s3"を取得できます。 サンプルアプリ サンプルアプリを作ってみました。 引数に数字を与えて実行すると、3と5の公倍数の時に"Fizz Buzz!"、3の倍数の時に"Fizz!"、5の倍数の時に"Buzz!"

    AWS LambdaへのJSON入力はごっつええかんじ | DevelopersIO
    tanjoin
    tanjoin 2019/03/01
  • Lambda Layerの基本的な仕組みを確認する #reinvent | DevelopersIO

    re:Invent 2018で発表されたLambda Layerを、今更ながら触ってみました。 その基的な仕組みについて、これから触る人向けに少し噛み砕いて書いてみます。 Lambda Layerとは 一言で言えば、複数のLambda関数でライブラリを共有できる仕組みです。 これまでは同じライブラリを利用する関数が複数あった場合、全ての関数にいちいちライブラリを含めてパッケージングしていましたが、ライブラリをLayerとしてアップロードしておくことで、個々の関数はLayerを使えばよくなります。 すでに速報記事、検証記事などアップされていますので、ご参照ください。 【速報】【アップデートLambdaが複数のファンクションで共有するコードを持てるようになりました(Lambda Layer) #reinvent AWS LambdaにLayerなるものが追加されたのでPythonで簡単に使

    Lambda Layerの基本的な仕組みを確認する #reinvent | DevelopersIO
    tanjoin
    tanjoin 2019/03/01
  • [iOS 11] ARKitでソファー設置からあの子の身長測定まで色々やってみた | DevelopersIO

    1 はじめに iOS 11では、iPhoneiPadにAR(augmented reality)を簡単に作成できるARKitというフレームワークが導入されました。ARKitの大きな特徴は、以下の3つです。 位置(座標)を特定 平面検出 周辺光を把握 位置(座標)の特定は、画面上で指定した点が実世界のどこに該当するかを3次元ベクトルで取得できるという機能です。これを活用すると、画面をタップして地点を指定し、その距離を測定するメジャーのようなものが簡単に作成できます。 続いて平面検出が可能になると、机の上など、実世界の平面に仮想オブジェクトを正確に配置することが可能になります。 そして周辺光の状態を表示する仮想オブジェクトに適用することで、その見え方は、よりリアルになるでしょう。それでは、ARKitの各機能を順に使っていきます。 もくじ 1 はじめに 2 オブジェクトの配置 (1) テンプレ

    [iOS 11] ARKitでソファー設置からあの子の身長測定まで色々やってみた | DevelopersIO
    tanjoin
    tanjoin 2019/01/23
  • Macでcron。

    はじめに cronは指定した日時にコマンドをやスクリプトを実行するもので、crontabコマンドを使用する事で実現できます。 バッチ処理で使うことが有るので備忘録として書いておきます。 環境 Mac OSX 10.9.5 Mavericks 準備 環境変数にエディタを登録 ターミナルから下記を入力。

    Macでcron。
    tanjoin
    tanjoin 2019/01/22
  • Rubyでloggerを使い、ログを出力してみた | DevelopersIO

    サーモン大好き横山です。 Rubyスクリプトからログを出力する際、 logger を使ってログ出力してみた時のメモです。 準備 今回Amazon Linux 2015.09を使いました。 $ cat /etc/os-release NAME="Amazon Linux AMI" VERSION="2015.09" ID="amzn" ID_LIKE="rhel fedora" VERSION_ID="2015.09" PRETTY_NAME="Amazon Linux AMI 2015.09" ANSI_COLOR="0;33" CPE_NAME="cpe:/o:amazon:linux:2015.09:ga" HOME_URL="http://aws.amazon.com/amazon-linux-ami/" $ ruby -v ruby 2.0.0p647 (2015-08-18) [

    Rubyでloggerを使い、ログを出力してみた | DevelopersIO
    tanjoin
    tanjoin 2018/12/04
  • 1