MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

起動中の Docker コンテナに VSCode から接続して Python コードを「ローカル側から」デバッグする

下記事では、Docker コンテナ内から直接デバッグ対象のプログラムをデバッグ実行する方法を記載しました。

www.moriken254.com

ところが、ユースケースというのは増えるものです。コンテナで実行しているプログラムを、リモートからデバッグしたいという場面もあったりします。

その方法も忘れないうちに。

前提

すでに対象の Docker コンテナは起動済みであるとします。また、「ローカル側から」アタッチしてコードをデバッグすることを想定します。

リモートマシンとローカルマシンでの環境構築は、下記を参考に行いました。

qiita.com

リモート側で大事なこと

コード内に直接下記を挿入します。好きなところに入れられるので、割と便利です。

        import ptvsd
        print("waiting...")
        ptvsd.enable_attach()
        ptvsd.wait_for_attach()

launch.json にリモートアタッチ用の設定を追加

リモートアタッチ用のコンフィグレーションを追加します。

例によって、VSCode 左側のメニューから、下図の項目を選択します。

Select Debug Configuration が表示されたら、Remote Attach を選択します。

Remote Debugging (1/2) にて、リモートの IP アドレスを入力します。同一 PC なら、まずlocalhostで大丈夫です。

Remote Debugging (2/2) にて、ポート番号を入力します。空いていればなんでも良いので、デフォルトの 5678 で大丈夫です。

これで、デフォルトのコンフィグレーションが追加されます。

        {
            "name": "Python: Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678,
            }
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}", 
                    "remoteRoot": "."
                }
            ],
            "justMyCode": false,
        },

launch.json を調整

実際に動作させる環境に合わせて、微調整が必要です。

"localRoot" がターゲットのコードのパスと異なると、break point をセットしてもキャッチされません。

よくあるのが、VSCode はリポジトリのルートディレクトリで開いているけど、デバッグしたいコードは結構下層のプロジェクトフォルダの中だったりする、というケース。

このような場合、ターゲットのコードがエントリポイントなら、"localRoot" を ${workspaceFolder} に書き換えることで、コードがあるフォルダを動的に指定することができます。

基本的な変数は下記に記載されていました。

qiita.com

用意されている変数でうまくいかないときは、任意の絶対パスに書き換えることで対応も可能です。

デバッグ実行

まずは、リモートで対象コードを実行します。

waiting... と表示されたら、準備完了です。

ローカル側で対象コードの任意の行に break point をつけて、デバッグ実行してみましょう。catch に成功するはずです。

あとは、ライブラリ内のデバッグもしたいなら、"justMyCode" の設定を false にすることも忘れずに。

www.moriken254.com

ROS2 でライブラリ化された Python コードも VSCode でデバッグしたい

下記事にて、とりあえず Docker コンテナ内のコードにアクセスできるようになったのは良しとしましょう。

www.moriken254.com

ところが、デフォルトの設定では、ライブラリ化されたコードは追えません。 例えば、ROS2 で python コードを colcon build してパッケージ名で import すると、それはライブラリ化されてしまっているので、デフォルトでは入れません。

できるだけ追加の設定ファイルを変えたくなかったのですが、一か所だけ変更が必要みたいなので、おとなしく従うことにします。

デバッグと実行から launch.json を作成する

VSCode 左側のメニューから、下図の項目を選択します。

Select Debug Configuration が表示されたら、Python File を選択します。

生成される launch.json を確認します。 justMyCode のフィールドがデフォルトだと true なので、false にします。

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
        },

これで、縦横無尽にライブラリにステップインできます。

参考

qiita.com

起動中の Docker コンテナに VSCode から接続して Python コードを「リモート側で」デバッグする

コンテナへの接続

すでに対象の Docker コンテナは起動済みであるとします。また、「リモート側」で直接コードを実行することを想定します。

以下のページの、「起動しているコンテナに接続する」を参考に接続します。

kazu-oji.com

フォルダを開く

画面左上のエクスプローラマークをクリックすると、開きたいフォルダを選択できるので、そこから対象のフォルダを開きます。

拡張機能をインストール

画面左の拡張機能アイコンをクリックし、「Python」機能をインストールします。

codeaid.jp

必要な環境変数の設定

