ちょっとアメリカ行ってくる(機内〜初日編)

hatobus.hatenablog.jp

これの続きです.無事に飛行機に乗れたはとバスの機内の様子などを書いていきます.

座席

航空会社はANA,成田からサンノゼまでの直行便で飛びます.

座席はもちろんエコノミー,地方の金のない大学だし仕方ないです.

身動きが取れない!というほどではなかったのでフライト9時間でもまだなんとかなった感じがします.

f:id:flying_hato_bus:20170824193316p:plain

発着の時,何か一悶着あったらしく,10分ほど遅れて出発,しかしそれ以外は普通に離陸しました.

出てすぐは色々とやろうと思っていたのですが,時差ボケが怖くてすぐに寝ました.

天候が思わしくなかったのか,結構機内が揺れてました.

三時間くらい揺られ,寝ているか寝ていないかのシュレディンガーの猫状態を少し体験したところで夕食.

ハンバーグか唐揚げと聞かれたので,その場の気分で唐揚げを選択.

f:id:flying_hato_bus:20170824194118j:plain

これなんですが味のバランスがちょっとおかしい,上にあるそうめん的な何かはめんつゆをストレートでじゃぶじゃぶさせて食べてました.唐揚げ丼的なのは味が薄かったような気がします.ただ普通に食べられるくらいだったので普通に美味しかったです.

f:id:flying_hato_bus:20170824194715j:plain

デザートとしてハーゲンダッツが出ました.こういうところで出るアイス,高確率でカッチカチなのはザブングルの加藤が裏で操ってるらしいです.

というわけで飯を食べたら変に目が覚め,何もするのがなくなってしまいました.

ANAの座席,とりあえずエコノミーでも液晶画面があり,なんでもできるのですが,そこでアニメなどをみられます.

プリパラをみました.

www.nicovideo.jp

f:id:flying_hato_bus:20170824195145j:plain

気分は女児です.空の上では誰にでも女児になる権利があるそうです.偉い人が言ってました.

楽しいよね,プリパラ.

f:id:flying_hato_bus:20170824195249j:plain

「毎日暑すぎて何にもする気になれないよ〜」

「チケットパキっとするだけで友達コンプリートできるのはなんだ,現代社会に新しい風を吹き込むスタートアップの謳い文句か」とかを考えながら視聴.

周りの目が痛かったんですけど,ドキドキするときは無敵なので一話全部見ました.

あとはテトリス,こんなことになってて自分でも「何やってんのこいつ」ってなってたりしました. f:id:flying_hato_bus:20170824200738j:plain

あとこれは知見なんですけど,どんな状態でも,時をかける少女は心にきます.

そして朝になって朝食.パンケーキとシャケのなんかが選べたんですが,パンケーキにしました.インスタ受けとか気にしてないです.

f:id:flying_hato_bus:20170824201941j:plain

味としては普通に美味しい,ポーチドエッグがいい味出してました.

パンケーキが何も味のしないプレーンなやつかなとか思ってたんですけど普通に中身がメープルシロップ入ってました.

というわけでアメリカに降り立つ僕です.

時差が16時間程度なので,こっちの夕方に,日本が夜明けみたいな雰囲気があります.いろいろとコミュニケーションが面倒ですね.

入国審査

僕,日本で こんなことしています. hatobus.hatenablog.jp

hatobus.hatenablog.jp

まともな神経してたらアメリカ政府といえどももうちょっと審査とかしてくれるはずです.

なぜか入れました.

入国審査官「お前今回なんのために来たんだ?」

ぼく「観光です(本来の目的を説明するには圧倒的に語彙力が足りない)」

入国審査官「お,そうなんか.ちなみにホテルここっていうけどこの近くなにあるかとかわかんのか?」

ぼく「あ〜Hacker dojoとかありますよね.あとはまあ色々スタートアップあるし面白そうなとこの人と会う約束もあるよ」

入国審査官「おk,お前全く英語できないけど頑張ってくれな!あとハンバーガーでも食ってろデブ,じゃあな!」

って感じで無事入国が許可されました.普通にしてれば入れました.まあこれけっこうつまづきながら話してたので「No English man」扱いされました.これからはきちんと勉強します.英語の単位がCくらいしか取れない人にとっては結構きついものがありました.

