Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

Kanazawa.rb meetup #70 に参加しました #kzrb

kzrb.doorkeeper.jp

Meetup #70 - Kanazawarb

気付けば第70回とキリのいい回数を重ねてきてますね。今回はITビジネスプラザ武蔵のサロンスペースCRITで開催されました。

プログラミングElixir 16章

前回は14章を読んでいたんですが、家で15章を読んだのでこの日は16章の「OTP: サーバ」を進めました。

  • GenServer ビヘイビアを使ってサーバを作る
  • 必要な関数が定義されているので、必要であれば関数をoverride(?)すれば良い
    • handle_call とか handle_cast とか
  • iex からこのサーバーに値を渡して、サーバーの状態を更新することができた
    • GenServer にはstateという概念があるっぽい
  • receive などを自分で記述しなくて良いので楽

プログラミングElixir

プログラミングElixir

Ruby 2.6.0-preview2 について

先日RubyKaigiがあって参加はできなかったもののTwitterのタイムラインを見ていたところ2.6.0のpreview2がリリースされたと話題になっていたので、ほんの少し見てみてendless rangeについて気になってまとめたものを発表しました。以下発表で使った資料です(markdownで作ってVSCodeのプレビューで見せる簡易なものにした)


https://www.ruby-lang.org/ja/news/2018/05/31/ruby-2-6-0-preview2-released/

2.6.0ではJITコンパイラの導入を含むいくつかの新機能がある。その中で endless range が気になったので触ってみた。

(1..10) # finite range
(1..) # endless range

実行環境

2.6.0-preview2 をインストールする。

$ brew upgrade ruby-build
$ rbenv install 2.6.0-preview2
$ cd hoge
$ rbenv local 2.6.0-preview2

use case 1

arr = ["a", "b", "c", "d"]
# => ["a", "b", "c", "d"]
arr[1..]
# => ["b", "c", "d"]
# 配列の特定のインデックスから最後の要素までを取得する新しいやり方
# VS
arr[1..-1]

use case 2

(1..).each {|index| ...} # infinite loop from index 1

# VS
n = 1; loop { ...; n += 1}
1.upto(Float::INFINITY) {|n| ... }
1.step {|n| ...}

use case 3

["a", "b", "c", "d"].zip(1..)
# => [["a", 1], ["b", 2], ["c", 3], ["d", 4]]
["a", "b", "c", "d"].zip(0..)
# => [["a", 0], ["b", 1], ["c", 2], ["d", 3]]

and more

(1..).class
# => Range

(1..).size
# => nil
# 期待される値については https://bugs.ruby-lang.org/issues/14699 で議論されている模様

(1..).take(10)
# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

(1..).step(2).take(10)
# => [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

(1..).map {|n| n * n }.take(10) # compute infinitely...

# Enumerator::Lazy と組み合わせると遅延評価できる
(1..).lazy.map {|n| n * n }.take(10).force # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
(1..).lazy.select {|n| n % 3 == 0 }.take(10).force
# => [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
(1..).lazy.select {|n| n % 3 == 0 }.select {|n| n > 100 }.take(10).force
# => [102, 105, 108, 111, 114, 117, 120, 123, 126, 129]

最後の方は遅延評価の話になってしまったけど、Enumerator::Lazyモジュールの存在を知らなかったので勉強になりました。(発表ではEnumerableと紹介してしまったのでここで訂正します)

docs.ruby-lang.org

その他

  • 今どきのCLI HTTPクライアントHTTPieのご紹介があった。
    • 標準でJSONを整形して表示してくれるのはありがたい

httpie.org

  • AWS summit / Civic Tech Forumの参加報告
    • Civic techによって解決してる事例は結構あるけど、その情報があまりない(検索しづらい?)のでカタログ的なサイトがあればいいのではという話
  • Promiseおよびasync/awaitのハマりポイント
    • どこで非同期処理を待つ(await)のか、同期処理との共存あたりの話だった
    • 以前Promiseのmapやシーケンス化についてcoというライブラリを使ってたけど、async/awaitが出てきてもう役割は終えたのかな
    • It is a stepping stone towards the async/await proposal.

github.com

懇親会

www.hotpepper.jp

こちらの中華料理屋で飲み食べ放題だった。中華料理の食べ放題って凄い。そういえば横浜中華街でも食べ放題コースあった気がするので中華料理屋業界では一般的なのかな?

