まったりするmatayu

ツイートにゴミがついた感じのブログ

golangのパッケージ分け

main package直書き開発をしていたから,そろそろしっかりパッケージ分けをしたいと思う.

packageを分ける際の決まり事

golangはpackageを分ける際に,例えばdatabase packageだったら

ファイルの頭で package database と宣言すればいい...だけではない!

packageごとにディレクトリも分けなければならない.

例えば次のような感じ.

ChatApp
├── chat
│   └── melody.go
├── database
│   └── db.go
├── main.go
├── oauth
│   └── oauth.go
└── router
    └── router.go

chatディレクトリの中のmelody.goはpackage chat で,databaseディレクトリの中のdb.goはpackage databaseといった具合である.

この時,ディレクトリ名とpackage名は一致させる必要がある.

関数のスコープ

引っかかったのは関数のスコープ.

golangは他のpackageから関数を参照する時,関数名の先頭が大文字のものでないといけないようだ.

database.sqlConnect()のようにpackage databaseのsqlConnect()関数を呼び出そうとしたが,

"sqlConnect not exported by package database"というコンパイラエラーが出てしまい呼び出せなかった.

関数名の先頭を大文字にしてdatabase.SqlConnect()として呼び出すことでエラーが消えた.

ちなみにpackage外から参照したいものの名前の先頭を大文字にするというのは,

関数名だけでなく,変数名や構造体名にも適用される.

関数をpackageに分類するための基準

たくさんのmainに直書きされた関数たち.

これらをどういった基準でどのpackageに分けていくのか.

そもそも,どのようなpackageを作れば良いのか.

その辺りが"何となく"でしかわからない.

そのうちわかるようになるか.

追記.

使用する外部packageがlocal package 同士で重複しないようにする.

という自分なりのpackageの分け方を思いついた.

golintの警告を見て清書

golintがコメントの書き方とかパッケージ名の決め方をレクチャーしてくれる感じだった.

素直に従ってぽちぽち直していった.

golintはgolangの書き方を学ぶのに良いかも.

お絵かき配信振り返り10~12

今回振り返るのはこの動画.

https://youtu.be/-D27r997ifo

https://youtu.be/flWqBNzhoYc

https://www.youtube.com/watch?v=pMnaz_enbYU

髪の毛の影は結構うまくつけられてる気がする.

やっぱり髪の流れを意識するのは大事で,後の工程もやりやすくなる.

よく考えたらスバルちゃんは黒髪だよな.こんな緑色じゃない.

まあそういうのもありか.色ちがいスバル.

そう考えたらいろんな色のスバルちゃんを描きたくなってきた.

影を塗る時は乗算レイヤで濃い水彩(自作)を使って塗るのが楽.

その時の色は薄い灰色(明度高めで彩度低め)がいい感じ.

もうちょいで完成.時間かけすぎ?

お絵かき配信振り返り9

今日はこの動画を振り返る.

https://youtu.be/bYZW6BPDs4s

前回の振り返りで言った通り,テーマを絞って動画の時間も短くした.

前回

mattari-matayu.hatenablog.com

テーマは「瞳」

自分は瞳に光を入れていく作業が好きで,これからもこだわっていきたいところである.

瞳を描き終わったのがこちら.

f:id:mattari_matayu:20200525202842p:plain
いい感じにかけた瞳

瞳を描くパターンは結構つかめてきている.

ただ,瞳の線画の上にも光を置いた方がよさそう.

レイヤがごちゃごちゃになるからそういう点ではあまりやりたくないことではある.

レイヤを気にするのはlive2dで動かすことを頭の片隅に置いているから.

一枚の絵を完成させて,その後パーツごとに切り分ける方法であればレイヤを気にすることはないが.

この絵は瞬きくらいさせてみようか.

お絵かき配信振り返り6,7,8

1時間から2時間の長い配信になってしまった.

6 https://youtu.be/u4k-0gk3yW8

7 https://youtu.be/AN0hm03EGtA

8 https://youtu.be/0qpQN7-ZMdg

夢中になって描いていると時間を忘れてしまうから気をつけたい.

見返すのも大変だし.

9からは細かいテーマを決めて,なるべく30分以内で収まるようにしようと思う.

色ラフは結構いい感じに描けたなと思っていたが,

結局線画はラフをかなり無視した感じになってしまった.

そういえば下書きをしてない.

ラフからいきなり線画に入っても良い気はするが,

それだと線画を描く時に苦戦する可能性があるから,

今度からは下書きを忘れずにやる.

(今回はほぼ模写だからあんまり関係ない気もする.)

相変わらず筆は遅いから,たまには勢いで描くこともやってみようかな.

5分間ドローイング的な.

その時はマイクもオンにしてちょっとコンテンツ化をしてみようかな(人に見せる用みたいな).