そんなこんなで空港を脱出した僕たちはUberを使ってホテルへ.

ちなみにこの時点で8月23日の午前11時,多分これより長い8月23日を過ごしたことはこれ以降もないと思います.

まあ後はチェックインを済ませて,Hacker Dojoへ.

What' the Hacker Dojo?

Hacker Dojo

言うなればスタートアップの人たちとかが月に決められた料金を支払って使えるフリーの開発スペースみたいなものです.

設備としてあるもの

あとは会議室が3つほどあり,解放されている作業スペースがあります.

f:id:flying_hato_bus:20170824204644j:plain

こんな感じの場所で僕らが今回プロトタイピングします.

ごはん

基本買ってます.

初日のお昼は IN-N-OUTというハンバーガーショップへ.普通にうまい.

多すぎて残す可能性あると言われて,togoを選んだのですが普通に食べられました.

f:id:flying_hato_bus:20170824205119j:plain

これぞアメリカって感じのチーズバーガー,やっぱりお肉は美味しいです.

それよりも旨くてびっくりしたのがこのピクルス.多分唐辛子の類をつけてると思うんですけど辛い,酸っぱい,美味い!の三拍子揃った最強のやつです.樽でいける.

初日の夜情報としては,先輩がメキシコ料理を食べたいとのことでメキシコ料理を堪能.なんかでっかい春巻きみたいなのが出て来ました.

奥にあるのがカレーっぽいような味がない何か,味を単語で表現すると「虚無」です.

手前にあるのがタコスをあげたっぽいやつ,ナイフとフォークで食べますが普通に美味しい,中身に肉が入ってますが日本人も好きな味付けです.

ふっつうにご飯が美味しい.ただ油がすごい,ちょっとお腹壊しそうですね.

???

夕ご飯をみんなで済ましたあと,ホテルに戻るため,学校で借りているレンタカーの元に行った引率の職員の方がびっくりした顔して歩いて来ました.

「あのね,僕たちの車,車上荒らしw」

店の目の前に止めていた車が車上荒らしにあいました.幸いにも荷物は置いていなかったのでパスポートなど重要なものは取られませんでしたが,助手席側の中央のガラスが粉々,実質オープンカーになってました.

そりゃもうびっくり,店の前だからと言っても普通に車上荒らしに合います.

夕ご飯を食べた場所からホテルまでは普通に歩ける距離だったので歩いて向かいグループと車で行くグループに分かれて帰りました.車の通気性が良くなってびっくりでした.

そんなこんなで,今僕はホテルにいます. ここからはアメリカに来た時に感じたことを書こうと思います.

アメリカで気づいたこと

  1. そこまで暑くない 今の時期の日本はめちゃくちゃ暑い,35℃を越えると汗が出て止まらないくらいです. しかしここはそこまで暑くない.30℃くらいでも乾燥しているので,普通に過ごしやすい気候です. やっぱり体感温度って湿度とかで変わるんだなあと今一度肌で理解しました.

ちなみに夜になると涼しいを通り越して寒いって言う感情に変わるので,普通に上は持って行ったほうがいいです.

  1. 英語がわからない 僕のTOEICのスコアがクソみたいなのがあるんですが.普通に聞けないです. ハンバーガーショップで店員さんに「おうお前オニオンどうすんだ」って言われたんですけど, 旨く聞き取れなくて,院の方と2,3回聞き直してました.

  2. 戸締り防犯はきちんとする 初手車上荒らしという万に一つの体験をして気づいたことが,やはり日本の治安はめちゃくちゃいいこと, 日本 >>>>>>>> シリコンバレー >>>>>>(超えられない壁)>>>> 実家近辺 >>>>>>>>> 夜10時ごろの歌舞伎町 っていう式が出来上がります.シリコンバレーは比較的治安がいいと言われていましたが,ここまでくると防犯意識が否が応でも研ぎ澄まされますね.

と言うわけで初海外初日のレポートです.不定期で色々書いていこうと思います.

それではまた.

ちょっとアメリカ行ってくる(出国前東京編)

散々アメリカに行ってくる〜行ってくる〜って行っていましたが,ついにアメリカに降り立ったので記念に記事を書きます.

今回は出国編.会津から出て来て日本から厄介払いされる(飛行機に乗るところ)までを書きます.

