タグ

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

  • [Swift] あると便利だったextension達 記法編 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 最近ブログを書けていなかったので、小ネタを少しばかり・・・。 アプリを作ってきた際に、あるとなかなか便利だったextensionをボチボチとご紹介していければと思っています。 アプリの目的に合わせてやりかえる必要があったり、もっとよい実装があるかもしれませんが、何かの役に立てば光栄です。 今回は文字列の記法編です。 APIのキーやパラメータ、DBの論理名、その他諸々とスネーク記法を使ったり、キャメル記法を使ったりというシーンは多いかと思いますが、 そういう時に記法の変換を行ってくれるメソッドを準備しておけば色々と助かることも多いでしょう。 文字列をアッパーキャメル記法に 念のための説明ですが、「アッパーキャメル記法」とは単語の最初の文字を大文字にして、単語間には何も入れない(アンダースコアやスペースがない)記法のことです。 Swiftのクラス

    [Swift] あると便利だったextension達 記法編 | DevelopersIO
  • Tableauでパレート分析をやってみた | DevelopersIO

    はじめに こんにちは、yoshimです。 今回は重要顧客による売上高への影響度を調べてみようと思います。 具体的にはパレート分析なるものをやってみて、「当に20%のお客様が80%の売り上げを占めているのか」を検証してみようと思います。 パレート分析をするために、パレート図を作ることになるのですが、その過程でセカンダリ計算という機能を利用すると便利なので、こちらの紹介もいたします。 セカンダリ計算は利用頻度はあまり多くないかもしれませんが、「少し複雑な」表計算を簡単に実行することができます。使いこなせるとTableauでできることの幅が広がるので、知っておいて損はない機能です。 目次 パレート分析とは セカンダリ計算とは 実際にやってみた まとめ 参考文献 追記 パレート分析とは パレート分析とは、マーケティングや品質管理等に用いられている、「効率的に業務を行うために優先順位をつける」際に

    Tableauでパレート分析をやってみた | DevelopersIO
  • [Emacs] キーボードマクロを使って作業効率アップ! | DevelopersIO

    キーボードマクロ キーボードマクロ とは複数のキー入力を 1 つの命令として定義したものです。 Emacs ではこのキーボードマクロをいつでも定義・実行することが可能です。 定義方法 キーボードマクロの定義開始/終了は以下のコマンドに割り当てられています。 C-x ( : 定義開始 C-x ) : 定義終了 開始から終了までの間に入力されたキーが 1 つの命令として登録されます。 実行方法 定義したキーボードマクロは以下のコマンドで実行します。 C-x e その後繰り返す場合は e を入力 例 以下のテキストをご覧ください。 このテキストの空行を排除する という作業をキーボードマクロを利用して実施します。 定義 カーソルが 1 行目の行頭にある状態で以下を入力します。 C-x ( C-n C-d C-x ) 次の行に移動 と 1 文字削除(行削除) という処理をキーボードマクロとして定義し

    [Emacs] キーボードマクロを使って作業効率アップ! | DevelopersIO
  • LINE Notifyをnode.jsで利用する | DevelopersIO

    事業開発部の野村です。 もうすぐ入社1ヶ月が経ちます。日々の開発業務に必死についていきつつ、その裏で個人的に気になり調査し実践してみたことを今回ブログに書かせていただきます。 はじめに ビジネスでのコミュニケーションツールとして、ChatWorkやSlackを使っている方は多いと思います。 一方でプライベートで友人や家族とコミュニケーションを取るときなど、生活の中でLINEを使うシーンもまた多々あると思います。 LINE Notifyをそんな中でうまいこと活用できないかと思い、まずは手元の端末で動作確認するところまでを実施しました。 LINE Notifyとは? 公式サイト https://notify-bot.line.me/ja/ 公式ドキュメント https://notify-bot.line.me/doc/ja/ LINEのトークルームへメッセージを送ることができるAPIです。 R

    LINE Notifyをnode.jsで利用する | DevelopersIO
  • [Swift 4] privateとfileprivateの挙動が変わりますよというお話 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 Swift3でスコープの改変が行われ、「private」に加えて、「fileprivate」というスコープが加わりました。 Swift4ではさらにスコープの改変が行われるそうで、fileprivate の役割がまた少し変わってきます。 自分も忘れてしまわぬよう、しっかりと予習復習をしておこうとブログにしたためることにしました。 Swift3での挙動 fileprivate は、簡単にいうと「同一ファイル内であればアクセスできる」というスコープとして登場しました。 ファイルひとつをモジュールとして考えたときに、その内部では隠蔽されなくてよいだろうという考え方なんだろうと思います。 つまりは、別のクラスや構造体などであっても、その同一ファイル内であれば見ることができるということですね。 具体的にソースで見てみます。 class Hoge { pr

    [Swift 4] privateとfileprivateの挙動が変わりますよというお話 | DevelopersIO
  • Nodeでサーバを立ててReactを使ったページでハロワをやってみる | DevelopersIO

    暑いのか寒いのか分からない時期になってまいりました。寒暖差で疲労コンパイルの齋藤です。 今回はNodeでサーバを立てて そこにReactを使ったページを表示してみます。 また、今回は開発環境の構築をメインにしているので開発環境の部分の説明が多くなります。 今回使ったのはざっと以下のライブラリ・ツールです Node v 8.5.0 babel with JSX eslint webpack & webpack-dev-server express サーバーを立てる まずはexpressというライブラリを使ってHTTPサーバーを立てます。 プロジェクトの初期化をしてexpressをインストールします。 npm init -y npm i express -S 今回作成したサーバのソースです。src/server/index.jsに配置しておきます。 const express = requir

    Nodeでサーバを立ててReactを使ったページでハロワをやってみる | DevelopersIO
  • AWS Batchを使って5分以上かかる処理を実行してみる | DevelopersIO

    どうも!西村祐二@大阪です。 Lambdaは現在(2017/8/17)実行時間が最長5分までという制限があります。 そこで、今回はAWS Batchを使って5分以上かかる処理を実行させてみたいと思います。 AWS Batchとは JobをAWS Batchになげると予め設定しておいたインスタンスを起動し、 ECRまたはDocker Hubからコンテナイメージを取得しタスクを実行してくれます。 また、実行しているタスクがない場合インスタンスを起動してから1時間以内に自動で削除してくれます。 やりたいこと ・CodeCommitに置いてる5分以上かかるスクリプトをコマンド1つで実行したい ・構成はなるべくシンプルにしたい 5分以上かかる処理 今回は例として1分毎にS3に空ファイルを作成する処理を実行してみたいと思います。 下記2つのファイルをCodeCommitの「test-commit」レポ

    AWS Batchを使って5分以上かかる処理を実行してみる | DevelopersIO
  • 二カ月間ブランチを利用した開発フローを実践して感じたメリットとデメリット | DevelopersIO

    記事は当初SVNとGitの比較として「ブランチを用いた開発フロー」のメリット・デメリットについて記載していましたが、 「SVNでもブランチを利用できること」「分散型という言葉に対する記載の誤り」についてご指摘をいただきました。 そのため、ブランチを利用した開発フローに対して感じたことを焦点に記事を修正しております。誤った情報を記載していたこと、SVNに対して誤ったイメージをもつ可能性のある記載をしていたことに対し、深くお詫び申し上げます。 Gitをまともに使い始めて約二ヶ月がたちました。 特に、「ブランチをきる」「修正する」「レビューする」「マージする」という、おそらくGitで想定されている開発フローに沿っての開発はクラスメソッドに入社してからが初めてです。 6月に入社する以前は、開発用のソースコード管理には主にSVNを利用し、1つのバージョンの流れに全ての修正をコミットしていくフローで

    二カ月間ブランチを利用した開発フローを実践して感じたメリットとデメリット | DevelopersIO
  • BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO

    BASHシェルスクリプト実行中に、 例えば下記のように表示させたい場面はよくあります。 実行しますか? (y or N): ここで人間が「y(あるいはYes)」と入力しないと先に進まない、問題があればNと入力して終了したり、CTRL+Cで強制終了させたり。 そんなプロンプト機能を実装してみます。 先にネタばらしをすると、全部readコマンドがやってくれます。 例1 : 「Hit enter key!」 単に実行を一時停止して、問題がなければエンター(リターン)キーを押すことで先に進むようなシェルスクリプトは、このようになります。 #!/bin/bash : (前段階の処理) read -p "Hit enter: " (続きの処理) : 単に「Hit enter: 」と表示して処理が一時停止します。エンター(リターン)キーを押せば先に進みます。 もし前段階の処理で何かしら問題が見つかれば、

    BASHシェルスクリプトで「キー入力待ち」プロンプトを実装する | DevelopersIO
    hikazoh
    hikazoh 2017/07/12
  • AWSクイックスタート:MongoDB on AWS がアップデートされました | DevelopersIO

    こんにちは、菊池です。 AWSクイックスタートでは、公開されたテンプレートを利用することで、セキュリティ/可用性のベストプラクティスに沿った環境を簡単に構築できます。 AWS クイックスタート:AWS で代表的なデプロイメントを自動化 当ブログでも、クイックスタートの1つであるMongoDB on AWSのデプロイを紹介しました。 AWSクイックスタート:MongoDB on the AWS Cloudを試してみた 今回、このMongoDB on AWSがアップデートされ、MongoDB及びAWSの最新機能に対応しました。 AWS Quick Starts MongoDB on AWS 主な変更点 構成イメージは、公式ページの紹介を参照ください。今回のアップデートによる、主な変更点を紹介します。 MongoDB Version 3.2/3.4に対応 以前はMongoDB 2.6または3.0

    AWSクイックスタート:MongoDB on AWS がアップデートされました | DevelopersIO
  • Ansibleのための YAML入門 | DevelopersIO

    渡辺です。 いよいよ今週末にDeveloersIO 2017が開催されます。 当日はAnsibleのハンズオンを担当しますので、参加予定の方はよろしくお願いします。 早速ですが、予習用の資料を用意しました(笑) Ansibleでは、設定ファイルなどのフォーマットとしてYAMLを利用します。 エントリーでは、Ansibleを利用する時に役立つYAMLフォーマットについて解説します。 データ構造フォーマット YAMLはJSONに似た、データ定義のためのフォーマットです。 プログラミング言語とは異なり、ロジックを記述するフォーマットではありません。 アプリケーションでのデータシリアライズに利用されるケースが多く、Ansibleでは設定データの定義ファイルとして利用されます。 ハッシュ ハッシュは、キー: 値のデータ構造です。 プログラミング言語では、連想配列やMapなどと言われます。 キーとコ

    Ansibleのための YAML入門 | DevelopersIO
  • [SQL]レコードから改行を除去する | DevelopersIO

    はじめに データに改行が入っていて、それを取り除きたいということがありました。 データベースに取り込む前に、不要な改行を除去するプログラム書くのも一つの手ではありますが、 SQLを使った方が簡単にできるかと思います。 実行環境 Windows8.1 MySQL5.7 PostgreSQL 9.6 サンプルデータ作成 次のようなテーブルとデータを用意しました。 devdbというスキーマ(db)はすでに作成されているものとします。 改行3種類(LF, CR, CRLF)と改行なしの4パターンです。 commentカラムに入っている改行を除去することを想定します。 CREATE CREATE TABLE devdb.profile(name varchar (16), comment varchar (100)); INSERT PostgreSQL版 INSERT INTO devdb.pro

    [SQL]レコードから改行を除去する | DevelopersIO
    hikazoh
    hikazoh 2017/06/23
  • Angular + RxJS + WebSocket で チャットアプリを作る – Subject 利用サンプル | DevelopersIO

    以前、別の記事でAkka製のチャットサーバを作ったのでシンプルなクライアントアプリも作りました。 バージョン情報 パッケージ名 バージョン WebSocketとSubjectの連携イメージ RxJSの部品は、今回 Subject を使います。Subjectは、定義したバックエンドのデータソースを Subscribe することができ、なおかつバックエンドに対して next によりデータを送出する能力をもっています。一方でWebSocketはコネクションが成立した後、 onmessage イベントに対するハンドラを登録してデータ受信時のアクションを定め、 send によってデータを送信します。この時点で Subject と WebSocketは相性が良いのではないかと考えました。実際この考えを実装した先人がいます。 WebSockets with Angular2 and RxJS – Łuk

    Angular + RxJS + WebSocket で チャットアプリを作る – Subject 利用サンプル | DevelopersIO
  • Amazon RekognitionをAWS SDK for Goから使ってみる | DevelopersIO

    はじめに 最近すっかりコードを書かなくなってしまっていたので、またGolangを勉強しようと思い、AWS SDK for GoからAmazon Rekognitionを使ってみました。 やってみた Golang環境の導入 僕の場合はOS X YosemiteにHomebrewでGolangをインストールしました。 $ brew install go $ go version go version go1.8 darwin/amd64 AWS SDK for Goの導入 AWS SDK for Gogo getで一発でインストールできます。 $ go get -u github.com/aws/aws-sdk-go/ すると、~/go/src/github.com/aws/aws-sdk-go/にAWS SDK for Goが展開されます。 $ ls ~/go/src/github.com

    Amazon RekognitionをAWS SDK for Goから使ってみる | DevelopersIO
  • [Swift 3.1] 全ての数値型に失敗可能変換イニシャライザーが追加されました | DevelopersIO

    数値型に新しくイニシャライザーが追加された こんにちは。モバイルアプリサービス部の加藤潤です。 Xcode 8.3、Swift 3.1が正式にリリースされましたね! Swift 3.1では全ての数値型に失敗可能変換イニシャライザーが追加されました。 proposalはSE-0080が該当します。 Proposed solutionにある通り、数値型にinit?(exactly:)という失敗可能イニシャライザーが追加されました。 // Conversions from all integer types. init?(exactly value: Int8) init?(exactly value: Int16) init?(exactly value: Int32) init?(exactly value: Int64) init?(exactly value: Int) init?(ex

    [Swift 3.1] 全ての数値型に失敗可能変換イニシャライザーが追加されました | DevelopersIO
  • [Swift] Swinjectを使ったDependency Injection | DevelopersIO

    はじめに こんにちは。 最近生後7ヶ月の娘を見た人から「眉毛が垂れててお父さんそっくりですね〜」と言われるのが定番になっている加藤です。 さて、今回はSwiftのDIフレームワークであるSwinjectの話です。 DIとは DIはDependency Injectionの略で、日語では「依存性の注入」と訳されます。 「DIとは何か」を説明した記事は山ほどありますが、ここでは一番端的に表現している記事を見つけたので引用します。 “依存性注入とはインスタンス変数にオブジェクトを与えるということです。当にただそれだけです。” - James Shore Swiftにおける現実的なモックより引用。 つまり、あるオブジェクトが依存しているオブジェクトを外から渡してあげることを意味します。 依存しているオブジェクトを中で作らずに外から渡してあげることで、オブジェクト同士を柔軟に組み合わせることが可

    [Swift] Swinjectを使ったDependency Injection | DevelopersIO
  • [R] 実録・手作業で行なっていた集計・グラフ化作業をRで自動化した話(Tips編) | DevelopersIO

    はじめに 先日は概要編と称して主にエクセルを用いて手作業で実施していた集計・グラフ化作業をRを用いてスクリプトで管理する体制に移行した概要を記述しました。 今回はTips編と称して、集計・グラフ化作業をRのスクリプト化するにあたって役に立ったTipsを10個紹介します。 Table of contents ライブラリが入っていなかったらインストールする ディレクトリが無かったら作成 特定の離散値しかとらないカラムに対してカウント数0も含めて集計 データフレームの因子データを一括で数値データに変換 データフレームをライブラリを用いてエクセルファイルとして出力 グラフの判例を枠外に出す グラフ内の日語文字化けを直す 対散布図と相関の度合いをライブラリを用いてグラフで出力 調査を重ねるにつれて変化するCSVスキーマの差分吸収 SELECT 集約関数 FROM テーブル GROUP BY カラム

    [R] 実録・手作業で行なっていた集計・グラフ化作業をRで自動化した話(Tips編) | DevelopersIO
    hikazoh
    hikazoh 2017/03/13
  • MongoDBにTLS/SSLで接続する | DevelopersIO

    こんにちは、菊池です。 MongoDB に接続する際にTLS/SSLを有効にする方法を調べてみました。 概要 クライアントがMongoDBへ接続する際の通信をTLS/SSLで暗号化します。クライアント認証/サーバ認証を行うことも可能ですが、今回は暗号化のみが目的ということで自己署名証明書を作成して実施しました。 詳細は公式ドキュメントを併せて参照してください。 Configure mongod and mongos for TLS/SSL 環境はAmazon Linux、MongoDBはバージョン3.4.2を使用しています。 また、前提としてopensslがインストールされている必要があります。(Amazon Linuxはインストール済み) やってみた 1. MongoDBインストール まずはMongoDBをインストールします。yumでインストールするため、/etc/yum.repos.d

    MongoDBにTLS/SSLで接続する | DevelopersIO
  • 【小ネタ】自分のFacebookアカウントが乗っ取られてる可能性があるかチェックする方法 | DevelopersIO

    こんにちは、せーのです。今日はタイムラインを流れてきたある記事に丸乗っかりしてみたいと思います。 FBを乗っ取られる人が増えているらしい 夜中にひたすら犬をかわいがっていた所、私のFBにこんな記事が流れてきました。 Facebookのアカウントはなぜ乗っ取られるのか? 読んでみると、「Facebookのアカウントが乗っ取られるのは診断アプリが原因」「権限を奪ったあと、ユーザが忘れるまで待ってから広告をばらまき始める」とのこと。 要はOAuth2でサクッとクリックできちゃうから過剰な権限を与えても気づきにくいよね、というお話です。ま、そうですよね。 で、対策は、というと、、、「診断アプリはやらないようにしよう」と。なるほど。確かにやらなければそもそも巻き込まれないですもんね。ここまではそんなに驚かなかったのですが私が驚いたのは一番下のSNSシェア数。 さ、37000?? これはつまり、そもそ

    【小ネタ】自分のFacebookアカウントが乗っ取られてる可能性があるかチェックする方法 | DevelopersIO
  • [iOS][Swift3.0] 画像をマスクする | DevelopersIO

    iOSでは画像をマスクとして任意の形に切り抜くことが出来ます。 マスクの画像は、白をブロックし黒を透過させます。 なので切り抜きたい部分を白→灰色にすると半透明な感じになります。 透明な背景に黒で書かれているイラストマスク画像として機能しません。(イラストが白色であればマスクされます) 環境 今回は下記環境で試しています。 Xcode 実装 下記がマスクを適用する元画像とマスク用の画像とします。 // 元画像 let image = UIImage(named:"image") // マスク用画像 let maskImage = UIImage(named:"mask") マスク画像をCGImageにしてマスクを作成します。 let maskRef = maskImage!.cgImage, let mask = CGImage(maskWidth: maskRef.width, hei

    [iOS][Swift3.0] 画像をマスクする | DevelopersIO