VSCode からターミナルを開いて、必要な環境変数等を source しておきます。

デバッグ実行

実行したいファイルを開いた状態で F5 を押すと、デバッグ実行が走ります。

ワーキングディレクトリが動作に影響するプログラムの場合、os.chdir() で適切なディレクトリを設定しておきます。

あとは任意の行にブレイクポイントなどをつけておけば、よしなにやってくれます。

Ubuntu 20.04 で PostgresSQL をインストール+他PCからつなぐまでのセットアップ

背景

PosrgresSQL 入れたあと、他のPCからアクセスするときのセットアップで何回も同じことを調べている気がしたので、メモ。

インストール

moriken@hoge:~$ sudo apt update
moriken@hoge:~$ sudo apt install postgresql postgresql-contrib

セットアップ

ログイン

とりあえずデフォルトユーザの postgres にパスワードを付与する。 まずはOS側で posgres ユーザとしてログイン。

moriken@hoge:~$ sudo -i -u postgres
postgres@hoge:~$

postgres のメタコマンド実行モード

postgres@hoge:~$ psql
posgres=#

確認コマンド

データベース確認。postgres がいる。

posgres=# \l

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres

ユーザ確認。postgres がいる。

posgres=# \du

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

パスワード付与

posgres=# ALTER ROLE postgres WITH PASSWORD 'ここにパスワードを入れる';
ALTER ROLE

これで、アドレス、ポート、ユーザ名、パスワードを指定することでアクセス可能となる。

「出世する人は人事評価を気にしない」という記事が本質的

何やら面白い記事を見つけた。8回に渡る、長めの連載記事。

書かれたのは2014年だが、書かれている内容は大方今日でも通用する。

備忘録がてら、ペタペタリンクを残しておこうと思う。

第1回:評価の低いあの人が、なぜ出世するのか?(上)

style.nikkei.com

第2回:評価の低いあの人が、なぜ出世するのか?(下)

style.nikkei.com

第3回:上位ポストになるほど、評価と昇進判断はリンクしない

style.nikkei.com

第4回:昇進判断基準とは具体的にどのようなものなのか

style.nikkei.com

第5回:昇進面接で面接官は何をチェックしているか

style.nikkei.com

第6回:第二のスタートは人的資本の棚卸しから

style.nikkei.com

第7回:飲みに行く相手にあなたの価値は表れる

style.nikkei.com

第8回:弱いつながりはビジネス上の「素敵な偶然」をもたらす

style.nikkei.com

こういう本質を見えるようになるのは、本当に素晴らしいことと思う。

如何に自分が何も見えずに生きてきたものかと、痛感させられる。

未熟な人間として、できることからやっていこうと思う。

【MBA】社会人 MBA のススメ ⑤Abitus UMass MBA 入学までの道のり

下記事の続きです。 www.moriken254.com

前回の記事で、Abitus UMass MBA のメリットとデメリットについて、私なりの見解を述べました。自分の進学に対して納得感を得た上で、学費という決して安くはない投資をしたかったからです。

納得した後は、脇目も振らずに前進するのみです。

本エントリでは、そんな入学手続きの過程を振り返ろうと思います。

情報収集

ホームページの確認

まずはとにかく、Abitus のホームページを熟読します。

f:id:MoriKen254:20200518013233p:plain


ざっくりと学習内容やスケジュール感、サポート内容、卒業生のレビューを確認することができます。

umass-mba.com

資料請求

次に、資料請求です。

f:id:MoriKen254:20200518013451p:plain


体裁の整ったパンフレットや、具体的なスケジュール等、ホームページだけでは確認できない情報を把握できます。

入学手続きの書類も同封されています。

www.abitus.co.jp

メール問合せ

分からないことや、気になることがあれば、Abitus に問い合わせることで、大抵のことは解決できます。

f:id:MoriKen254:20200518013556p:plain


私の体感として、レスポンスがいいです。回答内容も丁寧です。どんな些細な質問でも、しっかりと答えてくれます。

情報収集に関しては本当に負荷が小さく、(良くも悪くも)不安なんて吹っ飛びます笑。

www.abitus.co.jp

体験講義

定期的に行われている体験講義が、主に東京で行われています。

f:id:MoriKen254:20200518013739p:plain