主な流れ

  • 8月21日 … 会津出発
  • 8月22日 … 東京をぶらぶら
  • 8月23日 … 出国&アメリカ初日

日本から出るまではtwitter映えするような生活を送っていたのでツイートとともに.

出国後は機内モードtwitterができなかったので別記事として,機内で撮影した写真とともに振り返って行こうかなと.

8月21日

会津を出発.東京にいる際の滞在費用などは2万円ほどにする予定だった.

動きとしてはこんな感じでした.

会津 -> 郡山 … 磐越西線で9時50分ごろ会津

ここら辺はいつも通っているのでいつも通り,結構早めに行ったので座ることができました.

いつにもまして意識が高くなるような本を読むふりをして時間をつぶしました.

郡山 -> 東京 … 東北新幹線に1時間20分ほど揺られる

いつもは高速バスを使うのですが,大学から金が出ているということもあり,新幹線で東京へ.

お昼は新幹線の中で軽くとった.酪農カフェオレがあったので,知ってる子が好きだなあと思いながら購入.

東京着

到着は12時50分ごろ,ここから川崎の方にある友人宅へと移動する,切符は水曜日まで大丈夫なので,水曜日の出発にゆうゆう間に合う形となる.

友人宅への手土産として蒙古タンメンのカップ麺を購入して持って行って,twitterに最適な写真を撮影することができた.

あとは,tiwtterのオタクとオフ会で飯食ったりしてました.

すしざんまい行ったのもよかったですし,何よりもすごかったのは歌舞伎町に迷い込んでしまい.

強面なケツアゴの外国人のお方にお話をされたことですかね.椎名林檎の庭はここまで怖いもんだったのかと痛感しました.

www.youtube.com

そんなこんなしていると23日水曜日,いよいよ出国です.

出国

一緒に行く人たちと東京駅で待ち合わせをして,NEX(成田エクスプレス)に揺られる.普通に田舎を走行していて.

「おいこれきちんと空港に着くのか…?もしかしたら毒ガスの訓練でもされるんじゃないか…?」という謎の妄想に浸りながら乗ってました.

ちなみに,直前に食べた日本最後の食事は品川二郎でした.

これが二週間近く食べられないというので微妙なところですね.

出国の手続き

何せ初の海外で色々と怖いものがありましたが,そこまで色々と焦った記憶はなかった.

twitterじゃ色々と暴れているので,屈強な黒人が「Hey You?」と言いながら,僕を掴んで個室に連れて行かれないかな?

それはそれで面白いなあとかおもっていたりもしたのですが何もありませんでした.

人生初の動く歩道を歩いてみた感想としては,降りるときに惰性がついていて,下手すると転ぶなあという印象でした.

そんなこんなで飛行機に乗り込んでようやく出国が完了.機内モードにしていたので,twitterで上空で何があったかはツイートできなかったので,後発の記事でそれについて書きます.

次の記事へ続く……

hatobus.hatenablog.jp

スマホが来た

ス マ ホ が 来 ま し た

先日,スマホを購入した記事を書きました.

hatobus.hatenablog.jp

その時言っていたスマホが早速来たのでレビューも兼ねて記事を書きます.

機種

購入した機種は Huawei P10 lite. Amazonでの評価がよく,個人的にHuaweiがどのような製品を作っているのかが気になって購入しました.

スペック

スペックは以下の通り (価格.comから引用)

f:id:flying_hato_bus:20170815212115p:plain

ちょこっと使っただけのレビューですが,気になったところを少し買いていこうと思います.

発熱

何もない!

今まで使ってたのがめちゃくちゃ熱かったのでこれはどうかなという印象.

普通にブラウジングをするくらいなら全然熱くなりません.YoutubeでHD動画を5分くらい見ても全然熱くならない.正直今までのスマホだったら熱くてまともに動画を見れなかったです.

googlemapをカーナビがわりに車で少し走ったのですが.これも全然熱くない.さすがだと思いました.

カメラ

素数が1200万画素らしいですが普通に写真として見れるレベル.

綺麗過ぎでも汚過ぎでもない普通の写真です.少し発色が足りない感じがしますがいい感じですね.

f:id:flying_hato_bus:20170815213113j:plain

写真は今少しいじっている Ichigojam を使ったOSSなロボットカー,HotDogです.

HotDog

充電

