開発Tips&ログ

iOS/Androidアプリ、WEB開発、インフラなどソフトウェア開発についての技術ブログ。

EthereumでICO実装するときの用語集

はじめに

色々用語あるので自分の解釈でまとめておく。

間違っている所は教えてくださいな:)

※随時更新予定

用語集

トークン(Coin)を対価に資金を調達すること

  • Ethereum

分散アプリケーションのためのプラットフォーム

  • Geth

Ethereumブロックチェーンに接続するためのミドルウェア(クライアント)

  • Solidity

スマートコントラクトの記述言語

ネットワークでやり取りされるブロックチェーンの最初のブロックであるGenesisブロックの情報を記述したファイル

  • solc

Solidityコンパイラ

契約とサービスの実行を自動で行うシステム

  • DApps

分散型アプリケーション

  • Truffle

Solidityのフレームワーク

  • ERC-20

ICOトークンの実装における取り決め

  • Gas

イーサリアムプラットフォームを利用する際にETHを利用して支払う手数料

  • Zeppelin Solidity

Solidityのライブラリ

RubyでOutlookAPIのOAuth2認証

はじめに

OutlookAPIを利用する機会があったので、今回はRubyでOAuth2認証をする方法について書く。

ドキュメントはこちら

docs.microsoft.com

アプリの登録

まずはこちらでアプリケーションの登録をする。

Sign in to your Microsoft account

認証コードの取得

認証コードを取得するメソッドは下記のようになる。

ClientIdClientSecretはアプリを登録すると取得できるのでそちらを利用する。

MICROSOFT_OAUTH_URL = 'https://login.microsoftonline.com'
CLIENT_ID = 'your-client_id'
CLIENT_SECRET = 'your-client_secret'
REDIRECT_URI = 'https://your-redirect_url'

def get_oauth_url
    "#{MICROSOFT_AUTH_URL}/common/oauth2/v2.0/authorize?client_id=#{CLIENT_ID}&response_type=code&redirect_uri=#{URI.encode(REDIRECT_URI)}&response_mode=query&scope="User.Read"&prompt=consent"
end

このURLに飛ぶと、認証の画面が表示され許可をすると指定したリダイレクトURLに戻ってくる。

そして、次のフローで利用するcodeパラメータを取得できる。

http://localhost/myapp/?code= AwABAAAA...cZZ6IgAA&session_state=7B29111D-C220-4263-99AB-6F6E135D75EF&state=D79E5777-702E-4260-9A62-37F75FF22CC

アクセストークンとリフレッシュトークンを取得する

上の手順で取得したcodeパラメータの値を使い、API利用のためのトークンを取得する。

下記のリクエストを送る。

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=AwABAAAA...cZZ6IgAA&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F&client_id=<CLIENT ID>&client_secret=<CLIENT SECRET>

すると、下記のようなレスポンスを受け取れる。

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "token_type":"Bearer",
  "expires_in":"3600",
  "access_token":"eyJ0eXAi...b66LoPVA",
  "refresh_token":"eyJ0eXAi...b66LoPVB",
  "scope":"Mail.Read",
}

access_token が取得できればあとは、各エンドポイントを叩けるので自由にデータを取得できる。

Ruby要素そんなになかったです。

Google Homeを少し使ってみた感想

今更ですが、GoogleHomeを購入したので2週間ほど使用してみての感想です。

f:id:hiring-y:20180527212849j:plain

必要なもの

スマフォ端末はGoogleHomeをセットアップする際に必要です(もしかしたらいらないのかもしれませんが、そのやり方はわかりませんでした)。

セットアップ

セットアップ方法はとても簡単です。

これだけです。専用アプリを起動すると勝手に近くのGoogle Homeを検索してくれて、あとは使用言語だったりwifiの設定だったりをするだけ。特に困るようなことはなかったですね。

使い方

f:id:hiring-y:20180527213007j:plain