たまたま東京に出張があるタイミングで、予約を入れることができました。

www.abitus.co.jp

今は新型コロナウィルスの影響で、オンラインでの体験講義もあるようです。

また、講義だけではなく、予約制でのオンライン打合せも可能のようです。

私個人の感想としては、この体験講義は MBA の講義内容に直結するというものではありません。どちらかと言うと、実際に MBA を取得した講師の思考特性や経験談、ディスカッションの体験、ならびにオンサイト学習会場の雰囲気の把握と言った観点で有益だったと考えています。

他には

ここまでの情報は、サービス提供側の情報なので、セールス側のポジショントークとなっている可能性を加味しておく必要があります。

ホームページに載せられた経験者談も、彼ら彼女らの本心が書かれていることをもちろん信じますが、やはりサービス提供当事者の管轄にあることを念頭においておくべきでしょう。

サービス提供側の影響を抜きにした情報収集しようと思えば、やはり実際に受講した学生の生の意見を聞きたいと思うのが、人間の性です。(私の場合は、新卒の就職で理不尽な配属ガチャと、その後の人事において非本質的な政治的要因に巻き込まれたというトラウマもあります笑)

そこで、インターネットで検索すると、Abitus Umass MBA で就学した方のブログが何件か見つかりました。

こういった情報を参考にしながら、自分の価値観と照らし合わせて、メリットとデメリットを確認しながら、就学環境の予測確度や納得感を向上させていきます。

入学手続き

前述した情報収集で、メリットとデメリットを腹落ちさせたら、具体的な手続きに入っていきます。

Abitus への入学申込み

まずは Abitus へ入学申込みを行います。下記サイトに従って、書類に必要事項を記入するだけです。

umass-mba.com

UMass への入学申込み

Abitus に申し込んだら、UMass 本体へも申込みます。

ただし、こちらはただ申込書に記入すれば良いという話ではありません。

Resume と Statement of Purpose の作成

UMass 本体への申込みに際し、Resume(履歴書)と Statement of Purpose(志望理由書)を記述します。もちろん英語です。

インターネットで検索すればいくらでもフォーマットは出てくるので、自分が気に入ったデザインのものを参考にして、自分の情報を入力します。私の場合、Resume は 2 ページ、Statement of Purpose は 1 ページで収まるように記述しました。長ければいいというものでもありませんので。

内容としては、

で述べたように、素直に自分が経営学を学びたいと思った理由を述べました。

英文校正サービスの活用

作成したドラフトは「Wordvice」という英文校正サービスに依頼して、最低限の英語品質を担保しました。

wordvice.jp

両文書を依頼して 7,000円程度でしたが、妥当だと思います。しかも、校正者が UMass の Ph.D. ホルダーとのことで、妙な親近感を覚えたのを覚えています(笑)。

余談ですが、私が国際学会論文やジャーナルを校正する場合には「Editage」というサービスを利用していますが、「Wordvice」のように大学院進学の書類等に特化しているかは不明でした。

その点、「Wordvice」では「米国大学院エッセーの添削」がサービス内容に明記されていたので、こちらを利用させていただきました。

UMass システムでの登録

基本的には Web システムを利用して登録を行いますが、手順は例によって Abitus がこれでもかってほど丁寧な手順書を用意してくれています。普通に読んで操作すれば、まず迷うことはありません。

ECC での学歴評価

Resume に記載した学歴が、国際的に通用することを主張するために、第三者機関に審査をしてもらう必要があります。

私の場合は、日本の大学で学士号、大学院で修士号を取得し、かつ博士課程を就学中だったので、まずはそれら全ての成績証明書と卒業・修了証明書を発行してもらいました。もちろん英文です。

次に、学歴の第三者機関である ECC (Educational Credential Evaluators) にその審査を依頼します。学歴の国際的妥当性や、GPA (Grade Points Average) という成績の定量値を、アメリカ基準の指標で算出してもらいます。

www.ece.org

そしてその結果を UMass に送るという、なんとも面倒なプロセスを経る必要があります笑。

ただ、その操作方法はこれまた Abitus が超絶親切な手順書が用意されているので、スムーズに登録を完了させることができました。