充電はMicro-USB,よく言えば互換性がある.悪く言うと最近の流行ではない.

実際のところ,僕の部屋にあるUSB-C製品は今これを買いているMacbookくらいしかないのでMicro-USBは結構便利.

充電の速さなのですが,結構早くてびっくりしました.50%ほどで充電を始めたら30分もしないうちに80%を超えていました.

外見

めちゃくちゃかっこいいです.サファイアブルーを購入したのですが.裏面がかっこいい.

あと最初から簡易的なカバー(プラスチックのやつ)がついて来たのでここも好印象.今つけていますが変にきつかったりぶかぶかだったりとかがないのでいいです.

個人的にはかっこいいと思ったのですが,友人たちの反応が2chのそれでした.

f:id:flying_hato_bus:20170815214001p:plain

指紋認証

このスマホ,背面に指紋認証があります.認証方法はかざすだけ.

電源が落としてあっても指紋認証のところに指を持って行くだけでロックが解除されます.

これが速いのなんの

スッ… とかざすだけで爆速起動します.

下手したら「おいおいおい,これ俺指触れたのか?」っていう速さで起動することもあります.

ちなみに何人かにやってもらったのですが,ロックは解除されませんでした.(当たり前)

他に気になったところ

個人的におサイフケータイがついてなくて少し焦りました.

aimeeのデータを前のスマホに入れていたので,データをこのスマホに引き継ごうとしたところでおサイフケータイがないことに気づきました.

まあカードを買えばいいので多少はね?

こんな感じで,今は前使用していたスマホのsimを差し替えて使っています.

アメリカに行った際はAT&Tのsimとかを購入して使おうと考えています.

今回のこのスマホは多分変な挙動をしないと言うことを願うばかりですね……

SIMフリースマホを買った

はとバスです.

私事で恐縮なのですが,私は今月の23ごろから,アメリカはサンフランシスコに行って来ます.

内容としては大学のイベントとしてなのですが,これで約二週間ほどの滞在となります.

そこで色々とプロトタイピングとかして来る予定なのですが.

今使ってるスマホがクソみたいな使い心地なので,simフリー端末を新しく購入しました.

今使ってるスマホ

今使ってるスマホは, FUJITSUの ARROWS NX F-04G .外見がかっこよくて二年前に購入しました.

スペックとしてはこんな感じ.(NTT Docomo 公式サイトより)

f:id:flying_hato_bus:20170813223306p:plain

スペック上は今でも十分通用するスペックだと思います.

しかし,今僕の手元にある端末は正直ハズレでした.

理由を少しばかり述べていきましょう.

1. そもそも購入して3日後にメーカーが発売停止

これを購入したのが,2015年7月25日ごろだったと思います.その当時,高校の友人にこのスマホを見せていたところ.「お前のそのスマホw,発売中止のやつじゃんwwwww」と言われました.

www.nttdocomo.co.jp

はい.

ハズレを引いたと思いました.

買った当初は感じていなかったのですが,一ヶ月ほど使い続けていると,様々な問題点が出て来ました.

2. 熱くなる

爆熱です.めちゃくちゃ熱いです.引くほど熱いです.

何かするとすぐに発熱します。発熱すると操作がだんだん困難になります。

GPSを使うアプリ,Google map や ポケモンGOなんかやった日には10分も持たずに電源が落ちます.

車を持っていて,ナビがわりに使おうとしたのですが,近場でも全く機能しない始末.

別に何かアプリを立ち上げている状況でこれならいいのですが,運が悪いと何もしていないのに突然発熱して,ガリガリバッテリーを食うだけ食って,死んでいきます.

これはバッテリーに良くない事なのですが,充電しながら使うとしても,充電開始から2,3分で熱くなって来て,そもそも電源を落とさなくてはいけなくなって来ます.

これ,冬場は結構重宝しました.アッタカイ……

3. Chromeとの相性が最悪

最悪です.何がって?

検索バータッチしてキーボードが出て来るのに平均して15秒以上かかるんです

これ,めちゃくちゃ困ります.

「あ,これなんだっけ」

ってときに,さっとスマホを出して,検索をしようとするときに,アドレスバーをタッチするんですが,キーボードが出るまで15秒以上を要します.

フラストレーションしかたまりませんね.

相手に何かを見せたいとき,これだと相手にも無駄な時間を与えてしまいます.