実家暮らしで自分専用の部屋というものもないから,ちょっと難しいかな.

5分間だったら配信じゃなくても動画を投稿する形でいいか.それで行こう.

振り返りに戻る.

手を描くのはやっぱり難しい.何回も書くしかない.

ただ,今回は下の講座を参考に手を描いてみた.

www.palmie.jp

確かに,手を大まかなパーツに分けて考えると,描きやすい.

この方法でもう少しやっていこうと思う.

初めて就活系の説明会に参加した.

大学3年生になると就活の話が今まで以上に耳に入ってくるようになりました.

ということで就活の話もブログに載せていきたいと思います.

今日,初めてインターンシップの合同説明会に参加しました.このご時世なのでZoomでの開催でした.

意外と面白く話を聞けた感じがします.

自分のイメージでは就活って「つらい」とか「くるしい」という暗いイメージがあったので,

楽しく話を聞けたのは意外でした.

企業の理念や事業の話を聞いていると,

自分の目指す理念と一致する企業があったり,

これやってみたいな,と思うような事業があったりと結構興味をもてたので,

就活って楽しく積極的にやっていったほうが良いなと思いました.

辛いことはもちろんあるとは思いますけどね.

最近,法律系の講義で教育基本法の第7条を読みました.

次に条文を載せます.

大学は,学術の中心として,高い教養と専門的能力を培うとともに,深く真理を探究して新たな知見を創造し,これらの成果を広く社会に提供することにより,社会の発展に寄与するものとする.

大学は社会の発展を目的としたものだということがわかると思います.

自分は少し前まで,

「なんで在学中に就職活動なんてさせるんだ.勉強させろ.」

という考えを持っていました.今考えるとこの考えは間違っているなと感じます(全否定はしませんが).

なぜなら,大学が発展させようとする社会を知らずに,

大学で学ぶのは少しズレている気がするからです.

就職活動は大学での学習の時間を削って行うものであることに変わりはありませんが,

その活動を通して得られる,社会に関する知見は割と多いのではないかと思います.

就職活動は,自分の知らない社会の試みを一部でも知ることができるので,

卒業研究のテーマ決めにも役立つ気がします.

この調子でインターンシップにも参加して,自分の知見とモチベーションを高めていきたいと思います.

Go modulesを理解する.

大学の講義でGolangを触る機会があって,もう一度Golangをトライしてみたいと思った.

今回は,2年の頃に引っかかってGolangから離れてしまった原因のGo modulesを理解しようと思う.

あの時はgopathとかgo modとかがこんがらがってしまってた.

今だったら理解できるはず...

いろいろやっていく.

syfm.hatenablog.com

gomodules が on の状態:module-aware mode 従来の状態: GOPATH mode

module-aware modeの時とGOPATH mode の時では,go get の挙動が変わる.module-aware modeの時はパッケージが$GOPATH/pkg/mod 以下でバージョン毎に管理され,モジュール内のgo.modとgo.sumが書き換わる.

今現在module-aware mode時のgo getを module-aware go get として言い分けしている.

利用可能なモジュールを集約しているmodule index.利用価値があるものなのかはわからない.

Go modules services

あらゆるモジュールのチェックサムを集約しているsumdbというサービスがある.これのおかげで安全にgo get できてるのか.

golangのモジュールを作ったとして,それを一旦go get できるようにしてしまうと,proxyに保存されて実質永久に残ることになる.

Go 1.13では $GOPROXYという環境変数が使えるようになり,デフォルトでは,https://proxy.golang.org,direct となっている.一旦proxyサーバにgetしに行って,ダメだったらモジュールの提供サーバーへ直接取りに行く感じ.

re-engines.com

goenvなるものがあるらしい!pyenvみたいに使えるのか?入れてみた!

現行は1.14だけどgoenvでインストール可能な最新バージョンは1.12betaまでだった.更新されてないの?

一緒にdirenvというディレクトリ毎に環境変数を設定できるツールが紹介されていた.

brewでインストールできるみたい.覚えておこう.

Go modulesの源泉はGoのメインリポジトリ外で開発が進められたvgo.

go.modファイルを開発者同士で共有すればパッケージのバージョンを揃えた開発が可能になるのか.

パッケージ名はディレクトリ名と同じにするのが通例.

なんか面白そうな記事が紹介されてた.

qiita.com

Golang以外にもawesomeなんちゃらっていうqiitaの記事があるからもし他言語を勉強することがあったらawesomeなんちゃらを探してみよう.

go mod init する時はgo mod init github.com/username/appnameの形が一般的かも.

基本的な動作は blog.golang.org

ここに書いてある.

Go modulesってただのパッケージマネージャーという認識であってるか.

medium.com

go.sumは開発者間で共有すべきファイルである.

go mod edit コマンドでreplaceをgo.modに追記することで,local file path をパッケージの参照先に指定できる.