今回 ECE に提出して初めて分かったことが、私の修士過程での GPA が 4.0/4.0 であったこと。私の出身大学では GPA を算出していなかったので、あらそうだったんだと、今更ながらに思った次第。まぁ、昔のことだからどうでもいいんですが笑。

書類送付でのトラブル

実は私はこの成績評価結果を UMass に送付する過程で、ちょっとしたトラブルがありました。いつまで経っても UMass に学歴証明書が到着しない笑。そろそろ〆切だという時期になっても笑。私はかなり早い段階から書類は用意し終えていたので、どう考えても異常笑。

なので、まずは Abitus や UMass の窓口に状況を報告して不可抗力であることについて理解を得ました。

同時に、日本からは EMS で海外郵便送付した際の Tracking No. を基にアメリカの郵便局に問合わせて、何とか書類到着に至りました笑。

TOEIC の受験

とてもありがたいことに、入学の際に提出する英語スコアが TOEFL iBT ではなく、TOEIC です。しかも、TOEIC のスコアの下限も 700 点。このスコアなら、私ごときの能力でも間違いなく 1 発で突破できる確信がありました。

入学を心に決めた瞬間に、即 TOEIC を申し込みました。実際に就学が始まってから TOEIC 受験のためのリソースを割きたくなかったからです。

受験前には公式問題集を複数回実施し、時間配分や問題傾向を把握しました。 昔よりもかなり Reading の分量が増えていて、ギリギリ読み終えるといったペースとなりました。。。TOEIC にしても TOEFL にしても、英語試験難易度がインフレするの、辞めて欲しい笑。

とにもかくにも、入学前に必要とする英語要件はクリアできました。

GMAT は免除

以前も述べたように、GMAT Waiver Form のおかげで、特殊な英語学習に時間を割く必要がなくなりました。

主要な要件としては、就業年数が 8 年であるか、修士以上の学位を有していることが挙げられます。私は、修士の学位があったおかげで、GMAT は免除となりました。よかたー。

合格通知

無事に全ての審査や登録を終え、しばらく待っていたら合格通知がやってきました!

f:id:MoriKen254:20200518011623p:plain


英語スコアを提出していたり、GMAT Waiver Form を提出していたことから、卒業要件に対して特殊な前提はありませんでした。

更に、入学許可に関する連絡を頂戴した際に、以下の記述があったのが地味に嬉しかったです。

You are a valued member of our University community; your personal development and academic success are a major focus of our activities. We understand the important role technology plays in your academic and personal life.

これ、私の Resume や Statement of Purpose をまともに見てくれていなければ反応できない内容です。私が工学をファーストメジャーとして博士課程で国際学会や論文に投稿していることや、家庭の事情から Online での受講を希望する旨を、先方も理解してくれていたんだなと。

f:id:MoriKen254:20200518013955p:plain


まぁそこを理解した上で合格を出すことが先方の義務ではありましょうが、個人宛のメールでそこまで触れてくれることに、スタッフの人間味を感じました。地方大学ならではの温かみなのでしょうか笑。

小さいことかもしれませんが、Abitus という代理店を介すことで個が蔑ろにされることがなかったことが、ちょっとうれしかったな、と思いました ^^

おわりに

あまり詳細に記述するには至りませんでしたが、入学手続きに関しておおまかな流れを記述しました。

分からないことがあれば Abitus に投げれば大抵のことは解決しましたし、不可抗力で郵便遅延があったにせよ、問い合わせれば特に問題なくことを進めることができました。入学手続きに関する心配点は、マジで郵便遅延だけでした笑。

こんなに快適に入学してしまっても良いのだろうかという罪悪感を感じることも多々ありましたが、そこは Abitus にもコストをかけているのだから、トラブルシューティングのアウトソースをしているのだと納得しています笑。しかも、それをコミコミでも他の米国 MBA より安価という現象笑。

ま、細かいことは抜きにして、これで経営・会計未経験スーパード素人の社会人 MBA ライフが始まるわけです。本当の勝負はこれからであります!(まぁ、入学手続きでは勝負という勝負を回避してきているのですが笑 ^^;)

一体どのような生活を送ることになるのか!?不安もありますが、期待のほうが大きいかったし、今でもそのワクワク感は変わりません!

さ、そんなバタバタ人間 MoriKen による無謀 MBA ライフの、はじまりはじまりー!^^