ちなみに,これはAndroid 6.0にしたら治ったのですが.これ以前にChromeを起動した瞬間から爆熱天使ドクロちゃんになります.電池がクソほど減ります.「ぴぴるぴるぴるぴぴるぴ〜♪」

f:id:flying_hato_bus:20170813225234j:plain

いいところ

f:id:flying_hato_bus:20170813225523j:plain

新しいスマホ

新しいスマホHuawei P10 lite のサファイアブルー.(めちゃくちゃかっこいい)

amzn.asia

スペック的にけっこうハイスペック.それでいて3万円ほどとリーズナブルな値段.何よりも青に惹かれました.

中韓に敵意もなにもないのでこれでいいかなと,というかITの分野だったらあっちの方が進んでるしなあ.

そんなこんなで購入しました.simカードは今のARROWSに刺さっているdocomoのヤツです.

海外で使うと行っても,空港でモバイルwifiを借りる予定なので,simカードは飾りみたいなもんかなとも思います.

スマホは水曜日までには来るそうなので,来てから詳細をレビューしようかと.

アンキパンを作った

どうもこんにちは,はとバスです.

今の時期の大学生はよくtwitterで,「テストガー」「ウワーーーラクタンシターーーー!!!」

など,嘆きの言葉が散見されます.そうです.

テスト期間

なんですね.

テスト期間に,よくやることとしては,「ただひたすらに問題を解く」「部屋の掃除」「暗記」「こんなクソみたいなブログの記事を書いちゃう」などがあると思います.

ん?暗記……?暗記……あん……き……

フワワワ〜〜ン……

f:id:flying_hato_bus:20170804073915j:plain

なんか…そんなものが……どこかで……

f:id:flying_hato_bus:20170804073939j:plain

ウ〜ン……暗記…あんき…

f:id:flying_hato_bus:20170804074007j:plain

あん肝食べたい……

f:id:flying_hato_bus:20170804074033j:plain

違う違う……アンキ….アンキ..パン……

f:id:flying_hato_bus:20170804074204j:plain

アンパン……違う…….

f:id:flying_hato_bus:20170804074223j:plain

f:id:flying_hato_bus:20170804074242j:plain

アンキパンですね.

と言うわけでアンキパンを錬成します.

使うものはたったこれだけ.手軽ですね!!!

  • 毎朝の食パン 6枚 108円
  • コーヒー牛乳 108円
  • レーザーカッター 200万円

アンキパンを作るためにはどうやら 2,000,216円が必要っぽいです.

そんなこと言ってないで作ってしまいます.テストまで時間が足りません.

作り方もいたって簡単.

f:id:flying_hato_bus:20170804081321p:plain

まずは覚えたいページを探します.

これをスクリーンショットします.

次に使うのはイラレ,これで印刷データを作ります.

f:id:flying_hato_bus:20170804075806p:plain

原作では,ノートに直にパンを貼り付けているので,文字が逆になるだろうと思い,文字を反転させます.

あとはレーザーカッターにデータを送って.

印刷!!

レーザーカッターに印刷させている間,ちょっとぐれーともす先生の本とかを読んでいれば有意義に時間を潰せるかと思います.

そんなこんなでできたのがこれ.

f:id:flying_hato_bus:20170804080313j:plain

文字が潰れまくってます.まあ,これでもアンキパンになっていると思うので食べます.

むしゃむしゃ……

むしゃむしゃ……

僕高校の時の化学を真面目にやっていなくて普通に通知表に2とかついてたんですけど,多分CO2レーザーのせいでめちゃくちゃ変な匂いがするんだと思います.

焼いたところがめちゃくちゃ臭いです.食えないことはないですが.

ちなみに,アンキパン以外にも,色々と使い道がありそうです.

ドカベンの文字をパンに書き込んだりできます.

そんなこんなやってたら,落としてはいけない授業を落としそうになっています.

最後に,僕が今回この記事を書くことで思ったことを言おうと思います.

f:id:flying_hato_bus:20170804080958p:plain

どうもありがとうございました.

PythonでI2Cを使う際のコマンドをまとめた

趣味が趣味なので,Raspberry piPythonで I2 Cを使うことが多い.

しかしいつもコマンドを忘れるので,自分のメモ用として今回の記事を書きます.