食べるのに夢中になってしまい写真はこれだけ...w 店内でワールドカップ中継が流れてたので話に集中できませんでした。餃子は美味しかったけど黒酢があればもっと良かったなあ。

Kanazawa.rb meetup #69 に参加しました #kzrb

kzrb.doorkeeper.jp

Meetup #69 - Kanazawarb

今回は北國新聞会館にあるDMM GAMESさんの新オフィスで開催されました。写真にあるように特徴的なディスプレイ(DMM.comラボの南町事業所もこういうのがある)がドーンと配置されているフリースペースです。参加者が多くて賑わいましたよ。LTのネタが準備できなかったのは無念...。

プログラミングElixir 14章

  • この章は複数のプロセスを作りそれらの扱い方をまとめた内容
  • 思想としてはカジュアルにプロセスを作って行きましょうという感じ
  • spawn/3 でプロセスを作成、PIDが返ってくる
  • 他のプロセスに対して send/2 でメッセージを送って receive/1 でメッセージを受け取る
  • プロセスのリンクとモニタという概念がある
  • プロセスを使って並列マップ関数を作れる

この辺使いこなせるようになったら面白いだろうなという内容でした。この先の章も楽しみです。

プログラミングElixir

プログラミングElixir

若者の質問に答えるタイム

隣の席にRailsでWebアプリケーションを作っている若者がいていくつかの質問を受けて答えてました。(Devise周りの話は@wtnabeさんがいい道案内をしていました。) form周り、view内の変数バインド、ルーティングなどなどこういうところがハマりポイントになりうるんだなあと感じました。

懇親会

www.hotpepper.jp

retty.me

焼き肉食べ放題!!!またもやkzrbがお店に勝ってしまった...w

二次会はクラフトビールが飲める行きつけのお店へ。 ゆるゆる飲んでおりました。

Japan Container Days v18.04 に参加しました

containerdays.jp

先日Japan Container Days v18.04 というイベントに参加してきました。東京のベルサール神田で行われ参加者500人規模のカンファレンスとなりました。

だいぶブログに書くまで時間が空いてしまいました。ここでは聞いた講演についてメモを載せていきます。

keynote

サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術

  • サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術 // Speaker Deck
  • AKE=プライベートコンテナ基盤
  • Adtechは性能要件がシビア...
  • Minikube
    • minikube 触ってみるか(takayuki)
  • 部署内ではGKE/ECSを使ってる
  • オンプレ上に基盤を構築(-> 今回の話)
  • 2人で作った(約10ヶ月)
  • こういう基盤(GKE含む)を使うと最初は辛いけど、アプリケーションをContainerizeしてくると開発サイクルが早くなる
  • E2Eテストツールが用意されている(Sonobuoy, bosh)
  • Openstack既に使ってるのでintegrationもやってるよ
  • Adtechブログに詳細のってる
  • メトリクスはdatadog/prometheus

マイクロサービスアプリケーションとしての機械学習

  • マイクロサービスアプリケーションとしての機械学習 // Speaker Deck
  • メルカリの機械学習エンジニアが登壇
  • 出品時の画像認識機能(タイトル、ブランド、カテゴリを自働入力してくれる) on Kubernetes
  • デモ動画ではレスポンスも問題ない感じにできててすごい
  • 機械学習の課題
    • 計算時間(数100ms-数sec)
    • サーバーコスト
    • 学習モデルとコードの整合性が必要になる
  • 学習環境というのが必要
  • 画像認識時に実は色推定をしていて色情報も取得している
  • 機械学習エンジニアが1からDockerfile作ってSREに渡したら1週間でKubernetes + AWS環境ができてた
  • Microservice 基盤が整備されつつあったタイミングだった
  • Spinnakerでデプロイ
  • 機械学習導入初期時は手動運用していたが、すぐに運用の限界がきてしまった
  • 機械学習モデルはPersistent Volume(?)に入っている
  • 機械学習エンジニアがどこまでやるか問題(システム運用も?)