GoogleHomeに「OK, Google」もしくは「ねぇ、Google」と話しかけると↑こんな感じで光るので、その間はGoogle Homeがユーザーの話を聞き取ってくれます。ただ必ず一問一答なので1つやり取りをしたら、また「OK, Google」という必要があります。これはちょっとめんどくさいかもしれないですね。

音楽

Spotifyなどと連携させておくとGoogle Homeから音楽を流せるようになります。

天気

これは一番使ってる機能です。ただ単に「今日の天気は?」と聞くと現在位置をもとに教えてくれます。

  • 「沖縄の天気は?」
  • 「1週間後の天気は?」
  • 「アメリカの天気は?」(ワシントンの天気を教えてくれました)

ニュース

これはGoogleが喋るのではなくラジオニュースが流れてきます。

  • 「今日のニュースは?」
  • 「IT関連のニュース教えて」

ピカチュウトーク

OK, Google ピカチュー」と言うとピカチューと話すことができます笑。まず使わないですが、お子さんがいる場合にはいいかもしれないですね。

www.youtube.com

Siri

「Siriについてどう思う?」と質問すると色々なパターンで返答してくれます。笑 気になる方は質問してみるといいかもしれないですね。

総じて

音楽流して今日の天気を聞いてニュースを流すだけでもすごい便利になります。すげーってなります笑

ただSpotifyと連携させたくらいでまだ何もできてないので、これからは他のアプリ使ってみたりコンソールからいじってみたりしてみたいです。

AppStoreレビューページへ遷移

はじめに

アプリ内レビューに関しては、iOS11からはSKStoreReviewControllerクラスを使うことが推奨されていて 1年に3回までしか表示できないなどの制約があります。

今回はシンプルに、AppStoreのレビューページに遷移させるだけです。

レビューページURL

StoreページのURLにパラメータを付与するのみです。

e.g. ?action=write-review

実装コード

実際のサンプルコードを書きます。(LINEさんのレビューページを例にします)

func segueAppStoreReview() {
  if let url = URL(string: "https://itunes.apple.com/jp/app/line/id443904275?mt=8&action=write-review") {
    UIApplication.shared.open(url)
  }
}

レビューページに遷移しました :)

f:id:k0uh0tt:20180526154048j:plain

Dockerコマンドチートシート

f:id:k0uh0tt:20180523225656j:plain

コマンドなんだっけなあっていう場面が結構あるので残しておきます。

忘れた時に使ってくだせい。

  • コンテナ作成・実行

$ docker run ubuntu:latest

  • イメージダウンロード

$ docker pull centos:7

  • イメージ一覧

$ docker images

  • 詳細情報確認

$ docker inspect centos

  • イメージ検索