実際にRaspberry piでI2 Cを使う際の設定なども書いていきます.

実行環境としては Raspberry pi 3 + Python 3.6.0 です.

Raspberry pi側の設定

まずはPythonのI2 Cライブラリをインストール

$ sudo apt-get update
$ sudo apt-get install i2c-tools

これでとりあえずPythonのI2 Cを使用するライブラリをインストールします.

そもそも最初の状態ではRaspberry piはI2 Cを使用することができないので,設定画面から有効にする.

そのためにはまず,

$ sudo raspi-config

Raspberry piの設定画面を開きます.

f:id:flying_hato_bus:20170802193218p:plain

ここの 5.Interfacing Optionを選択.すると,色々なものを有効/無効化するところに遷移するので.この先の P5 I2Cを選択

f:id:flying_hato_bus:20170802193310p:plain

この先で色々聞いてくるので,適当に enable ってすればおkです.

最後に Pythonで I2 C-busをコントロールするためのライブラリである 「Python-smbus」をインストールします.

 $ sudo apt-get update
 $ sudo apt-get install python-smbus

これで一通りRaspberry pi でI2 Cを制御できるようになりました.

多分これで sudo i2cdetect -r -y 1などを打つと,下のような表示がされるようになるはずです.ダメだった場合,1の部分を0に変えてみてください.

$ sudo i2cdetect -r -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

こんな画面が出てくれば大丈夫です.この画面は,実際にI2 Cデバイスが接続された際,アドレスが表示されます.

例)

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- 64  -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

この場合,アドレスは 0x64になります.

本題

と言うわけでリファレンスから抜粋,下のカッコでざっくりと和訳しています.

long write_quick(int addr)

Send only the read / write bit (読み取り/書き込みビットだけを送信)

long read_byte(int addr)

Read a single byte from a device, without specifying a device register. (デバイスレジスタを指定せずに、デバイスから1バイト読み出し)

long write_byte(int addr,char val)

Send a single byte to a device. (1バイトデバイスに送る.)

long read_byte_data(int addr,char cmd)

Read Byte Data transaction. (トランザクションデータをデバイスから読み出す)

long write_byte_data(int addr,char cmd,char val)

Write Byte Data transaction. (トランザクションデータを書き出す)

long read_word_data(int addr,char cmd)

Read Word Data transaction. (トランザクションデータを読む)

long write_word_data(int addr,char cmd,int val)

Write Word Data transaction. (ワードトランザクションデータを書き出し)

long process_call(int addr,char cmd,int val)

Process Call transaction. (プロセスを呼び出す)

long[] read_block_data(int addr,char cmd)

Read Block Data transaction. (ブロックデータトランザクションを読み取り.)

write_block_data(int addr,char cmd,long vals[])

Write up to 32 bytes to a device. This fucntion adds an initial byte indicating the length of the vals array before the valls array. Use write_i2c_block_data instead! (デバイスに最大32バイトを書き込み.ただしこの関数は,val配列の前にvals配列の長さを示す最初のバイトを追加する必要がある.代わりにwrite_i2c_block_dataを使用しなければいけない)

long[] block_process_call(int addr,char cmd,long vals[])

Block Process Call transaction.
(プロセス・コール・トランザクションをブロック.)

I2C Access Functions

long[] read_i2c_block_data(int addr,char cmd)

Block Read transaction. (トランザクションデータをブロックで読み出し)

write_i2c_block_data(int addr,char cmd,long vals[])

Block Write transaction. (トランザクションデータをブロックで書き出し)

なんか絶対和訳を間違っている気がします.(気にしない)

何か間違いがあった場合,コメント等で教えてもらえると幸いです.

たまには真面目にPythonのお話をしてみる

どうもはとバスです.最近めちゃくちゃ暑くてかないませんね.

最近,トランプとデートした話や,エアコンが部屋になくてIQがマイナスに振り切れてるようなブログの記事を書いていて,さすがに友人たちに頭を疑われ,父親心療内科の受診と実家での休養を勧められたので,今日は真面目にブログを書きます.

Pythonのリスト内包表記と辞書内包表記

Pythonでよく言われるのが「速度」

速さが足りない!

f:id:flying_hato_bus:20170715003537p:plain

そう,速さが足りません.