"Yahoo! JAPANのKubernetes-as-a-Service"で加速するアプリケーション開発

  • "Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
  • ズバトクon Kubernetesの話
  • 課題
    • 通常時の数倍〜数十倍アクセスが来るキャンペーンがあると、容易にスケールアウト、スケールアップできなかった
    • リリースの自動化が進んでなく頻繁にリリースできてなかった
    • 新たな環境の用意がしんどい
  • Concourse CI
  • PHP -> Java
  • 次の環境にデプロイするためにCIサーバーからプルリクエストが投げられる
  • マージされるとデプロイが始まる
  • Prometheus使ってる
  • OpenStackのハイパーバイザー落ちたら、自働復旧している
  • Cloud Nativeな設計思想になれていく
  • Kubernetes-as-a-Serviceの話(ZLab須田さん)
  • GKE/Azure Container Service/EKS的なもの
  • Yahoo!JapanのKaaSを開発している
  • 2017/10〜からプロダクション利用
  • 障害や問題のあるノードを修復(セルフヒーリング)
  • 障害のあるノードを自働検知後、自働削除
  • 必要なノード数になるまで自働でノードを作成する
  • クラスタのアップグレードをゼロダウンタイムで
  • Kubernetesクラスタのオペレーションは人間のやる仕事ではないので、機械に任せる
  • Kubernetes自体が分散システムである
  • CustomResourceDefinitions(CRD)

Kubernetes x PaaS - コンテナアプリケーションのNoOpsへの挑戦

  • Kubernetes x PaaS – コンテナアプリケーションの NoOpsへの挑戦
  • NoOps?
    • システムに自律的な回復性を持たせる
    • 無停止メンテナンス
    • 自律的リソース調整
  • Kubertetesにおいては...?
  • Horizontal scaling, Automated rollouts and rollbacks, self-healing
  • Podのフェーズ
  • Probe: Liveness, Readiness
  • Restart policy
  • Rolling update
  • StatefulSetという概念があるけど、これもRollingupdateに対応している
  • Auto scale podのスケーリングと、クラスタサイズのスケーリング(ノードの数の調整)
  • ステートフルなワークロードをKubernetesで管理するのはしんどい
  • 回復力を持つプラットフォーム(PaaS, SaaS)を使っていくのがいいのでは
  • Open Service Broker API + Service Catalog
  • これらを使うことで外部のプラットフォームのサービス(Database等)を利用できるようになる
  • 統一されたインターフェース
  • managed Kubernetes
  • サーバレスコンテナサービス
  • Fargate的なやつがAzureでもある
  • Virtual Kubelet
  • サービス間通信・通信の回復性
  • Service Mesh(Istioなど)
  • Helm

