Go言語のパッケージimportで相対パスが使えない話
更新できていませんでしたが、Pixelbookのデフォルトで存在するLinux(Debian)で、無事にGo言語をインストール完了しまして。IDEもLiteIDEじゃないですが、個人的に好きだったVSCodeをインストールすることに成功しました。バリバリ楽しく書いてます。
そもそもLinuxに詳しくなさすぎるので、コンソールでカタカタやっているだけで学ぶことも多いのですが、知識ゼロからの学びはやはり楽しいですよね。最終的には誇れるくらいに知識が付けばと思っていますが、まあまだエセエンジニアなので自己啓発ですけれど。
さて。VSCodeの件は別途記事にしますが、今回はGoのimportの件です。めっちゃ基本的な話ですが、そこそこ皆さん混乱している上に、結果的にどう書くべきかが明示されていないケースが多かったので、備忘兼ねて書いておきます。
某書籍で学んでいる最中ですが、以下のような構成なプログラムを用意しています。
zoo
↓
→→→animals
↓ ↓
↓ →→→elephant.go
↓ →→→monkey.go
↓ →→→rabbit.go
↓
→→→main.go
ざっくり言うと、
main.goから、各動物の名前のgoファイルに定義されているfuncを実行するもの
ですね。
各動物のgoファイルはパッケージ”animals”です。
今回はmain.goでanimlasをimportしようとした際に、どうにもうまく行かなかった話を書くだけでございます。
以下、main.goのソースです。
package mainpackage main
import (
"fmt"
"./animals"
)
func main() {
fmt.Println(animals.ElephantFeed())
fmt.Println(animals.MonkeyFeed())
fmt.Println(animals.RabbitFeed())
}
ポイントなのは赤太字です。
./で「今いる場所」を示すわけですが、更にそこから一つ掘った場所ということで./animalsですね。OS的には意味がわかりそうですが、Goはそうもいかないみたいですね。
ちなみにこれは書籍に書いてあったまんまですが、これだと動きません。
更に調べていくと、2つのことがわかりました。
・相対パスで動かすことができる(何かしらインストールする必要がある)
・Go的には相対パス参照がそもそも推奨されない。遅くなる。
うーん。Python<Goで学びを勧めている理由「シンプル」「速度」が半減しそうなので、避けたいですね。
しかし絶対パス書くのか?ホームディレクトリのユーザ名から指定するわけじゃねえよな…?と悩んでいたのですが、なぜか相対パスでない解決策のサンプルが落ちてない。
(もしかしたらOSとかIDEによっては相対パスでもできちゃうのかもしれない。だって書籍に普通に書いてあるんだもん。)
と思っていたら以下知識を獲得
・そもそもコンパイル時には$GOPATH以下を探索する仕様
なるほど。$GOPATH/src配下にあればいいということだな。と理解して、赤太字を書き換えたところ成功しました。
"zoo/animals"
まあ、なーんだ。というか、そりゃそうかって感じですが。
PATH的に指定した$GOPATHがルート的になって、そこからのsrcまではGoが勝手に見てくれると。
あとはさもmain.goを叩くときみたいに指定してあげればよかったんですね。なーんだ。です。
たぶん普通すぎてあえて書いてないんだと思いますが、素人はこんなんでも足が止まったりするだろうので、一応書き残しておきます。
(記事書くのが面倒くさくなってきたからこうして逃げてるわけじゃないですからね!)
Pixelbookが好きすぎてこれ一台で完結させたい話(Go言語のIDE(LiteIDE)編)
「編」と謳いましたが後続があるのかは不明です。
趣味の足が伸びつつありまして、技術力向上のためにプログラミング言語を一つ極めようかなあと考えております。大学時代に一通り学んだんですが、広く浅くで、とても極めたとは言えない状況で。
更にエセエンジニアになってから暫く経つので、もうあんまり覚えてないんですよね。
Pythonでいろいろと作ったりしているんですが、どうしてもChromeOSでは開発環境構築に限界(というか手間と知識が必要)で。そのためにWindows10(しかもハード買うとなるとSurfaceとか欲しくなっちゃうのでLaptop)を購入して導入したりなんてしました。
非常に多くのデバイスを持っている私ですが、ノートPC的なのはPixelbookとSurfaceLaptopとacerのChromebook tabで3台。まさかのWindows<Chromebookなわけです。
また、日々の使用感としてはPixelbookが本当に本当に素晴らしいので、たとえばカフェにて「IDEで遊びたいけどYoutubeとかもみたい…kindle読みたい…」って時に、WindowsだとYoutubeやKindleに難あり。PixelbookはIDEに難あり。なので、
どうにかこうにかPixelbookで快適に動作するIDEを構築できないものか…。と考えていたのです。
そんな中、一部のChromebookでは、デベロッパーモードにしなくてもLinux(Debianですね)仮想マシンが標準で使用できるとのことで。AndroidStudioなんぞを入れてる方もいるらしく。
Linuxなんて全然詳しくないけどこれは素晴らしい。最高の機会だと。
ということで、Go言語のIDEであるところのLiteIDEをインストールすることにしました。
基本的にはLinuxにピョコピョコインストールしていくだけですが、詰まった箇所についてだけ報告していきます。
・”libQt5Widgets.so.5”がいねえぞ!と怒られた
LiteIDEを普通にDLしてインストールして起動しようとしたら、コマンドライン上で怒られました。
そもそもコイツなんだよ…と思ったら結構有名なライブラリらしく、ググればでてきましたね。
単にインストールしていけばセットになってるのかと思ったんですけど、別でインストールしなきゃいけない様子ですね。
こちらからどうぞ。
インストールしたぞ。
…
…?
アレ?ない。
libQt5Widgets.so.5が/usr/lib/x86_64-linux-gnu 以下に出現するはずなのに…?
おかしいな。おかしいままフィニッシュ。解決したらまた更新します。うむ。
Chromebookって素敵ですよね。ところでChromebookTab10(Acer)を購入しました。
まだ届いてませんが。
GooglePixelbookは持っていまして、そこらへんからChromebookにそこそこメロメロになっている私ですが、しっかり使い倒していく中で、「もうちょい手軽な感じのChromebookが欲しいなあ」と思うようになってきました。
※ちなみにPixelbookはAmazon.comで安めに買えます。日本直送可。
いやーほんでそもそもChromebookって何?
⇒GoogleChromeブラウザをベースとしたOSが動作するコンピュータ。ChromeOSはLinuxベースのめちゃくちゃに軽いOSで、「ブラウザがあれば大抵のことはできるよね?」というスタンスで構成されているため、必要最低限の機能しか無いことが最大の特徴。
とはいいつつChromeブラウザさえあればWebサービスは享受できますし、ドキュメント類も触れます。最低限と言いつつ、一般的なPCユーザが使うのに不便を感じることはあまり無いです。
また動作が軽いことにも関連しますが、Googleのアカウントさえあればログインできるものです。ブラウザベースなので、とにかく起動が早い。20秒くらいでしょうか。そこも素敵。
また最近、(一部の端末で)Androidアプリが動くようになりました。ただでさえ活用しやすい動作の軽い端末をウリにしているところ、GooglePlayの巨大な市場がそのままChromeOS上で活かせるなんて、まあなんて素晴らしいんでしょう!
Pixelbookは、スペックをそこまで求められないChromebookの中でもフラッグシップ、ハイエンドな感じです。でも新しいのが欲しくなったんですよね。
理由を述べていきます。
1.軽い端末が欲しい
Pixelbook、1000グラムくらいあります。まあキーボード部とモニター部、どちらも500グラムくらいですからね、そんなもんです。なんなら軽いくらいですよね。
でも、片手で持って触り続けるにはちょっと重いんです。AndroidOSを操作する場合、大抵、物理キーボードは邪魔だったりするんですが、ひっくり返して裏に張り付いてるので取り外せない。使わないけど重いのです。
ああもちろん、あくまでChromebookはPCなので、物理キーボード(それもSurfaceProシリーズやiPadプロ系のようにカバーのようなちゃっちいキーボードではなく、しっかりとした打鍵感のあるもの)は基本的には必須だと思います。でもそれを「使わない場合もある」というだけのことです。
2.フル機能のChromeブラウザを使いたい(UIがPCライクであってほしい)
これはPixelbookとの差異ではありませんが、1.だけの理由だと「ジャアAndroidタブレット買えばいいじゃん?HUAWEIのm5シリーズとか買えばいいじゃん?」と言われるかと思ったので、そうじゃないんだよと言いたいためです。いやまあ、m5欲しいですけどね。
Androidは嫌いじゃない、というかスマホはAndroidしか持ってないです。素晴らしいOSです。ただ今回私は、Chromeをはじめとする各種機能のUIがPC向けの端末が欲しかったんです。そうなってくると、Windows10かChromeOSしかない(メジャーどころだと)。Windows10、一応候補にあげましたけど、正直あれはPCすぎる。仮想キーボードを使うことを意識できてないんですよね…。悪くはないしタップできることもいいですけど、物理キーボードは必須です。
1.で述べた通り、ChromeOSも物理キーボードは必要なんですが、しかし、使わない場合もあるんです。Windows10よりも圧倒的に。具体的にはAndroidアプリの使用時とか。そんな感じです。
以上から、「とにかく軽い」「Chromebook」「Androidアプリが動作する」と絞っていったときに、「物理キーボード必要だよな…あでも、物理キーボードが必要になるような作業はPixelbookでやればいいのか」と気づきました。結果、「とにかく軽い」Chromebookを求めた結果、「仮想キーボードでいいわ」となり、今回の決断に至ったものです。
日本で買うと5万円くらいして手が出しにくいので、なぜかとても安く売っているフランスのアマゾン(amazon.fr)で買うことをお勧めします。なぜか直送対応。
2019.2.2現在、込々で3万円くらい(240ユーロくらい)で買えます。アマゾンって素敵。
届いたら適当にレビューしますので、お楽しみに。
では。
群発頭痛に悩まされる日々から抜け出したい(対処方法を検証中)
「群発頭痛」というものをご存知でしょうか。
片頭痛と比べて圧倒的に知名度が低く、また片頭痛とは比べ物にならないほどの痛みを伴う(とされる)病気です。
実は22歳の時に発症して以来、毎年悩まされているのですが、身をもってその対処方法(回避方法)を検証しているので、少しでもどなたかの助けになればと思い、記録に残しておくことにします。
(ITの記事が基本ですが、スタートアップの身なので、とりあえずゆるりと記事を増やす必要がある、という裏事情もありますが)
とはいえ冒頭で述べた通り知名度が低いので、最低限どのような頭痛なのかを紹介してからにします。
・片頭痛などと同様、一次性の頭痛である。
⇒要は他の病気などの原因がある頭痛じゃなくて、単に頭が痛いだけの頭痛だよ~ってことです。例えば腫瘍や損傷に起因して頭痛がある場合は二次性頭痛ということになります。
・発症者はごくわずか
⇒20代~40代の男性で、アルコールを好む人に多いそうです。その年代でアルコールを好まない人を探すのも難しそうですが。統計上はそのようになっているそうです。(女性は少ないみたいですね)
また、頭の回転が早く、細かいところに気づく(繊細)、更に起業家に多いらしいです。(どっかの記事を読んだだけですので信ぴょう性はゼロです。単にプラスのことも書いておきたくてついでに書きました。起業してないですけど、私)
・定期的に発症する、独特な頭痛である
⇒片頭痛は「低気圧が…」ということがありますが、群発頭痛は「数か月~数年に一度」「毎日ほぼ同じ時間帯に」「1度程度」「数十分~数時間の間」発症する頭痛です。特定の時期にまとまって発症する様から、群発地震にかけて「群発頭痛」と名前がついているとか。いないとか。
・痛みの強さがちょっと尋常じゃない
⇒別名「自殺頭痛」とあり、その痛みからアメリカ人の発症者が拳銃で頭を打ちぬいたことがあるという噂があるほどです。他にも「痛すぎて頭を壁に打ち付ける」「じっとしていられずにウロウロする」「発症中は興奮状態にあり、所作が激しく強くなる傾向にある」という情報が沢山出てきます。私の場合、痛みの強さは日によりますが、強い場合は絶対に寝付けず、頭を拳で殴りつけたりします。(余計痛いのですがなんとか納めたくて縋ってしまう)
・頭(目)の片側のみが痛くなる
⇒発症者は、毎回同じ側の頭(片側)のみが痛くなります。それも目玉の奥部分を主とした激痛が続きます。人によるようですが、発症中は痛む側の目が充血し、鼻水と涙が出ます。私は右側です。
・アルコールをトリガーとして発症する
⇒たとえば毎日23時に発症する人も20時にアルコールを飲み始めることで21時過ぎには症状を呼び起こします。期間中は大抵の場合、アルコールを控えることが望ましいです。(ちなみに私は2018⇒2019の年末年始に発症し、さすがにちょいちょい飲んでしまっていました。日々後悔していました)
・痛み止め(ロキソニン等)が効かない
⇒痛みの強さによるのか質によるのかわかりませんが、痛み止めは基本的に効きません。ただなぜか「リドカイン)(麻酔)含有の鼻炎スプレーで痛みが軽減する」「”イミグラン”という点鼻薬で痛みを除去できる」「高濃度の酸素を一定時間吸入すると痛みを除去できる」ということが分かっています。(本質的な原因は不明ですが、鼻炎スプレーは、この頭痛が鼻奥の血管が拡張することによる神経の圧迫に起因している可能性があるとの見解からくるものです)
改めて恐ろしい病気だなあと思います。つい先日まで発症を繰り返していまして、先日無事に群発頭痛の期間が終了した模様です。(3日~4日の間、一切痛みが無ければ終了したものと考えるのが妥当)
小出しにしていますが、この頭痛が最大に恐ろしいのは原因がわかっていないということなんです。
鼻炎スプレーから推測されるところはありますが、鼻炎スプレーが効かない発症者も居るそうですので、根本的に解決しているとは言えない。
せっかくなので(せっかく群発頭痛になったので)、いろいろと検証してみようかと思っています。
第一弾。「ビタミンB不足説」
ビタミンBが慢性的(もしくは急速に)不足したことに起因して、現代サイエンス/医療で丁寧に認知されていないなんらかの急激な反応が発生。痛みを発症するもの。説。
なぜその説に至ったのか。意外とそれっぽい理由がいくつかあるので、並べていきます。
・痛みの質が「眼精疲労」に非常によく似ているため
⇒特に痛くなり始めの雰囲気は、目玉の奥にある違和感です。疲れ目かなあ~と思っていると、15分後くらいに痛みが強くなってきて「あ群発だ」と気づきます。ここから、単なる不足ではなく、不足に起因する何らかの反応で極端に強い痛みが発生したものと考えてみました。また、眼精疲労はビタミンB1等の不足に起因するものです。
・アルコールをトリガーとして発生するため
⇒アルコールを代謝するのに、実はビタミンB群が使用されます。アルコール摂取後翌朝、粘膜…というか口内環境が悪化しがちなのはそのためです。
・季節の変わり目に発生しがちのため
⇒群発期は季節が変わるタイミング(それも秋⇒冬)に発生する場合が多いそうです。季節の変わり目は体調を崩しやすいですが、ビタミン不足はよくやり玉に挙げられます。これもそのうちの一つではないかと考えるものです。
以上から、群発頭痛を発症している人は「アリナミンEX」等のビタミンBを補給できるサプリを接種することがよいと思われます。
ちなみに2018⇒2019の群発期、途中でアリナミンを摂取し始めましたが、それ以降「寝られない」ほどに痛んだ日はありませんでした。アルコールを摂取しても!すばらしい!
(※科学的根拠や出典はありませんのでご注意ください。あくまで推測と実験に基づく、私個人の感想です)
今回は、あくまでも群発期の途中から始めた実験だったので、効果の大きさが測定しにくい状況でした。次回発症時には、継続的に摂取することで、どの程度(今までの群発期と比較して)楽になったかどうか等を検証していこうかと思います。楽しみにしてください。
またもしよければ、同じような体験をしている人、ぜひアリナミン(をはじめとするビタミンB1、B6、B12を摂取できるサプリ)を服用して、どの程度変化があったか(なかったか)を教えてください。
楽しみにしています。
Surface Laptop(初代)をいまさら買ったのでいまさらレビューします
Surface Laptop(初代)を購入しました。
例にならって、詳細なスペックは割愛します。公式サイトでも大手ブログサイトでも見てください。
※そもそもSurfaceLaptopを買うに至った目的は、Pythonの開発環境を構築するのに手軽なノートPCが欲しかったというものです。当然、打鍵感は重要。またそこそこのスペックを求めたい感じです。
※2でなく初代を買ったのは、初代と2でCPU以外は全く同じだということを知ったからです。その程度の差だとも言えますし、初代からデザイン等を改善する必要がないくらいに完成度の高い製品なんだろうと理解したため、初代を購入するに至ったものです。
打鍵感が最高です。
結論だけ先に言っておくと、私が今まで触ったPCの中で史上最高です。ここまで快適だとは正直思っていなかった。また、打鍵感がここまで重要だとも思っていなかった。
説明するのに避けて通れないのがこのキーボードのアルカンターラ素材ですね。SurfaceProシリーズのキーボードカバーでも採用されていますが、ノートPCの、それもカバー目的ではなく触り心地目的でこの素材を採用しているというのは面白いですね。今どきのガジェットはメタリックから遷移しようとしているところだと思いますが、アルカンターラは独特です。Surfaceのアイコン感があってとても良いです。
また触り心地も素晴らしいです。手を置いていてもヒンヤリしない。滑らない。かといってべたつくような不快感も無い。100点だと思います。
またそんなことは捨て置いて、何よりこのキーボードの押し込み加減。控えめに言って最高です。叩いてる感でも触ってる感でもない。なんですかね、絶妙な押し返しと柔らかさの両立。底にすぐ届いてしまう指のストレスもない。おそらくですが「やや重い(強めに押す必要がある)」に該当するのだと思いますが、その中ではとても軽い。
さらにノートPCであるにもかかわらず、キーボードが奥になるにつれて高くなっています。それがノートPCの薄さとの両立を意識しながらなので、快適さと美しさを両立する。なんて最高なんでしょう。
冒頭で述べた通り、私が今までで触ったキーボードの中で最高です。デスクトップ含めて。
また、キー入力が快適だと、やはり使いたくなります。200文字書くくらいならどうでもいいですが、3000文字も書くなら、やはり塵も積もれば山となるって感じです。めちゃくちゃに快適です。ラップトップとしてはGooglePixelbookを使っていますが、打鍵感は比較にすらならない。(悪くはないですよ)
SurfaceProはもう二度と買わないと思われる。
このWindowsというOSは、本当に汎用OSであり、多くのソフトウェアがインストールできる。結果論だけで言えばこんなにポップなOSは存在しません。空前絶後なのかもです。
だけどね、どうしてもタブレットOSとしては全然使いたくない。タップするのもストレスです。アイコンが小さい。その他あらゆるUIが、指で触る仕様になってないんですよね・・・。
だから、ProシリーズGoシリーズみたいに、キーボードがおまけみたいに付いていて、背面を脚で支えるようなつくりじゃあ、OSまで含めての完成度はたかがしれちゃいます。多くのブログで指摘されるように、あの脚のせいで膝上にのせて触れない。
Windowsはやっぱりラップトップかデスクトップですね。タップができるのはおまけとして便利ですが、キーボードがベースです。そういうOSなんですもの。
Windowsのラップトップとしての魅力を感じたところで、記事はオシマイです。
色々あってPythonをつらつらとお勉強しています
せっかくなので備忘を兼ねて記事を書いていきましょう。
IDE(統合開発環境)をローカルに用意してお勉強しようと思っていたのですが、いかんせんGoogleにすべてを捧げている私は、自宅にWindows7のファイルサーバ化した化石マシンしかありません。
(HDDとメモリは一度ずつ交換していますが、8年選手なのでさすがに色々とまずい。そもそもWindows7なのがまずい)
iPad miniとかmotoZ2playとかPixelbookとかはありますが、一般的なIDEは入れられない。そりゃそうですよね。(Chromebookには色々とあるようですが、外国語に弱い私向けにベストなものはあまり無さそうです。もう少し日本にChromebookが浸透すればよいのですが…)
と、いうことでSurfaceLaptopを購入しました!!
初めて趣味感覚以外でWindowsマシンを購入しました。
新しいもの好きの端末変態である私が、SurfaceLaptop2がリリースされているのにもかかわらず、初代を安く購入するという衝撃的な選択です。
いや本当はこれすごく妥当なんです。いい選択です。軽く触れておきますが、
・初代と2ではCPU以外の性能差が無い。
⇛外観含めて。性能は本当にcoreの世代が違うのみです。カラーラインナップが変わってるとかはあるかもですが、どうせシルバーがほしい私には意味なし。
・SurfaceGo(SurfaceProのmini版/お手軽版)が発売された直後だから
⇛安くなってます。そしてSurfaceGoの需要は著しく狭い(端的にいうとあんまり売れないと思ってます)です。まあOfficeなりWindowsOSなりをあそこまでコンパクトに持ち歩けるというのはいち魅力でしょうが、このOSでキータッチがやりにくいというのは非常に大きいマイナスポイントなので、コーディングのお勉強をしたい私は絶対に買わない。そんなもの買わない。
こんな感じで、初代SurfaceLaptopを購入しちゃいました。新品未開封を某フリマサイトでunder10万で購入。届いたら一応レビューします。(性質上、ぶっちゃけ単なるクラムシェルなWindows10だと思ってますけど)
ほんでも、まあ、最低限コーディングルールくらいはクラウドの環境でも全然不自由なくできるので、Pixelbookにて既にお勉強は開始しております。最終的に作りたいのはWebサービスですし、IDEがローカルにあるだけではあまりよろしくないなあという思いも(全然具体的でも的確な話でもないんですけど)あって。ちょっと色々とやっっています。
使用しているのは”GoogleColaboratory”というサービスです。
GoogleDriveと連携できるので素敵。詳しくはググってみてください。
一応すぐに出てくる素敵な記事を。↓
さあここからがメモ書きです。
HelloWorldくらいはggrksとして、再帰関数を作ってmod計算をするようなコードを書いてみました。
a = int(input())
b = int(input())
def gcd(x, y):
if y == 0:
return x
else:
return gcd(y, x%y)
print (gcd(a, b))
実行するとこんなんなります。
Pythonってめちゃくちゃ高級な言語で、javaとc(とマクロとCOBOL)くらいしかまともに触ったことない身としては、コンパイル(解釈?)がんばってんな〜という感じ。
変数宣言もしない、forもifもdefineもインデントだけで範囲解釈して、コーダーの入力文字数を減らそう減らそうとしてくれていることがよく伝わってきます。
大学時代に画像処理の研究でMatlabというソフトウェアを使用していましたが、なんだかそういう次元です。
その分、大抵のことは勝手に理解してくれるんだろうなと思って高をくくっていたら、 input()のところで躓きました。
当たり前っちゃあ当たり前ですが、キー入力させる関数で外部から値を拾ってきているので、入力値は文字列型になっちゃってます。受けた際には int型にすぐさま直してから変数にぶち込む必要があるそうです。(こんなことで20分くらい格闘しちゃいました)
いやあ、でももしかしたらy==0とか出してるから死んだだけで、当該値(aとb)を使用して単純な計算を実行するのであれば、勝手に「おっとこれはint型だな」とかやってくれるんでしょうか。さすがに期待し過ぎかな…。
今回はこのへんで。
また粛々とPythonの変な話があれば更新します。もしくは何かサービスを作っちゃったらその時に。
でも直近だとSurfaceLaptopかなあ。
Pixel3を一週間使用しての感想を書いてみる(※非一般向け。マニアックな感想です)
先週わたしの手元にPixel3が届きまして、本当であればその日にでもその興奮をお伝えするべく記録に残したかったんですが、さすがに一日で何がわかるんじゃと言われそうだったので、興奮しながら一週間過ごし、
ようやく少し落ち着いてきたところで記事にしていきたいと思います。
全体的に、直前まで使用していたEssential PhoneやPixel2との比較になります。