Coffee Breakにプログラミング備忘録
Don't worry about the details !!

[MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」

By admin On 2018年5月20日 · Leave a Comment · In Git, Mac
Follow @mycb750

はじめに

macのバージョンをHighSierraにアップデートしてgit pushをサーバに実行するとエラーになりました。
ssh接続もできなくなっていました。

Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.

原因

sshクライアント側の使用している暗号がサーバ側で対応していない判断になりこのようになるそうです。

対応

ssh/confgファイルの設定を変更します

# vim ~/.ssh/config

下記の内容を追加します。これによりローカルクライアントでサポートされている暗号がリモートサーバーによって提供されている暗号と一致することを確認するために調整されます。

Host *
Ciphers +aes256-cbc

[iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法

By admin On 2017年9月18日 · Leave a Comment · In iOS
Follow @mycb750

はじめに

iOS11よりTwitter、Facebook、Flickr、Vimeoアプリのサインイン連携がセキュリティの観点からできなくなりました。
他のサードパーティーアプリと同様の扱いになりました。
アプリでTwitterシェアやFacebookシェアなどをSLComposeViewControllerで実装している場合に挙動が変わります。
ios11のGM版(製品リリース手前)で確認するとアプリがインストールしてあってもFacebook,Twitterのシェアボタンが機能しません。
→GM版のバグな可能性が高いため、正式リリース(9/19)したら改めて動作確認すると良いと思います。

Social accounts have been removed from Settings iOS 11. Third-party apps no longer have access to those signed-in accounts,

appleinsider参考リンク
http://appleinsider.com/articles/17/06/05/apple-drops-twitter-facebook-flickr-vimeo-integration-in-ios-11

SLComposeViewControllerで実装した場合の挙動の違いについて

Twitter,Facebookなどのアプリがインストールされている場合はSLComposeViewControllerの実装のままで問題なく動作するはずです。
→ベータ版、GM版では動いていないので不安
いずれにせよSLComposeViewControllerは推奨されていないため、移行対応を行ったほうが間違いありません。
https://stackoverflow.com/questions/45450300/twitter-sharing-in-ios-11

アプリをインストールしていない場合にシェアが連携できないためできなくなります。
特に実装アプリで処理を入れていない場合は、ボタンを押しても無反応になります。
(アプリをインストールしていないユーザは少ないので特に無視でも問題ないかもしれませんが、ストアに誘導など入れると親切です)

対応方法について

Twitter,Facebookの対応についてのみ記載します。
基本的には公式の各SDKを利用して行えば問題ありません。
(またはWebのSafariなどに認証を投げてシェアさせる方法もできます)

Twitter対応方法

公式で移行手順についてアナウンスしています。
TwitterKit3を使ってくださいとのことです。
https://dev.twitter.com/twitterkit/ios/migrate-social-framework

Facebook対応方法

公式ページよりFacebookSDKでシェアを実装してください。
https://developers.facebook.com/docs/ios/getting-started?locale=ja_JP

[iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について

By admin On 2017年9月13日 · Leave a Comment · In iOS
Follow @mycb750

はじめに

iPhone発売10周年のApple Special Eventが日本時間9月13日午前2時から開催されました。
主な発表内容をメモします。

https://www.apple.com/apple-events/september-2017/?&mnid=snGh0T8TZ-dc_mtid_20925pda40400_pcrid_220037521082_&cid=wwa-jp-kwgo-features–slid-&muid=bf7e4a7c-6600-4ebe-8037-4ce58db3e56c&mtid=20925pda40400&aosid=p238

iOS11について

iOS11を9月19日にリリースすると発表しました
http://www.techradar.com/news/ios-11-release-date-news-and-features

発表内容
http://www.techradar.com/news/ios-11-release-date-news-and-features

iOS開発者に関係する発表について

もともと発表されていたiOS11に関すること以外はありませんでした。

ios11の開発側の対応については過去記事を参考ください。
http://to-developer.com/blog/?p=2539

iPhone8/8 Plus発表

予約注文は9月15日から9月22日発売です。
(iPhone8が4.7インチ、iPhone8 Plusが5.5インチ)
ARkitで開発したAR(拡張現実)アプリが対応しています。

スペックなど詳細は公式ページを参照
https://www.apple.com/jp/iphone-8/

iPhone x発表

予約注文は10月27日から 11月3日発売です
(iPhone xは5.7インチ)

スペックなど詳細は公式ページを参照
https://www.apple.com/jp/iphone-x/

物理ホームボタンの廃止

iPhone xより物理ボタンがなくなりディスプレイ化します。iphone7も同様ですがタップは指に振動で伝わるため、ボタンを押した感はあるようです。

OLED(有機エレクトロルミネッセンス)ディスプレイで画面全体がディスプレイ化

端末全体がディスプレイになりました。
OLEDは電流を流すと発光する仕組みを使ったものでバックライトなどが不要になり、薄型に貢献するものです。
これにより画面をiphoneの縁まで使うことができ、端末サイズをあげずにディスプレイサイズを大きくすることができるそうです。

韓国のサムスンやLGエレクトロンはOLED搭載スマホが既に出ています。

OLEDのメリット・デメリットについて
http://securitysoft.asia/oled/smartphone/merit-demerit.php

顔認識(FaceID)でロック解除

全面のフロントカメラでFaceIDに対応し端末のロック解除ができるようになります。

AppleWatch Seriese3発表

https://www.apple.com/jp/watch/

注文は9月15日から 9月22日発売

スペックなど詳細は公式ページを参照
https://www.apple.com/jp/watch/

ワイヤレス充電に対応

ワイヤレス充電Qi(チー)規格でiPhone8よりワイヤレス充電に対応するそうです。
充電マット(AirPowerマット)は来年発売予定です。バッテリーの駆動時間も最大2時間延びるようです。

[iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];

By admin On 2017年9月12日 · Leave a Comment · In error, Firebase, iOS, Swift
Follow @mycb750

はじめに

iOS開発でFirebaseのStorageとAuthを使おうとしたときに出たエラーが公式ページ見てもよくわからなかったのでメモして置きます。

[Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: https://goo.gl/ctyzm8.

Firebaseの実装について公式
https://firebase.google.com/docs/ios/setup

対応

AppDelegateのinitへFirebaseコードを追加

override init() {
super.init()
FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
}

これで治りました。applicationメソッドでFirebaseApp.configure()を試したのですがそれだと何故かうまく行かなかったです。
Firebaseの仕様も今年の6月に変わっているのでひとのブログとか参考にするとうまくいかないので注意です。
公式も日本語版の翻訳は速度が遅いのとあてにならないので英語版を読みましょう。

[iOS]2017年9月リリースのiOS11で開発者が対応するべきこと

By admin On 2017年9月1日 · Leave a Comment · In iOS
Follow @mycb750

はじめに

iOS11関連で開発者が対応しなければならない内容についてメモします。

iOS11が今年9月にリリースされます。(9月23日周辺が予想されています)
秋の発表イベントは9月12日開催。
https://www.gizmodo.jp/2017/09/apple-special-event-2017fall.html

9月12日の発表イベントでiOS11を9月19日にリリースすると発表しました
http://www.techradar.com/news/ios-11-release-date-news-and-features

今回は過去ipv6対応やATS対応などのような重い対応が必要になることはありません!

64ビット対応について

iOS8の対応のときに64ビット対応が必要とアナウンスされていましたがいよいよiOS11から32ビットアプリは動作しなくなります。
64ビット対応については過去記事を参考ください
http://to-developer.com/blog/?p=1398

インストールしているアプリから32ビットアプリで動作しなくなるアプリ一覧確認方法

設定画面より「設定」 → 「一般」 → 「情報」 → 「App」で端末にインストールしているアプリの中からios11で動作しないアプリの一覧が確認できます。
つまり32ビットアプリということになります。不安な場合は一度こちらで確認するといいと思います。

参考:
http://usedoor.jp/howto/digital/iphone-ipad/ios-32bit-app-ichiran-hyouji/

意外と大手アプリで対応がまだできてないアプリが意外と多くて驚きます。
Adobe Ideaアプリ、アメッシュアプリが8月31日現在でまだ未対応でした。

iOS11で変更(非推奨)APIの修正について

swift/objective-cで追加や非推奨となるAPI一覧が公開されているため、更新されたAPIはios11用にしてあげるといいです。
非推奨なので基本的には使えるはずですがいずれ使えなくなる可能性があります。
swiftのメソッドは非推奨ではなくremoveになっているのが結構あるので別途用意されている代わりのメソッドに移行する必要があります。
iOS 10.3 to 11.0 API Differences

Facebook,Twitter,Flickrのシェア機能をアプリで使っている場合の対応

Twitter、Facebook、Flickr、Vimeoの統合をできなくしたようです。
アプリでTwitterやFacebookのシェアやいいねをSDKではなくSLComposeViewControllerで実装している場合の挙動が変わる事になります。
TwitterやFacebookのアプリがインストールされている場合は問題なく実行できるが、アプリがインストールされていない場合にシェアやいいねができなくなります。また別記事で言及していきます。

appleinsider参考リンク
http://appleinsider.com/articles/17/06/05/apple-drops-twitter-facebook-flickr-vimeo-integration-in-ios-11

iOS11で追加された目玉機能など

ios11でaddされているAPIでiOS11ならではの目玉機能も多いため積極的に取り込むといいと思います。
特に拡張現実(ARKIT)などいままでにできなかったアプリが個人で開発できるため、アイデア次第で大きなマネタイズのチャンスになります。

過去記事参考
[iOS]WWDC2017発表のiOS11から追加された新API(Framework)について

ユーザー視点でiOS11のアップデートに備える

公式ページで「iOS 11 へのアップデートに備える」ページを公開しています
https://support.apple.com/ja-jp

参考までに主に端末がiOS11に対応しているかやバックアップについてなどをアナウンスしてくれています。

今人気の現金化サービスCASH(キャッシュ)を使ったレビュー

By admin On 2017年8月26日 · Leave a Comment · In Blog
Follow @mycb750

はじめに

技術ブログですが、面白いサービスCASHが8/24から復活したようなので、利用したレビューをメモします。
※CASHは6/28に1日でパンクしてサービスストップしていました

公式アナウンス
https://cash.jp/comeback/

キャッシュは上限2万円で商品をスマホで撮影(現在はiosのみ)してその場で査定金額を出して買い取るサービスです。
サービスストップから復帰までに改善点がいくつかありました。商品はブランド物のみ、上限は1日トータル1000万円までとビジネスモデル化されました。
商品がブランド物に限定されたため、大分サービスとして落ち着いたようです。
サービスのターゲットユーザはメルカリやヤフオクなどで安くても売る手間を削減したい人を狙っているようです。

公式サイト
https://cash.jp/

何を売ろうか

早速使ってみます。ブランド物しか現在買い取りしてくれないので、要らないブランド物3点で試してみます。

①エンポリオ・アルマーニ財布

12年以上前に吉祥寺のショップで3万円で買ったエンポリオ・アルマーニの財布です。
もう10年以上使ってボロボロです。今はユナイテッド・アローズの長財布を気に入って使っているので、お役御免のため売ってしまいます。
結構ボロボロなのでヤフオクとかでは売れないと思いました。

エンポリオ・アルマーニ

②ピエール・カルダン時計

ピエール・カルダンの時計です。原価おそらく2,3万くらいの時計と思いますが、今は30万のオメガ時計を使っていて使う目処ないので売ってしまいます。
ピエール・カルダン

③エンポリオアルマーニのブレスレット

エンポリオ・アルマーニのブレスレットで原価1万くらいだったと思います。今は幸せを探してパワーストーンのブレスレットつけているのでお役御免です。
エンポリオ・アルマーニ

実際に使ってみる

アプリを立ち上げます。電話番号登録で本人確認をしています。
全体的にシンプルでわかりやすいUIです。
まずは下タブのキャッシュから商品を登録します。①エンポリオ・アルマーニ財布を登録します

ui

ブランドとカテゴリを選択します。

ブランド選択

コンディションを選択します。
ここは正直にいれるとサービス側が助かります。
お財布結構ボロが来ているので低めの☆2に設定しました。

IMG_3808

こんな感じになりました
入力内容

それでは査定してみます。数秒で結果がでました!
査定

安!Σ(゚Д゚)

次に②ピエール・カルダン時計を査定します
IMG_3790

安!Σ(゚Д゚)

次に③エンポリオアルマーニのブレスレットを査定します

IMG_3792

(・∀・)イイネ!!

合計2300円でした。
サービス側で商品をメルカリとかで売ってくれれば2300円は超えるんじゃないかなという気もしたので儲かる仕組みはあるのかなとも感じます。

あとは下タブのアクティビティから集荷依頼の登録をします。集荷の日付と個人情報の入力です。
これで集荷の送料は無料です!!商品を梱包して集荷がきたら渡せば終了です。現金はウォレットタブから引き出せます。

IMG_3802

ためしに売るきはないのですが、30万のオメガ時計を査定してみました
IMG_3810

IMG_3798

!Σ(゚Д゚)

レビュー

未来サービスです!!!!
これが定着したらまたどこかの会社が真似して寡占状態になるのかもしれません。
仕様を確り定めないとお金バラマキアプリです。
キャッシュがない会社だと仕組み的に直ぐ潰れるので、なにか別サービスですでに成功している大企業とかがやるんでしょうか。

とにかく査定が数秒で驚き。
査定のロジックがどのようになっているか知らないのですが、ブランドとカテゴリ(時計)で相場を出してユーザ任せの5段階指定のコンディションで80%以上決めているような仕上がりです。残り20%でカメラで撮った画像データも流行りのAI的な要素で判定している可能性もありますが、ほぼ機能していないと予想します。細かいキズがあるないなどは間違いなく判定できていないと思います。
もっと査定の精度が上がればよりサービス寿命が伸びると感じます。

未来道具を思い出した!

昔ドラえもんのポケットから出てきた「自動質屋機」を思い出しました。
これは物を入れるとその場で査定して、現金が出てくるというものです。期限までにお金を返さないと物が没収されるという質屋道具でした。
未来は凄いなと思いますが、現代のサービスも大分未来化したなといった感想です。

old-dora

new-dora

旧ドラえもん(大山のぶ代)のときに観たんですが、新ドラえもんでも同じネタやってました。

サービスの改善ポイント

勝手に思いついたことをいくつか書いておきます。
結論的にはまだ本来仕様をもっと詰めたほうがいい状態のまま本リリースしちゃった感が強いサービスです。まずはサービスが体制を整えるまではトライアル版としてユーザを限定(招待制など)しないとキャッシュがなくなりまたサービスストップしてしまうのでは・・・・。

査定が弱い

査定要素がブランド、カテゴリ、コンディション、実物のカメラ画像のみしかないです。
AIで実物のカメラ画像からビッグデータ的な比較(してるかもしれないけど査定が悪い)をしてとかであればいいと思いますが、そこまでたどり着いている状態ではないため、もう少査定要素を増やしたほうがいいのではと思いました。(おおよその購入日、定価、購入金額、使用期間など)
外箱や保証書などの有無とか普通ならかなり金額変わる要素なのにそれすら聞きわすれているという素人感も感じました。

コンディションのユーザ頼み仕様

状態の5段階評価を決めるコンディションが査定をかなり金額を左右している要素でした。(同商品でコンディションを変更して金額の変動が2倍ほどありました)
ユーザが不正なコンディションを入れると評価が下がる?などの仕組みはあるようですが、それでいいのか?と思ってしまいます。
仮の査定を行うだけにして、本査定はあとから人の目で鑑定して多少の査定変更をするなどしたほうが真っ当なのではと思いました。
まだ今の技術だけでは無理なのがサービス仕様から感じ取れて残念でした。

アプリのクラッシュ率が高すぎる

利用時間帯が翌日10時から開始して開始3日目の利用で上限の1000万を超えたとのことで30分程で終了しました。
その時間帯にアプリを触るとどのボタンを押してもだいたいクラッシュしてアプリが落ちます。今回10回は落ちました。
混み合っているなどのアナウンスがでるような作りにしたほうが良いです。アプリのUIは100点です、アプリの実装は30点程かと思います。

上限1000万

10時開始で1日の上限が1000万で開始していますが、サービス開始まもなくだからかもしれませんが、一斉にアクセスがありほぼ30分で上限で終了します。24時間のうち30分しか稼働しないサービスになっています。ユーザもそれを知ってか急いで使わなきゃいけない状態が続いてあまりいい状態ではありません。

[Pandoc][Mac]pandocでmarkdownからwordファイル作成

By admin On 2017年8月13日 · Leave a Comment · In ライブラリ
Follow @mycb750

はじめに

ドキュメント変換ツールのpandocについてメモします。
markdownで書いたドキュメントをlatexやwordファイルに変換したり、その逆変換をしたりができます。
wordのバイナリの場合、gitでコミットして差分が確認できないですが、markdownなどで作成すれば確認できるようになります。
レイアウトも考えて作るのが面倒でとりあえずテキストをって場合にmarkdownで書いてあとから、レイアウトはwordかlatexなどと言う風に使うことができます。

公式サイト
https://pandoc.org/

日本語ガイド
http://sky-y.github.io/site-pandoc-jp/users-guide/

リポジトリ
https://github.com/jgm/pandoc

pandoc概要

Pandocは Haskell で書かれたライブラリおよびコマンドラインツールであり、 あるマークアップ形式で書かれた文書を別の形式へ変換するものです。

対応している入力形式は以下の通りです

markdown
Textile (のサブセット、以下同様)
reStructuredText
HTML
LaTeX
MediaWiki markup
Haddock markup
OPML
Emacs Org-mode
DocBook
出力形式は以下の通りです:

プレーンテキスト
markdown
reStructuredText
XHTML
HTML 5
LaTeX (beamerスライドショーを含む)
ConTeXt
RTF
OPML
DocBook
OpenDocument
ODT
Word docx
GNU Texinfo
MediaWiki markup
EPUB (v2またはv3)
FictionBook2
Textile
groff manページ
Emacs Org-Mode
AsciiDoc
InDesign ICML
HTMLスライドショー:Slidy、Slideous、DZSlides、reveal.js、S5
PDF出力(LaTeXがインストールされているシステムで使用できます)

引用:http://sky-y.github.io/site-pandoc-jp/users-guide/

macにpandocインストール

homebrewでインストールします。

$ brew install pandoc

きれいなレイアウトのwordに変換

markdownで書いたものをそのままwordにpandocで変換しても、レイアウトが綺麗にはなりません。
そのため一度ワードでスタイルやヘッダー、フッターなど作ったテンプレートのwordを用意して、それをベースにmarkdownからwordにすると綺麗にレイアウトも整います。
もっとレイアウトをきちんとしたい場合はlatexを使うといいと思います。

markdownからテンプレートのwordをベースにword作成

hoge.mdファイルをtemplate.docxのスタイルをベースにcomplete.docxを作ります

$ pandoc hoge.md –reference-docx=template.docx -s -o complete.docx

wordからmarkdown変換

hoge.docxからhoge.mdを作ります。(word→markdown)

$ pandoc hoge.docx -t markdown-raw_html-native_divs-native_spans -o hoge.md

一度wordのファイルで序盤だけ作り、markdownに変換してからそれを追加で作成するとあとでword変換するときにレイアウト崩れを防げると思います。

[Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現

By admin On 2017年8月9日 · Leave a Comment · In Android, 宣伝
Follow @mycb750

はじめに

映画サマーウォーズで健二が夏希先輩の誕生日を聞いて曜日を即座に言い当てた曜日当てを実現するアプリを作りました。

健二と同じことを再現できるアプリです。

日付から曜日を算出するにはツェラーの公式(モジュロ演算)に沿った複雑な計算が必要になります。
※サヴァス症候群などの才気ある人はカレンダーを丸暗記して数秒で回答する人もいるようです

サマーウォーズのような誕生日(1900年代から2000年代限定であれば比較的暗算も簡単)当てや大分過去に遡った日付、未来の日付でも同様にアプリを使うと曜日を言い当てることができるようになります。
まずはAndroidアプリを作りました。iOSアプリも今後作る予定です。

アプリインストールはこちら

アプリ詳細

アプリの詳細より引用

当アプリは、音声認識により日付から曜日当てを行うための(バイブでこっそり通知)お遊びアプリです。
アプリを実行して胸ポケットやズボンポケット、テーブルなどに置いて利用すると相手にわからずに曜日を知ることができます。

音声認識は次の仕様になります
・文章に西暦(和暦は非対応)を話すと曜日を知らせます(画面表示・バイブ通知)
・音声認識は西暦の年月日が含まれる場合に曜日を返すが月日の場合は当年として曜日を知らせます
・バイブ通知は「日曜=1…土曜=7」として回数分のバイブで知らせます

■音声認識の例
「2000年8月9日」→2000/8/9として曜日を算出
「えっと、2000年の8月の9日です」→2000/8/9として曜日を算出
「8月9日です」→2017/8/9として曜日を算出

■音声認識レベル
機種によりマイクの認識レベルが良い場合、悪い場合があります。
※端末のマイクの感度については機種により設定が可能なため設定画面より設定ください
周りに雑音が多い場合は認識ができない場合がありますので、認識の程度を事前にご確認ください

■設定項目
1)アプリを閉じても継続することが可能です(on/off切り替え)
2)ポップアップによるエラーや認識状態の表示切り替えが可能です(on/off切り替え)
3)バイブの強さを設定可能です

アプリインストールはこちら

[Android]起動しているActivityを取得するadb shell コマンド

By admin On 2017年8月2日 · Leave a Comment · In Android
Follow @mycb750

はじめに

Androidを起動中にどのアクティビティか確認するのに役立つコマンドをメモします。
adb shellのdumpsysコマンドを使うとシステムのダンプ(出力)できます。メモリの使用状況やネットワーク関係の情報など確認できます。

起動しているActivityを確認する

$ adb shell dumpsys activity | grep -B 1 “Run #[0-9]*:”

画面を開いてファイル名をすぐに知りたい時に便利です

[Android][Kotlin]kotlin学習で参考になるサイト一覧

By admin On 2017年7月11日 · Leave a Comment · In Android, Kotlin
Follow @mycb750

はじめに

javaからkotlinに移行して学習する際にお世話になったサイトをメモしておきます。
個人アプリはjavaからkotlinに変換してるためAndroidに関するサイトも貼っておきます。qiitaユーザの意識が高すぎて負けそうです。

参考サイト一覧

公式リファレンス(日本語)
http://dogwood008.github.io/kotlin-web-site-ja/docs/reference/

リファレンスPDF
https://kotlinlang.org/docs/kotlin-docs.pdf

リファレンス日本語訳

http://qiita.com/dogwood008/items/6e8d3225ea9bb0fe3099
http://qiita.com/dogwood008/items/f4ceabd0b0d801fb3a9f

ガイドライン

まずは公式ページでコーディング規約、ガイドラインを把握しましょう
https://kotlinlang.org/docs/reference/

ベストプラクティス

https://blog.philipphauer.de/idiomatic-kotlin-best-practices/
日本語訳
http://qiita.com/takahirom/items/87d46150088aadccb481

文法関連

http://qiita.com/ssuzaki/items/0ab14379e2d30e807e9a
http://qiita.com/k5n/items/35e76d79ee9de4effb89
http://qiita.com/magie-pooh/items/b1179af28f5e0d50b62a

コンストラクタ

http://woshidan.hatenablog.com/entry/2015/10/30/083000

スコープ(apply/let/run/with)関連

http://tech.pjin.jp/blog/2017/04/10/kotlin_scoping_function/
http://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e

kotlinとjavaの混在関連

http://qiita.com/boohbah/items/167233c7eafe17f3150b
http://qiita.com/k5n/items/ceb1f921b27d62fc9fcb

コーディング規約関連

https://github.com/SmartTechVentures/kotlin-style-guide/

javaからkotlin変換でつまずきやすいところ

http://qiita.com/kazhida/items/09b9c7c95f7c43fc903a
http://qiita.com/HIkaruSato/items/4a5a7906761b19217370

kotlin勉強サービス

サンプル文や問題などあります。
https://kotlinlang.org/

[Android]Androidビルドエラー「Could not find com.android.tools.build:gradle:3.0.0-alpha3.」

By admin On 2017年6月28日 · Leave a Comment · In Android
Follow @mycb750

はじめに

AndroidStudio3に変更してjenkinsでビルドした時に出たエラーについて、対応をメモします。

エラーメッセージ
「Could not find com.android.tools.build:gradle:3.0.0-alpha3」
ローカル環境でStudioでビルドすると問題なかったのですが、gradlewコマンドで実行するとエラーが出ます。

原因

もともとはライブラリ系はjcenterからダウンロードしていましたが、GoogleI/O2017以降に一部がmavenに変更されたようです。
そのため、mavenからダウンロードが必要なライブラリがある場合にエラーになっていたようです。

改善

プロジェクトbuildファイルへmavenリポジトリを追加して改善します

buildscript {
repositories {
jcenter()
maven { url “https://maven.google.com” } // 追加
}
dependencies {
classpath ‘com.android.tools.build:gradle:3.0.0-alpha3′
}
}

[Facebook]2017/7/8のGraphAPI期限切れ対応「Reminder: Graph API v2.3 will be deprecated on July 10, 2017. Please use the API Upgrade Tool to understand how this might impact your app. For more details see the changelog.」

By admin On 2017年6月25日 · Leave a Comment · In Android, Facebook, iOS
Follow @mycb750

はじめに

FacebookのGraphAPIのバージョンの期限切れ予告メッセージが来ているため対応をメモします
2.3バージョンを使っている場合、期限がすぎると使えなくなりますよという知らせです。

「Reminder: Graph API v2.3 will be deprecated on July 10, 2017. Please use the API Upgrade Tool to understand how this might impact your app. For more details see the changelog. 」

GraphAPIの更新履歴と更新期限

更新履歴も期限も公式ページに記載していますので確認してください。
https://developers.facebook.com/docs/apps/changelog

facebook

大体リリースして2年で期限が設置されているため、毎回気を使って変更する必要がありますね。

アップグレードについて

WebもiOSもAndroidも比較的新しいバージョンから更新する場合はあまり修正する内容はありません。
たまにバージョンに寄り大幅に更新されている場合があります、と入ってもメジャーバージョンがアップグレードしている場合がほとんどです。
それ以外のマイナーバージョンのアップでは基本的にSDKを差し替えれば動作するはずですのでアップグレードの方法を公式ページで確認して更新してください。

iOS対応

iOSのFacebookSDK内でGraphAPIを使っています。どのバージョンを使っているかは更新履歴に記載されています。
現在のFacebookのSDKがGraphAPIのどのバージョンを使っているかを確認して、アップグレードしてください。

更新履歴
https://developers.facebook.com/docs/ios/change-log-4x

アップグレード方法
https://developers.facebook.com/docs/ios/upgrading-4x

Android対応

AndroidのFacebookSDK内でGraphAPIを使っています。どのバージョンを使っているかは更新履歴に記載されています。
現在のFacebookのSDKがGraphAPIのどのバージョンを使っているかを確認して、アップグレードしてください。
AndroidはGradleでインストールしている場合、Gradleファイル内でバージョンが確認できます。

更新履歴
https://developers.facebook.com/docs/android/change-log-4x

アップグレード方法
https://developers.facebook.com/docs/android/upgrading-4x

使っているGraphAPIの簡単な調べ方

SDKの更新履歴から追っていくのも大変ですね。Facebookの管理画面から対象のアプリを選択すると使用しているGraphAPIのバージョンがすぐに確認できます。
https://developers.facebook.com/apps/

アプリの詳細ページcap
ここのバージョンを見たほうが早いですね。ここでGraphAPIのバージョンが2.3であれば期限があと少しで切れるのでアップグレードしてください。
2.4も10月に切れるので更新作業ができるだけはやく更新作業が必要です。汗

[Mac][python]macにpython3をインストール

By admin On 2017年6月12日 · Leave a Comment · In Mac, Python
Follow @mycb750

はじめに

python3のインストール方法をメモします。
macはpython2はデフォルトでインストールされています。簡単なpythonファイルの実行であればそのままでできると思います。
2008年からpython3はリリースしていますが、現行でも2を使っているほうが多いように思いましたが、機械学習系のライブラリが充実しているためせっかくなので最新版のpython3をインストールします。
※なぜかライブラリが3にまだ対応していない場合があるので、使いたいライブラリに合わせたほうが良さそうです。

python3公式ドキュメント
https://docs.python.jp/3/tutorial/

pythonのデフォルトバージョン確認

mac標準でインストールしているpython2のバージョンを確認します

$ python –version
Python 2.7.10

python3をhomebrewでインストール

パッケージ管理のhomebrewを使いインストールします

$ sudo brew install python3

パスの設定をします(zshの場合は.zshrc)

export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval “$(pyenv init -)”
eval “$(pyenv virtualenv-init -)”
fi

python3のバージョン確認をします

$ python3 –version
Python 3.5.2

pythonのバージョンの管理ツールpyenvをインストール

Rubyのrvm(rbenv)のようなツールがpythonにもあるのでインストールします。
python2やpython3以外にもpythonの細かいバージョン毎にインストールまたは切り替えする場合に利用します。

公式githubリポジトリ
https://github.com/pyenv/pyenv

まずはインストールします

$ sudo brew install pyenv

インストールしたバージョンを確認します

$ pyenv –version
pyenv 20160726

pyenvの使い方

pythonをバージョン指定してインストールします。
今回は3.3.6と3.5.1をインストールします

$ pyenv install 3.3.6
$ pyenv install 3.5.1

インストールバージョンの確認をします

$ pyenv versions
* 3.3.6
3.5.1

*が付いている3.3.6が利用しているバージョンになります

バージョンの切り替えをします

$ pyenv global 3.5.1

バージョンの切り替えをします

$ python3 –version
Python 3.5.1

anaconda

anacondaはpython+ライブラリ(よく利用するもの)がセットになったものです。
そのため一般的にpython開発を使う場合はanacondaを入れるのがスタンダードのようです。

anacondaのインストール

インストールできるpythonのバージョンを確認します

$ pyenv install –list

anaconda3-と続くものがanacondaのパッケージになります。anaconda2はpython2系、anaconda3はpython3系になります。

バージョンを指定してanacondaをインストールします
今回はanaconda3-2.4.1とします

$ pyenv install anaconda3-2.4.1

バージョンの切り替えをします

$ pyenv global anaconda3-2.4.1

これでanacondaを利用可能です。

virtualenvとpyenv-virtualenv

pyenv以外にもバージョン関係でvirtualenvとpyenv-virtualenvがあります

参考サイト
http://dackdive.hateblo.jp/entry/2015/12/12/163400

[iOS]WWDC2017発表のiOS11から追加された新API(Framework)について

By admin On 2017年6月6日 · Leave a Comment · In iOS
Follow @mycb750

はじめに

WWDCで発表されたiOS11の新機能で用意されたAPI(Framework)をメモしておきます。
目玉はARと機械学習系でしょうか。
NFCは個人的にタグを持っているのでなにかしてみたいなと思いました。

公式ドキュメント
https://developer.apple.com/documentation

新API(Framework)

ARKit

目玉機能で拡張現実関連のapiです。カメラと連携したAR関連の処理はできそうですが、なにができるか興味深いです。

Integrate iOS device camera and motion features to produce augmented reality experiences in your app or game.

https://developer.apple.com/documentation/arkit

Vision

顔認識機能や動画のシーンを分類などを担うapiです。精度がどこまで上がっているか気になります。

Apply high-performance image analysis and computer vision techniques to identify faces, detect features, and classify scenes in images and video.

https://developer.apple.com/documentation/vision

IdentityLookup

「不要なSMSやMMSメッセージを識別してフィルタすることができるアプリの拡張機能」、、、いまいちわかりません。
smsの操作なんてできるんだったかな。

Create an app extension that can identify and filter unwanted SMS and MMS messages while preserving user privacy.

https://developer.apple.com/documentation/identitylookup

Core ML

機械学習関連の追加apiです。

Integrate machine learning models into your app.

https://developer.apple.com/documentation/coreml

DeviceCheck

デバイスや開発者ごとにデータのアクセスを分けられる?のでしょうか。利点がまだわかりません。

Access per-device, per-developer data that your associated server can use in its business logic.

https://developer.apple.com/documentation/devicecheck

FileProvider

ファイルのプロバイダを拡張したapiのようです。
他アプリが保管しているディレクトリやファイルへのアクセスなどができる機構があるようです。

Implement a file provider extension to let other apps access the documents and directories that are stored and managed by your containing app.

https://developer.apple.com/documentation/fileprovider

FileProviderUI

「ドキュメントブラウザのコンテキストメニューにアクションを追加する」、、よくわかりません。

Add actions to the document browser’s context menu.

https://developer.apple.com/documentation/fileproviderui

Core NFC

NFCのタグ読み込み用のapiです。調べれてないですが、すでに在ったような気がするので機能追加だと思います。

Detect NFC tags and read messages that contain NDEF data.

https://developer.apple.com/documentation/corenfc

PDFKit

pdfの操作系apiです。apiをみると表示系のことしかできないように見えます。

Display and manipulate PDF documents in your applications.

https://developer.apple.com/documentation/pdfkit

まとめ

毎年色々なframeworkが追加されて調べてる間にもまた来年のWWDCの日がまたきそうで気を抜けません。

[Android]公式サポートKotlinにJavaから今すぐ変えたい理由

By admin On 2017年5月29日 · Leave a Comment · In Android, AndroidStudio, Kotlin
Follow @mycb750

はじめに

2017年5月18日のGoogle I/OでKotlinがファーストクラスランゲージにすると発表されたのでKotlinについてメモしておきます。
もともとアプリを作る上でも構文的に見てSwiftより劣っていたJavaです。それらの問題をkotlinは改善してくれます。
java8でラムダ式やオプショナルが実装され大分良くなりましたが、kotlin > (java8 ≒ java9)な所感です。

情報源
https://blog.jetbrains.com/jp/2017/05/18/767
セッション内容の動画

公式ページ
https://kotlinlang.org/

AndroidでKotlinを正式サポート

以前からプラグインでkotlin開発ができていましたが、AndroidStudio3.0より正式サポートになりました。

本日より、Android Studio 3.0はKotlinを最初から同梱します。つまりAndroidデベロッパは互換性について心配する必要がなくなります。今後JetBrainsもGoogleもKotlinでのAndroidアプリケーション開発をサポートしていきますのでご安心ください。

Kotlinの他のプラットフォーム(サーバ、デスクトップにおけるKotlin/JVM、Kotlin/JS、Kotlin/Native)におけるサポートについてもJetBrainsにとって引き続きフォーカスしていきますのでご安心ください。JetBrainsのKotlinにおけるビジョンは、この言語を様々なアプリケーションをマルチプラットフォームで、エンドトゥーエンドに繋げる統一ツールにすることです。これはフルスタックWebアプリケーションも、Androidも、iOSクライアとも、組み込み/IoTも含みます。

プログラミング言語は人間の言語と同じです。つまり話す人が多ければ多いほど良くなります。Androidでの公式サポートで、より多くのデベロッパがKotlinを使うことになるでしょう。そしてJetBrainsはKotlinコミュニティが急速に広がっていくと期待しています。Kotlinによる、またはKotlin向けのライブラリやツール開発が加速し、経験が共有され、Kotlinを使う職が増え、学習教材がたくさん公開されていくことでしょう。Kotlinのエコシステムがより盛り上がっていくことを楽しみにしています!

JetBrainsはGoogleとのパートナーシップで、非営利のKotlinの財団の設立を予定しています。言語開発は引き続きJetBrainsが支援していき、40人いるJetBrainsで二番目に大きいKotlinチームはこれまで通り活動して参ります。Andrey Breslavが引き続きリード言語デザイナーを務め、Kotlinはこれまでと同じ原則をもとに開発が続けられます。JetBrainsはKotlinのデザインプロセスを今後もオープンなものにし続けます。皆様のフィードバックこそKotlinを正しい方向に導くのに必要不可欠だからです。

引用:https://blog.jetbrains.com/jp/2017/05/18/767

Kotlin言語とは

Jetbrain社のオープンソースな言語です。

言語構文の参考
https://speakerdeck.com/jakewharton/life-is-great-and-everything-will-be-ok-kotlin-is-here-google-io-2017

今すぐにjavaからkotlinへ移行するべき理由とは

既存サービスの場合、規模によっては移行するコストもありますが、費用対効果はその分にあります。
個人的には一番は開発速度が大幅に改善されバグが減ることが大きいと思ってます。

kotlin > (java8 ≒ java9)と言語で優っている

Null Safetyや関数プログラム(ラムダなど)がjavaよりも優っています。java8からoptionalがついてますが、本来のoptionalとずれていてswiftのように使うことはできません。kotlinはswiftに近いためoptionalチェイニングも可能なため、nullでも動きます。

javaもjava9がリリースなどで上がって来ているがAndroidが対応バージョンが6移行など考えるとkotlinにするのがいいと思います。

java9も今年夏にリリース予定とのこと。
http://www.journaldev.com/13121/java-9-features-with-examples#java-9-core

kotlin ≒ swift

言語の基本構文や用意されている機能(ラムダ、オプショナルなど)がswiftに近いです。swiftを触ったことがある人であればkotlinもすぐに理解できます。あとはAndroidのフレームワークの理解は必要です。

開発速度とモチベーション

新しい言語はモチベーション上がります。あとは構文も今風の軽量言語仕様に沿っているので覚えがいがあると思います。
Androidでよく見かけるnpe問題から解放され、コード量がjavaよりも断然少ないコードで実装可能なため、バグなども減ってくると思います。
削減した時間はMVP,MVVM,DDD開発などの設計面に回すことができまね。

互換性100%

javaとkotlinの互換性が100%のため、変えることによりできなくなることはありません。
kotlinで書き方などわからない場合はとりあえずそこはjavaのままというスタンスでもいいと思います。2言語の共存ができます。

JavaからKotlinの学習コストについて

java6,7のスキルでは10日、java8の関数型プログラミングを知っているひとであれば2日程構文を流し見してコードを打てばそれなりに習得できるレベルです。

既存サービスのkotlin化について

既存サービスでjavaからkotlinに変更する場合の進め方を考えました。
時間に余裕があるのであればまとめてコンバートすることが一番スムーズですが、既存サービスの場合、ほかタスクもあるため、一気には難しいのかもしれません。

手始めにテストコードから

どこからコンバートするか迷うところですが、まずは完全にコードと切り離された位置にいるテストコードからやるのがお手軽です。

まずはパッケージ単位で

MVPモデルの場合はM→P→V(Vは最悪やらなくていい)の順番で優先度をつけて対応するといいと思います。
あとはutilityやライブラリの切り離されたところから行うと影響範囲が少なくていいと思います。

単にkotlinに変換ではなく、kotlin仕様のコードに変更

単にjavaからkotlinにコンバートしてエラー対応しても、それはほとんどjavaです。
最終的にkotlinの仕様に沿ったコードに変更しましょう。(まずは順序立てて3フェーズで考えました)

第1フェーズ
java→kotlinにコードを変換
(せっかくkotlinなのにjavaと変わらない状態)

第2フェーズ
kotlinの制御に変更(おもにnullチェック、代入、return関連)

第3フェーズ 
FP言語に寄せて変更

妥協

無理にすべてをコンバートするのではなく、あまり機能追加など行わない部分はjavaのままでいくのもありだと思います。
コンバートする場合はすべてテストを再度行わなくていけないのと既存コードで問題が起きていないのであればjavaのままで害になることもないからです。

androidでjava開発のサポートは

公式でのアナウンスはしてませんが、今後もgoogleはjavaのサポートは辞めないのではないでしょうか。言語の選択肢が増えたと考えたほうがいいと思います。kotlinもjavaもファーストクラスランゲージでjavaも伸びしろがあります。

ただoracleと著作権で揉めたりしてたはずですが、どうなのでしょうか。
https://developers.srad.jp/story/16/05/27/0415243/

kotlinの将来性

Android以外にもweb開発などjavaを使って開発していたものがkotlinですべて開発可能です。
言語仕様としてkotlinが上回っているため今後はkotlin開発が増えていくのではないでしょうか。

altJSとしてのkotlinは?

kotlinはjvmのほかjavascriptへコンパイルできます。そのため、altJS(typescript,coffeescript,dartなど)としてもなり得る可能性があります。
kotlinで用意しているものからできることとして比較するとjavascript > kotlinにはなるとおもいます。typescript > kotlinでもあります。
基本的なことは全てできるので、altJSとしても十分に発揮できるのではないでしょうか。
typescriptやらのdslを覚える学習コストを考えると、javaエンジニアはkotlinのほうが慣れやすいのではないかなと思います。

← Previous Entries
  • coffee-break

    coffee-break

    Don't write code that useless.
    1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆

    松本 雄貴
    Kotlinでサービスリリース目指す!
    iOSでチャットアプリ作成中。

    自然言語解析LSIを習得中
    Mac / Android・iOS / Rails / Oracle
    2017年 Lpic L2取得
    2012年 Android技術者資格取得
    2010年 OracleMasterGold10g取得
    2008年 CCNA

    Qiitaもたまに投稿
    https://qiita.com/y-matsumoto

    東京近郊で常駐開発探してる方はこちらよりご連絡ください

    SES企業でパートナー会社を探している企業様はこちらよりご連絡ください

  • スタンプ発売中

    maro
  • スプリットカメラ iOS / Android

    ic_launcher スプリットカメラ
    〜 最大4分割で撮影の分割カメラ 〜
    iOS版はこちら
    Android版はこちら
  • 音声認識で聞いた日付から曜日当てアプリ Android

    unnamed 日付から曜日当てが簡単
    映画サマーウォーズの曜日当てアプリ
    Android版はこちら
  • ソーシャルタイマー Android

    ic_launcher ソーシャルタイマー
    〜 SNS予約投稿 〜
    Facebook/Twitter
    Android版はこちら
  • スポンサードリンク

  • カテゴリー

    • ActiveRecord (2)
    • Android (52)
    • AndroidStudio (10)
    • Ansible (1)
    • AWS (1)
    • Bash (18)
    • Blog (7)
    • BootStrap (1)
    • CentOS (16)
    • Chef (1)
    • css (2)
    • Eclipse (5)
    • error (1)
    • Facebook (2)
    • Firebase (1)
    • FuelPHP (16)
    • Git (22)
    • GitHub (3)
    • Gradle (2)
    • GraphAPI (1)
    • Grunt (1)
    • heroku (2)
    • illustrator (1)
    • iOS (17)
    • Java (4)
    • Jenkins (1)
    • jQuery (3)
    • Kotlin (2)
    • Mac (22)
    • nginx (1)
    • Node.js (3)
    • peco (1)
    • php (5)
    • Python (1)
    • Rails (16)
    • Ruby (11)
    • shell (1)
    • SNS (1)
    • Swift (2)
    • tmux (2)
    • Vagrant (6)
    • Vim (6)
    • windows (2)
    • WordPress (3)
    • zsh (4)
    • フリーランス (1)
    • ライブラリ (1)
    • 勉強会 (2)
    • 宣伝 (1)
    • 未分類 (2)
  • 最近の投稿

    • [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
    • [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
    • [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
    • [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
    • [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
    • 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
    • [Pandoc][Mac]pandocでmarkdownからwordファイル作成
    • [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
    • [Android]起動しているActivityを取得するadb shell コマンド
    • [Android][Kotlin]kotlin学習で参考になるサイト一覧
  • 2021年3月
    月 火 水 木 金 土 日
    « 5月    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
  • アーカイブ

    • 2018年5月
    • 2017年9月
    • 2017年8月
    • 2017年7月
    • 2017年6月
    • 2017年5月
    • 2017年2月
    • 2017年1月
    • 2016年12月
    • 2016年7月
    • 2016年6月
    • 2016年1月
    • 2015年12月
    • 2015年11月
    • 2015年10月
    • 2015年9月
    • 2015年8月
    • 2015年7月
    • 2015年6月
    • 2015年5月
    • 2015年4月
    • 2015年3月
    • 2015年2月
    • 2015年1月
    • 2014年12月
    • 2014年11月
    • 2014年6月
    • 2014年5月
    • 2014年4月
    • 2014年3月
    • 2014年2月
    • 2014年1月
    • 2013年12月
    • 2013年11月
    • 2013年9月
    • 2013年8月
    • 2013年7月
    • 2013年6月
    • 2013年5月
    • 2013年4月
    • 2013年3月
    • 2013年2月
    • 2013年1月
    • 2012年12月
    • 2012年10月
    • 2012年5月
    • 2010年6月
  • おすすめ備忘録

    • [Grunt]デザイナ向け自動化ツールGruntの開発環境構築から動作確認まで
    • [Vagrant][Mac]vagrant ssh-configを使い、Cyberduck(SFTP) / SSHでVagrantへ接続する
    • [Mac]パスワードクラックツールhydraをインストールしてデモまで
    • [bash]puttyで作成した公開鍵をopenssh(GitHubなど)キーへ変換する方法
    • [MAC][Bash]~/.ssh/configファイルを使ってサーバのssh接続を管理する
  • タグ

    adb api apple application auth bash centos chart chef code command diff error facebook fetch gem git github gitlab gradle homebrew install ios11 java library mac model nginx opauth php plug-in project public pull rbenv shell sns ssh sudo twitter vagrant Vagrantfile vim vps yum
  • スポンサードリンク

  • エントリ

Platform by PageLines
↑
↑