$ docker search centos

  • イメージ削除`

$ docker rmi centos

  • コンテナ生成

$ docker create centos

  • コンテナ起動・停止

$ docker start

$ docker stop

  • コンテナ削除

$ docker rm centos

  • コンテナ一括削除

$ docker rm $(docker ps -aq)

  • 稼働コンテナ一覧

$ docker ps

  • 稼働コンテナへの接続

$ docker attach

  • 稼働コンテナでプロセス実行

$ docker exec

  • プロセス確認

$ docker top

  • Dockerfileからイメージ作成

$ docker build

ReactNativeにESLint導入

f:id:k0uh0tt:20180515093018p:plain

はじめに

ReactNativeにESLintを導入する方法。

エディタはもちろんVim

ESLint設定

まずは、プロジェクトでの設定。

ESLintの設定は、下記を用いる。

github.com

⑴必要パッケージをインストール

$ npm install --save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint babel-eslint

⑵. .eslintrcファイル作成

{
  "parser": "babel-eslint",
  "extends": "airbnb"
}

Vim設定

⑴. プラグイン導入

NeoBundle使う。

NeoBundle 'scrooloose/syntastic'
NeoBundle 'pmsorhaindo/syntastic-local-eslint.vim'

⑵. 設定周り

""""""""""""""""""""""""""""""
" syntastic
""""""""""""""""""""""""""""""
" ref. https://github.com/scrooloose/syntastic#settings

" エラー行を表示
let g:syntastic_enable_signs = 1
" location list を常に更新
let g:syntastic_always_populate_loc_list = 0
" location list を常に表示
let g:syntastic_auto_loc_list = 0
" ファイルを開いた時にチェック
let g:syntastic_check_on_open = 1
" 保存時にチェックする
let g:syntastic_check_on_wq = 1

let g:syntastic_javascript_checkers=['eslint']

忘れずに :NeoBundleInstall

ここまでで下記のキャプチャのようなエラーが出ているはず。

f:id:k0uh0tt:20171202235741p:plain

ESlint設定おまけ

.jsx だけでなく .js は許可したいので、.eslintrc にルールを追加しておく。

"rules": {
    "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
  }

これで一通り設定完了。

[2018年版] iOSアプリ申請の前に準備しておいたほうが良い情報

iOSアプリ開発後、スムーズにアプリ申請を行うために以下の情報を事前に用意しておくと良いです。

基本的にiTunesConnectのhintを引用してます。

前提

  • プロビジョニングプロファイル、証明書、ipaは作成済み

必要な情報

アプリ名

App Store に表示されるアプリ名称。30文字以内。

サブタイトル

iOS 11 以降のApp Store でアプリ名前の下に表示されるアプリ概要。(30字以内)

BundleID

バンドルIDは Xcode 内で使用されている値と一致する必要がある。最初のアップロード後は変更不可。

プライマリ言語

デフォルトの言語。アプリ情報がローカライズされていない地域のAppStoreではプライマリ言語がアプリ内で使用される。

カテゴリ

アプリに当てはまるカテゴリを選択する。(2つ)

プライバシーポリシーURL

子ども向けであったり、無料でもユーザー登録が必要な場合には必要。もちろんその他法律で必要とされる場合には必須であり、ユーザーやデバイスのデータを収集する場合もプライバシーポリシーが推奨される。

アプリの説明文

アプリの特長や機能の詳細など。(4000字以内)

プロモーション用テキスト

プロモーション用テキストを使用すると、更新内容を提出することなく、App Store の訪問者に現在のアプリ機能について知らせることができる。このテキストは、iOS 11 以降にてApp Store の説明の上に表示される。(170字以内)

App Store用のアイコン(1024x1024)

App Store で表示されるアイコン。Xcode 9 以降を使用してアプリをビルドした場合、このアイコンを設定する必要はない。Xcode9以前を使用してビルドしている場合、アイコンの設定が必要。

スクリーンショット

詳細は以下に記載。

Copyright(組織名)

アプリを所有する人物または組織の名前を入力する。

アプリ価格

App Storeでの販売価格。

サポート用サイト

アプリのサポート情報へのURL。

マーケティング

アプリのマーケティング情報へのUR。

検索キーワード(100文字以内)

アプリを説明するキーワード。キーワードを使用するとApp Store での検索結果がより正確になる。キーワードはコンマ(,)で区切る。

App Review時に必要な情報

App Review チームからの問い合わせ先となる、組織の担当者。

  • 連絡先情報(名前、メールアドレス、電話番号)
  • サインイン情報(ログイン機能があるアプリの場合)

スクリーンショット

スクリーンショットiPhoneで5種類、iPadで3種類用意する必要がある。 以下、全てpixel値

iPhoneスクリーショット

ディスプレイ 画像サイズ
3.5インチ 640 × 960
4.0インチ 640 × 1136
4.7インチ 750 × 1334
5.5インチ 1080 × 1920
5.8インチ 1125 × 2436

iPadスクリーショット

ディスプレイ 画像サイズ
9.7インチ 768 × 1024
10.5インチ 1668 × 2224
12.9インチ 2048 × 2732