2018年のDocker・Moby

  • [表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby
  • Docker Tokyo Community
  • ランタイム、オーケストレータの歴史について
  • DockerとK8sの関係が逆転した
  • dockerからk8sを管理できる
  • k8sはCRIを通じてcontainerdを扱える
  • docker buildの後継・代替
  • BuildKit
  • MobyProjectに入っている 
  • Dockerfileを中間言語(LLB DAG)にコンパイルする
  • DAGの記述はmulti-stage Dockerfileで書ける
  • コンテナ以外のものもビルドできる(ex. goの並行ビルド)
  • P2Pレジストリが流行ってくるのでは?(dragonflyなど)
  • rootless runcでセキュリティリスクの影響範囲を抑える
  • VM型ランタイムも流行ってくるのでは?

今こそKubernetes。最高の仕事道具で使いこなそう

  • Japan Container Days: 「今こそKubernetes。最高の仕事道具で使いこなそう」by capsmalt
  • beginner向けセッション
  • ロードバランシング、ローリングアップデート、ネットワーク管理など...
  • 学習コスト高いんだけど、マネージドサービスとして提供しているんでそれ使ったら良さげ
  • K8sの周辺ツール?まあいっぱいあるよね
  • みんなが継続的にコミットして更新される。またサポートがあるのは重要なファクター
  • K8sで開発環境を作る
  • Helm使おう(また出てきた)
  • システム構成のパッケージングを担う
  • 1クラスター内で複数のネームスペースを使って環境を隔離できる
  • パッケージングをどの単位でバージョン管理するのかは悩みどころ
  • バージョンの切り替え(upgrade, rollback)が可能

Kubernetesのない世界 すべてがサーバーレスになる

  • Kubernetesのない世界 すべてがサーバーレスになる
  • ソフトウェアを通じて価値を提供する、ということがわれわれがすべきこと
  • 手段はserverlessでもkubernetesでもよい
  • Opsにかけるコストを減らしていきたい
  • 将来的にはVMもKubernetesもいらなくなって、ただコンテナを動かす環境が流行るのでは(FargateとかAzure Container Instanceとか)
  • CNCFでもサーバーレスのランドスケープがある
  • Observability問題
  • Lambdaにはエージェントをインストールできない!!!
  • IOpipe(Lambda functionをラップしてメトリクスを収集するやつ)
  • Epsagon, THUNDRA(CloudWatchLogsにログを吐いてそれを独自のダッシュボードで可視化できる)

『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法!

  • 『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
  • k8sの概念の難しさ
  • YAML書いてばっかり?
  • キャッチアップしてチームに普及しようとすると途端に疲れる...
  • コンテナの次の技術を考えてみる
  • 10年前はクラウドが出てきたところ
  • 5年前はクラウドが定着、プロビジョニング、CI/CD自動化
  • 次の流れはPaaS, Serverlessなのでは
  • 開発者に価値を提供するには
  • Serverlessプラットフォームではコンテナ技術を使ってfunctionを実行している
  • CNCF Serverless whitepaper
  • プラットフォームのカテゴリによってメリット・デメリットあるんで適切に使い分ければいいのでは?

CNCF: Evolving the Container Landscape

  • [B-5] CNCF: Evolving the Container Landscape [Chris Aniszczyk(CNCF)] - YouTube
  • @craさん
    • 英語による講演だったので以下認識違いがあるかもしれませんご了承ください
  • Cloud native technologyを普及する
  • cncf.ci: cross cloud ci
  • certified K8s (様々なプロバイダが存在している)
  • What is cloud native?
  • vmからIaas, PaaS, container, K8sと時代が流れてきた
  • パッケージングやオーケストレーションはcloud nativeの一つの側面に過ぎない
  • l.cncf.io
  • many paths to cloud native
  • containerization
  • CI/CD
  • Orchestration
  • Observability(prometheus/fluentd/Jaeger)
  • Service Mesh(envoy/kinkerd)
  • Networking(CNI)
  • Distributed database(Vitess)
  • Messaging(NATS/gRPC)
  • container runtimes(containerd/rkt)
  • software distribution(TUF/Notary)
  • 完璧なものではないので、知見とか改善あったらissue出してほしい
  • serverless
  • cloudevents specification
  • CNCF sandbox(early stage projects)

所感

  • K8sの話題が多かった
    • Dockerコンテナを本番環境で使うにあたっては信頼できるプラットフォームになっているっぽい
  • Serverlessの話もちらほらでてきていた
    • 一見コンテナと関係なさそうだけど、Cloud Nativeの文脈にも登場している
  • コンテナの生態系の進化について行けてない
    • K8s触れてないしそれに付随するツール達も同様
  • たまには大規模なカンファレンスに参加するのもよい
    • ありきたりだけど良い刺激になる(普段聞けないような話を聞ける)
    • 人が多くパワーを使うのでその分ヘロヘロにはなる

写真

ランチセッションで配給されました。全日のイベントでお昼ご飯の心配をしなくていいのはいいですね〜。

もぐもぐタイムどらやきでした。

アフターパーティーも大盛況。

アフターパーティーにて次回のJapan Container Days開催が発表されサイトも更新されました。

JAWS-UG金沢 #32 に参加しました #jawsug

jawsug-kanazawa.doorkeeper.jp

今回は JAWS DAYS 2018の参加報告会でした。面白ポイントとしてはAmazon Chimeというビデオミーティングツールを使って3会場(金沢、磐田、名古屋)同時開催をしたことです。最初に加藤さん(@PharaohKJ)から挨拶がありましたが今回の開催にあたって以下のようなことをおっしゃってました。

  • 問題意識として地方の勉強会は人が集まらない
  • だったらリモートでいろんな会場繋いでやればいいのでは?
    • 各会場は少人数でも人が集まってる感でる

たしかに他の会場と繋ぐと新鮮な感じがしてよかったです。また、今回はAWSよりAmazon Chimeを貸していただけたとのことでした。ありがとうございました。マイクの調整や共有画面の操作は課題としてありましたが、それ以外は問題なく他会場の発表を聞けました。パケットロスはほぼなかったのではないかと思います。

aws.amazon.com

各発表のメモ

大規模なイベントだったんだなと感じました。それだけAWSユーザーもいるし興味を持つ層も多いということなんでしょう。サーバーレス、IoT、機械学習というのがトレンドっぽいですね。

加藤さん

栗原さん(磐田支部)

山口さん(名古屋支部)

Kanazawa.rb meetup #68 に参加しました #kzrb

出張やらなんやらでだいぶ出遅れましたが書いていきます。

kzrb.doorkeeper.jp

レポートはこちら Meetup #68 report - Kanazawarb

今回は「開発環境自慢 LT 大会」ということで参加者全員が発表する回でした。私は自宅作業場のデスク周りを紹介しました。

何人か物理的な道具(ディスプレイやキーボードやどういう配置にしてる等)の話をしていて参考になりました。あと .zshrc やエディタ・IDEの設定をどこまでカスタマイズするかという話もでてきて面白かったです。私は最近だとキーバインドはあまりカスタマイズせずにプラグインは必要なものをインストールするという傾向にあります。エディタのVimモードは使わず(結局このキーバインド使えんやんってなるから)、エディタに体を合わせていくスタイルにしています。

懇親会

www.hotpepper.jp

www.hotpepper.jp

この日はたしか夏日になって暑かったのでビールが美味しかったです。まだ明るいうちから飲めるのは背徳感があって良いという話で盛り上がっていました。

二次会はメキシコ料理屋で。いきなりフラメンコが始まって驚きましたが、圧巻の踊りでした。目力も凄い。炎上ステーキ(フランベしてる)も名物のようです。

次回

次回はDMM GAMESさんのオフィスをお借りしての開催です。

kzrb.doorkeeper.jp

Kanazawa.rb meetup #67 に参加しました #kzrb

風は冷たかったけどだんだん春らしくなってきましたね。お昼前に四高記念公園やしいのき迎賓館、柿木畠を散歩してたんですが気持ちよかったです。

kzrb.doorkeeper.jp

Meetup #67 - Kanazawarb

今月も参加してきました。参加者は20人ほどになって、みなさんいろいろやりつつも似たことやってる人で話したりLTもたくさんあったりで良い感じにmeetupできた感じがありました。

プログラミングElixir

第13章

  • 前回の続きで、GitHubのissueをテーブル形式で表示するプログラムを写経
  • escript というものでコマンドラインから実行可能なファイルを生成する
  • mix format タスクというのがあるらしい
  • 生成したファイルを実行してみたが、issueに日本語が混じっていると文字化けしてしまった

この日はLTもあったのであんまり進捗なかった。ひとまずCLIで実行するまでできたのは嬉しい。

プログラミングElixir

プログラミングElixir

LT

docs.google.com

前回、ErlPortの話をするぞって言ってたんですが、確定申告というタイムリーなイベントがあったのでそれに関して使ったRubyの話をしました。ちょっと発表前の準備にばたついてしまったんですが、お手軽に楽できるのはいいよねってのが要旨です。発表機会増やして喋るの慣れたいですね...😅

他の参加者のLTも面白いものが多く盛り上がってしまい時間がキツキツになってしまいましたw 5分でまとめるのも中々大変。

懇親会

www.hotpepper.jp

www.hotpepper.jp

安定のパパロクと丸二。チーズダッカルビ美味しかった。Amazon Primeのオススメアニメ情報や、キャンプはいいぞって話、Effective *シリーズの話をしていた気がします。

途中でラズパイが出てきて、にぼしさんもIoTやりましょうよ〜って誘われました。ちょっと興味はあるけど手を出せてない...w

来月はLT大会のはず。

Python Boot Camp in 金沢にTA枠で参加しました #pycamp

pyconjp.connpass.com

初心者向けPythonチュートリアルイベントが金沢にやってくるぞ!ということで参加してきました。去年から仕事でPython(Webアプリケーション)使うようになってある程度は触れるようになったのでTA枠で参加しました。

準備段階

私は去年からPythonを使っていてかつ(おそらく)金沢初のPythonイベントということで当初は普通に参加しようと思ってたんですが、予め当日使用するテキストをざっと見たところこれまでに経てきた内容だったのでせっかくの機会だしTAやってみようかなという気持ちで申し込みました。教えることに関しては仕事でカジュアルに教える経験はあったものの、全くの初心者に対してだったり決められた題材の中で教えるということは無かったので正直不安もありました。

当日までの準備としては、Python Boot Campで使用されるテキストを自分で一通り触りながら進めました。読んでみると意外な発見もあって、/// 演算子が用意されてるだとか、spam * 5 のように文字列に対して繰り返して連結を行えるのを初めて知りました💦

Python Boot Camp Text — Python Boot Camp Text 2016.04.28 ドキュメント

数値型の演算子 :: 4. 組み込み型 — Python 3.6.4 ドキュメント

strは共通のシーケンス演算が使用できる :: 4. 組み込み型 — Python 3.6.4 ドキュメント

また、イベントスタッフ用のSlackが用意されており、講師、コアスタッフ、現地スタッフ、TAそれぞれが参加しオンラインミーティングやチャットで当日までの流れや準備を確認しました。オンラインミーティング(ボイスチャット)では、決まったことをリアルタイムでGoogle Docs上に書き込む形を取っていて便利だなと思いました。このやり方参考にしたいですね。

当日

講師と現地スタッフ、TAの皆でランチミーティング。イベントのタイムスケジュールや注意点を改めて確認。そして美味しいご飯を頂く。ボンゴレビアンコはおもいっきりニンニク効いていたのは反省。@runble1 さんに息整えるやつ貰ってしのぎました(ありがとうございました)

オープン前に会場の準備。ITBP武蔵のCRITで行いました。机の上にはPython Boot Campのステッカーが置いてあります。ぜひ貼ってくださいねw

受付は安定の @cotton_desu さんでした。 @PharaohKJ さんも受付後の席の案内ナイスでした。ありがとうございました。(参加者のレベルやOSによって席を決めていました)

講師の @takanory さんによりテキストを進めている様子。軽快な喋りで固さもほぐれて良い雰囲気になっていました。我々TAはうろつきながらハマってそうな人に声を掛けたり、質問のある人のところに行ってアドバイスしたりしていました。最初は参加者の方から質問されるのを待っていたんですが、こちらから話しかけてみると実はここどうなってるんですかね?みたいな質問が返ってきたりして開始すぐの時間帯はTAからコミュニケーションを取るというのが有効なんだなと分かりました。

途中おやつ休憩が設けられました。教える側も頭を使って疲れたのでチョコレートたくさん頂きましたw せっかくTAという立場だったので参加者と話をして過ごしました。全体的にわいわいしていて良かったと思います。おやつは正義。

最後は自由時間でテキストに書いてあるスクレイピングを試してみたり、その他参加者がやりたいことをやったりという時間になりました。スクレイピングは皆さん一通りできてたようで良かったです。

無事にBootCampを終えて集合写真!皆様お疲れさまでした〜。

気になった質問など

参加者からの質問とそれに対する自分の回答および反省点です。

  • インデントはスペース or タブどちらがいいのか?
    • スペース4つでと答えた。たしかに言語によって規約がことなるので最初は気になりますよね。
  • ファイルのオープン、クローズの概念について
    • ふわっとした回答をしてしまった(ごめんなさい)。
    • ファイルディスクリプタについて説明をはしょったのでクローズの部分があやしくなった...(リソースを使い切ってしまうっていうのを上手く説明できなかった)
    • ちょうど『詳解UNIXプログラミング』を読んでいるので、自分の言葉で説明できるようになりたい
  • encodingって何?
    • 文字データの符号方式でUTF-8やShift-JISというおなじみのがあるよって答えたけど、分かってくれただろうか...
    • ファイルの件とともに簡潔にどこまで教えるかというのと自分の理解具合が試されました
  • Windowsでうまくいかない...
    • 普段Windowsを触らないので他のTAに助けを求めた
    • 事前にAWSのWorkSpacesを使ってWindows環境でPythonインストール等試してみてもよかったかもしれない
  • スクリプト実行したらエラーになる
    • エラーログを読んで適切な解決方法を教えることができた

詳解UNIXプログラミング 第3版

詳解UNIXプログラミング 第3版

懇親会

takaji-kanazawa.jp

@takanory さんたちとPythonコミュニティ、ライブラリ等の読み方問題、エディタ、いろいろ楽したい、クラフトビールについて話しました。酔ってたのであんまり覚えてないですが...w 肉も魚も美味しかった!

さいごに

TAになれる貴重な機会に参加できて良かったです。Python自体の学びもあったし、初心者はこういうところでハマってしまうのかという学びもありました。また、自分の各種概念に対する理解具合を測る機会になったなと思います。スタッフの皆さん、講師の @takanory さん、TAの皆さん様々なサポートありがとうございました。

これを機にPythonやプログラミングに興味をもってもらう人が増えたら嬉しいなあ。