Pythonはインタプリンタで一行ずつの処理をしているわけで,圧倒的に遅いという悲しい性を持っています.それに加えてfor文などは,一度リストを作成し,それを参照することでループをさせています.つまり,大きいリストを作れば作るほど,実行には時間がかかります.

それを一発で解決するのが今回お話をするリスト内包表記と辞書内包表記,for文の中で,新たにリストを作成する時,これらを使うとプログラムを短く,かつ速くすることができます.

普通のforループで,偶数だけを要素とするリストを作成する.
hoge=[]

for i in range(5000):
    if i%2 == 0:
        hoge.append(i)

print(hoge)

やっていることは,

最初に0から5000までのリストを作り,その要素の一つを変数 i と置く.

そのiを2で割って,0になるかどうかで判定.

0になった場合,リストに追加する.

ただこれだけ.

Cで書くとこんな感じ.

int i,j=0,huga[5000];

for(i=0;i<5000;i++){
    if(i % 2 == 0) {
        huga[j] = i;
        j++;
    }
}

Pythonでこれを実行すると遅くなる理由が二つある.

  1. 条件を満たす度にリストオブジェクトのappendを参照する

  2. appendをそもそもpythonの関数として呼び出している.

この二つです.この二つがこのループを遅くさせている原因なのですが,参照をループ外で定義してあげればある程度は早くなってくれます.

しかしappendが邪魔をしてしまうので,appendを使わないリスト内包表記のほうが結果的に早くなります.

これをPythonのリスト内包表記を使用して書くとこうなります

hoge = [i for i in range(5000) if i % 2 == 0] 

一行だけで済ますことができます.

説明

Pythonのリスト内包表記の基本構文はこんな感じ,これに色々修飾して書いていくのが多いです.

[変数 for 変数 in iterator]

今回はこのリスト内包表記に後置ifで判別させています. (原則として,Pythonでは後置ifが使用できませんが,リスト内包表記の時だけは使用が可能)

後ろについているif文の条件を満たす時だけ,hogeのリストに値が追加されます.

いちいちリストを作成しなくても,これで要件に応じた処理をできるので,そりゃfor文よりも速くなりますよねって話です.

ちなみに,後ろにくるのはif文で処理できるものなら何でも大丈夫で,例として関数の返り値などが使用できます.

辞書内包表記

次に辞書内包表記です. やっていることは,リスト内包表記を辞書にしただけなのですが,これがなかなか使いやすい.

辞書内包表記の基本構文はこんな感じです.

{key : value for 変数 in iterator}

key,valueともに変数を用いた値を代入することができます.

たとえば,100までの値をkeyとvalueにした辞書を作りたいときは

nya = {str(i) : i for i in range(100)}

こんな感じでできます,ちなみにkeyはstr型ではないとエラーが出るので,整数などをkeyにしようとする際には注意が必要です.

は?これじゃリスト内包表記とほぼ同じじゃん,何言ってんのw

こう思う方もいるかもしれません.

しかし,辞書内包表記は,イテレータの部分を辞書にすることで真価を発揮することができるようになります.

たとえば,辞書のkeyとvalueを関数に飛ばし,帰って来た値を新たに辞書のvalueの部分に代入することができます.

def nyan(noc,n):
    s = "ねこが{}匹 ".format(noc)
    nyaa = "にゃあ"
    neko = s+nyaa*n

    return neko

nyandict={'1':2, '2':4, '3':6}

neko_nyan = { k : nyan(k,v) for k,v in nyandict.items()}

print(neko_nyan)

=> {'1': 'ねこが1匹 にゃあにゃあ', '2': 'ねこが2匹 にゃあにゃあにゃあにゃあ', '3': 'ねこが3匹 にゃあにゃあにゃあにゃあにゃあにゃあ'}
 

こんな感じで,key,valueを引数とした関数を要素にもできます.

forループで書いていってもいいのですが,それだと冗長,そして時間がかかるので,個人的には可読性が少し下がりますが, 辞書内包表記を使用したほうがいいかなと思います.

上のにゃあをforループを使って書いた場合.

for k,v in nyandict.items():
    neko_nyan2[k]=nyan(k,v)

print(neko_nyan2)

forループの方がよくね?って思った方,僕も同感です.

それでは実家に帰って来たので,父親に連れられ心療内科からの隔離病棟で優勝して来ます.ありがとうございました.