やっていたKaggleのコンペが終わったので少し振り返る

私が参加していたコンペ(こちら)が終わったので少し振り返ってみようと思います。 一応私の経歴を軽く話すとデータサイエンティスト的な仕事をしつつも予測や分類自体はしたことなく、データセットの作り方や加工の作業がメインでpythonに関してはある程度分かっているという状況です。 そのうえでG検定やE資格を取得済みなので、機械学習や深層学習の知識はある程度ある形でKaggleを始めて挑んでみました。 定石としてタイタニックを触るべきですが、タイタニックのランキングを見てもつまらないので今開催されているSwagやKnowledgeと呼ばれるタイプのコンペに参加してみることをおススメします。 こちらの本でも言及されているのですがどうもタイタニックのデータは初心者向けではないみたいです。初心者を抜けた人向けなイメージです。 それはさておき今回のコンペでは一旦自身で加工してみてモデルを作って提出をするという流れをやってみました。 そこまでは前回のブログでも書いてました。その後ですが他の人のコードをを見て、Chat-GPTに解説してもらって分からない点を質問するということをひたすら繰り返してました。 いくつかピックアップすると ワンホットエンコーディングした時、出現回数が最も少ないカラムを削除していた。なぜ削除するのか? テストデータセットの全行数に対してユニークな値の割合が5%未満のカラムを取得するのはなぜですか?どのような意味がありますか? 特徴量間のピアソン相関を計算するのはなぜか? Optunaの研究(study)を最適化とはどういう意味か? という感じでたくさんの質問を投げてみました。その後帰ってきた返答に関してわからなかった部分もさらに深堀して聞くということを繰り返していました。 そこで理解した点としては ユニーク値が少ない値に関してはワンホットエンコーディングを行うのが有効←その前にやることがある 特徴量を減らすには全体行の5%未満の値でもいいが、クロスバリデーションで特徴量の有無を見てモデルの評価を行ったほうがよい ヒートマップは線形関係に関しては有効だが非線形関係には向いてない ワンホットエンコーディングした際、訓練データまたはテストデータ片方にしかないデータが存在することがあるので、1つにまとめるアプローチがある Optunaを使ってハイパーパラメータの最適化を行える 私の中ではヒートマップで各特徴量の相関を見たほうがいいと思っていたのですが、線形関係であれば見るべきであって、非線形関係であれば意味は少ないというのは新しい発見でした。よく考えればわかることではありますが(笑) それからクロスバリデーションで特徴量の有無によってモデルの評価と比較をすることができることは知りませんでした。クロスバリデーションはただデータセットを分割して検証をするだけで、特徴量の有無まで比較できるとは思ってませんでした。 ここで私のコンペは終了しました。上記の気づきをコードに落とし込むことができませんでした。上の解説や質問と返答の理解に時間を費やしてました。まあ土日はゲームをしてたので結局やらずに終わっただけですが… コンペが終わった後のスコアとディスカッションも見てたのですが、public1位の人がprivateでは200位台になってたりしてそんなこともあるのかと思いながら見てました。 ちなみに私は8個ほど順位を落としてました。そこまで熱心にデータの加工やパラメータの調整をしてないので気にしてないですが さてこのコンペが終わったのでまた次のコンペにも挑戦しようかと思います。まだSwagかKnowledgeに挑戦してみます。また現場で画像系のAIを作るみたいなので画像コンペにも参加してみようと思います。果たして役に立つのか不明ですが また今回の解説だったり質問の返答などは正しいとは限らないのでもう少し精査しようと思います。少しづつでも確実に自身の知恵としていきたいですね。ではでは

2024年4月1日

最近の生成AIを3つほど試してみたよ!

OpenAIから"Sora"のお披露目があり、夏に"GPT-5"がでるという発表がありましたね。 最近の生成AIはすごいなあと思いながら過ごしてますが、たまたま見つけた動画生成AI2つと音楽生成AIを見つけたので試してみました。全てGoogleのアカウントアあれば無料で試せますので興味があれば試してみてください! まずはPixVerseですね。テキストから動画を生成できます。時間は4秒だけですが一応できます。少し触ってみましたが思ったような動画を作るのは大変そうです。 このときは"Giant bee stings bear"というプロンプトを入れてみました。想定とは違いますが欲しい物体は出てきましたね。 次の動画生成AIはHaiperです。こちらでも同様のプロンプトをいれてみました。熊が出てこず蜂が前面に出てきて、人によっては嫌悪感を抱くかと思いますのでリンクだけ貼っておきます。興味があれば見てください。こちら 蜂が蜂を食べてるみたいな動画でそれも不気味なんですよね。こちらは2秒だけですがPixVerseよりも精度や解像度はよさそうです。いいプロンプトを見つけてみたいものです。 最後は音楽生成AIのSunoです。入れてみたプロンプトは"A giant bee stings a bear in anger and rejoices when it is repelled.“になります。感情を入れてみました。 できた音楽は2つになります。これとこれです。生成されたサムネはよくわかりませんが喜びを表した音楽ができました。また、歌詞も出ており英語で歌もついています。2つの歌詞は同じですが音楽が異なるのですごいなと感じましたね。ちなみに歌詞は下記 [Verse] In the forest, giant bee is on the prowl (oh yeah) Buzzin' 'round, lookin' for some mischief now (oh-oh) Spots a bear, thinks it's time to have some fun (oh yeah) Stings it hard, the battle has just begun (woo) [Verse 2] But the bear retaliates, swipes with all its might (oh no) Giant bee is repelled, takes flight into the night (oh-oh) Feelin' the sting, buzzing with adrenaline (oh yeah) But still it's jumpin' back, ready to sting again (woo) [Chorus] Buzzin' bee, buzzin' bee, flying wild and free (oh yeah) Stingin' bear, stingin' bear, a rivalry we see (oh-oh) Buzzin' bee, buzzin' bee, never gonna run (woo) Keep on buzzin', keep on stinging for fun (oh yeah) こんな感じで色んな生成AIを触ってみました。他にも日本から出た画像生成AIのAkumaでしたり、Sakana AIという低コストで精度が高いモデルが作られたりしています。 ...

2024年3月28日

生成AIのさらなる進化と今後の仕事について

最近Inputが出来てないな~と思ったので色々調べてみたところこの資料を見つけました。 ざっくり内容を話すと生成AIが労働へ及ぼす影響や知識の獲得、またその後の働き方について書かれています。せっかくなのでChat-GPTとClaudeにも要約してもらいました。 こちらではもう少し細かく要約されたものがありますので興味があれば見てください。 現在の生成AIでもいろんな職業に影響を与えていますが、この資料では将来的に膨大な知識が求められる職業にも影響があるという話です。AIを含むエンジニア系全般はもちろん科学者や技術者も対象です。 今のプログラマーだったりデータサイエンティストも頼ったほうがよいものができやすいと思います。私もちょくちょくコードの書き方を聞いたりしてます。 そんな生成AIが所謂 “業務知識” を持つようになったら労働を代替してくれるという話ですね。 とはいえ全てを任せるわけじゃなく最後の確認は必要だと思いますが。 ただ、最後の確認であればPLレベルの人がいれば十分で、ただのプログラマーやデータサイエンティストは不要になるのは間違いなさそうです。 他に必要になるのは人間同士の調整をする役目の人ですかね?営業とかでしょうか この話を聞くと今のままではいずれ職がなくなるんだなと考えられますね。数年位であれば大丈夫でしょうが、10年20年先もまだ働く気がするのでそうなると先を考えて行動しないといけないですね。 ブルーカラーの職業も最近はロボットが出てきているので代替されそうな気もしますが、人間の体のつくりは割と凄くて8時間動き続けても故障をしないものです。 ただ、ロボットなどの機械は部品が摩擦などで擦れてくるので長期的には向かないらしいです。そう考えたらまだ大丈夫な気はしますね。 一応金属も傷つけられたとしても時間をかけて回復するらしいのですが、動植物ほど早くなさそうです。そう考えるとブルーカラーがいいですかね?農業であれば食べ物も困らなさそうです。酪農もよさそうですがコストが高そうです。不動産とかもいいんですかね?気にはなってるんですが… そんな感じで将来のことを考えさせられる資料でした。私は将来的に人間は全員ニートになってほしいと思ってるんですが生きてるうちに来ないですかね?ではでは

2024年3月26日

Kaggleのスコアを少しずつ上げていってる話

前回から4日ほど空いてしまったのですが、Kaggleでどうやってスコアを上げるか四苦八苦してました。 そもそも前のスコアが低すぎたので少し改善するだけで上がるかなと思ってたのですが、なぜか上がらず少し結果を見てたら自分のコードミスだったというオチです(笑) 前回の予測コードがこちら で修正したコードがこちら for文を使って目的変数が変わるたびモデルの学習を行った後、予測を行っています。ちなみに私は訓練データを8:2に分割して実行しています。 前の時は全ての目的変数の学習が終わったとモデル予測を行っていました。本来であれば目的変数1つに対して学習して予測を行うのですが、全て学習した後予測してたので最後の目的変数の学習をしたモデルになってたので、想定していた結果にはならなかったみたいです。 というわけで修正した後のスコアがこちら すごい!だいぶ上がった!というかこれが普通のスコアっぽい(笑) よくなったので今度はもう少しデータと向き合いつつ、より良い加工方法とモデルの作り方を見てみようと思います。またDiscussionを見つつ、他の人のNotebookを見てみました。他人のコードをChat-GPTに解説してもらいつつ、不明な点を聞いてみようと思います。 余談ですが何もしないときとワンホットエンコーディングを行った時の結果を見てみます。AUCが上がったものもあれば下がったものもありますね。大幅に改善されたわけではないので、元のデータに対して加工したほうがよさそうです。外れ値とか入ってるかもしれないですね。 というわけでKaggleいろいろ試してるという話でした。ではでは

2024年3月22日

Kaggleをとりあえず触ってみて少しづつ予測や分類を理解していくぞ!

最初の段階でタイタニックを触ることが普通かもしれませんが、この書籍でも触れてますがタイタニックは軽く触るくらいでいいと思います。 順位もあまり動かないですし、モチベも続かないと思うので他のコンペに早く参加したほうが楽しい気がします。 私は今開催されているこちらのコンペに参加しています。こちらのコンペは基となったデータから似たような特徴量を作成したものになります。中身はテーブルデータなうえに “id” と数値データのみなのでとっつきやすいと思います。 とりあえず中を見てみます。 <class 'pandas.core.frame.DataFrame'> RangeIndex: 19219 entries, 0 to 19218 Data columns (total 35 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 19219 non-null int64 1 X_Minimum 19219 non-null int64 2 X_Maximum 19219 non-null int64 3 Y_Minimum 19219 non-null int64 4 Y_Maximum 19219 non-null int64 5 Pixels_Areas 19219 non-null int64 6 X_Perimeter 19219 non-null int64 7 Y_Perimeter 19219 non-null int64 8 Sum_of_Luminosity 19219 non-null int64 9 Minimum_of_Luminosity 19219 non-null int64 10 Maximum_of_Luminosity 19219 non-null int64 11 Length_of_Conveyer 19219 non-null int64 12 TypeOfSteel_A300 19219 non-null int64 13 TypeOfSteel_A400 19219 non-null int64 14 Steel_Plate_Thickness 19219 non-null int64 15 Edges_Index 19219 non-null float64 16 Empty_Index 19219 non-null float64 17 Square_Index 19219 non-null float64 18 Outside_X_Index 19219 non-null float64 19 Edges_X_Index 19219 non-null float64 20 Edges_Y_Index 19219 non-null float64 21 Outside_Global_Index 19219 non-null float64 22 LogOfAreas 19219 non-null float64 23 Log_X_Index 19219 non-null float64 24 Log_Y_Index 19219 non-null float64 25 Orientation_Index 19219 non-null float64 26 Luminosity_Index 19219 non-null float64 27 SigmoidOfAreas 19219 non-null float64 28 Pastry 19219 non-null int64 29 Z_Scratch 19219 non-null int64 30 K_Scatch 19219 non-null int64 31 Stains 19219 non-null int64 32 Dirtiness 19219 non-null int64 33 Bumps 19219 non-null int64 34 Other_Faults 19219 non-null int64 dtypes: float64(13), int64(22) memory usage: 5.1 MB 中身は数値データで最後の7カラムが予測対象の列になります。それから欠損値はないみたいなので、欠損値については考えなくてよさそうです。 ...

2024年3月18日

仕事でミスが発生した場合、何を考えるか?どう対応するか?

人間が管理・作業をする以上ミスをするものだと思います。その度に反省して再発防止策を考えてシステム的にミスが起きないようにします。それを怠ったら同じミスが再発するわけですが… ちなみに私はよくミスを発生する人間だと自負しています。そんなこと自負するなと思いますが、学生のころからよくやっていたので折り紙つきです。 そう考えると短所は注意散漫になるのでしょうか?ケアレスミスや誤字脱字、表の線引きがずれてる等細かいところはよくあります。(毎日ではないですがレビューの時は6,7割) エンジニアであれば過去のプログラムを参考に現行のプログラムを作ったり修正したりするでしょう。その過去のプログラムの一部が間違っていてかつ自身が作ったということが多いです。頻度は1年に1回ぐらいだと思いますが…多分 ケアレスミスや誤字脱字はまだしも、プログラムの仕様が異なるは大事です。想定されていたものと異なるものができているわけですから。データを作る人だったら一部のデータが想定されたデータと異なるというとこでしょうか。 お客さん側から指摘されれば謝罪→修正→リリース→再発防止策という流れで進むでしょうが、お客さん側も気づかず、自身が気づいた場合はどうでしょうか?さらにそれが本人が作った物であればどうするか?が本題です。 他人が作ったものの場合は本人に直接聞くのが一般的だと思います。その後、本人からチームの人に共有してもらうのが波風立たないですね。勝手に"こんなミスがありました"という話をするとその人のメンタルに大ダメージを負っちゃいますので… それでは自身が作ったものの場合はどうでしょうか?上司やチームの人の相談しますか?見なかったふりをしますか?誰にも言わず修正しますか?私は葛藤したのちに相談するタイプです。隠蔽の考えがよぎるのですが、先々を考えるとまずいので相談します。 相談については メリット:将来他の人に迷惑が掛からない デメリット:信用が下がる、怒られる、状況によっては自社に損害が発生する まあ自身へのメリット少ないですが将来膨らむ迷惑や負債は潰せますね。デメリットの2つはまだしも損害発生は大事ですね。どうしようもないものはどうしようもないですが 見なかったふりについては メリット:近々自身が辞めるもしくは抜ける予定ならば保身になる デメリット:将来他の人に迷惑をかける、ばれないかなどでメンタルがやられる 所謂 “爆弾” や “負債” を残す形になります。保身のために言わない人も多そうですが、サイコパスでなければずっと頭をよぎりますし、他の人に押し付けるのはどうかと思います。周りがそんな人たちばかりなら速攻辞める職場ですね。 次にしれっと修正するついては メリット:ばれなければ誰にも迷惑をかけない デメリット:記録に残さなければ同じミスを再発する可能性がある そもそもしれっと直せるような状況はあまりない気がしますが迷惑を一番かけない形になる気がします。ただ、同じミスは再発する可能性が高いですね。そこで終われば大体忘れるものですから。 いずれにせよ障害の対応になるので自身にとっていいことは起こらないのですが、他の人にどれだけ迷惑をかけるかが変わるので正直に話しましょう。 この話をしたのは直近で自身のミスに気付いたからですね。迷ったんですがしっかり話して、リカバリーと再リリースを早く実施して対応したので将来的に良かったと思います。自身の評価は下がった気がしますけどね(笑) まあ反省はしても落ち込まずどうしようもなくなったら “辞めてやるし、別のいい環境で頑張るわ!” くらいの心持をしましょう!誰にでも何とでもできますので、多分。ではでは

2024年3月15日

E資格が終わったので実践としてKaggleにも挑戦してみよう!

G検定に続きE資格も無事取得できたので今度は統計検定準1級やDS検定になるかと思いますが、一旦受験関係はやめてKaggleに挑戦しようと思います。 英語という観点では少し不利ですが、名前はよく知られてますし英語の練習にもなるかもしれないのでこちらを選びました。日本語が良ければSIGNATEというコンペがあります。 まずKaggleとはなんぞやということですが、競技プログラミングのデータサイエンティスト版ですね。要件を確認して、入力データを見て、予測や分類を行い、csvファイルを提出してスコアを競うという流れですね。 Kaggleの始め方は該当のページに飛んでアカウントを作成してください。メールアドレスまたはGoogleアカウントですぐに始められます。 そもそもKaggle以前にプログラム自体に触ったことがない人もいるかと思います。そんな人はpythonの勉強から始めましょう!こちらからKaggle内で勉強することもできます。pythonやpandasはもちろん、データの可視化、機械学習や深層学習、SQLも勉強できます。 プログラムが書けるようになったらいよいよ挑戦することになると思いますが、データ分析で一番重要なのはデータへの理解と加工だと考えています。 どんなデータが使われているか?、どの変数がどんな型になっているか?、外れ値や欠損値が含まれているか?、各変数の相関関係はどうか?など確認すべき点は多いです。また、そのデータに対する加工が適切かどうかも考えないといけません。欠損値は削除すべきか埋めるべきか?外れ値としてみるべきか? 8割くらいがデータへの理解と加工が重要だと思うのでこちらをさらっと流し見するといいかもです。ただ、プログラムはほぼ書いておらず図の見方やデータの確認方法がメインなので流し見でいいかと思います。 Kindle Unlimitedであればただで見れるので入っておくことをおススメします。サブスクで月額300円くらいですし、他のためになる本やくだらない本も読めますので本を読むいいきっかけになると思います。ただで見れるので細かく見ずわかってる場所は飛ばして、さらっと見ていきましょう。 次はこちらですね。たくさんの人がおすすめしてますが、データの加工方法からモデルの作成と評価、細かいポイントまで記載しています。私もまだ読み始めですが、目次を見た限りだとこれを見ればデータ分析が十分できると思います。画像や自然言語処理、GANなどは触れてないですが… 本を読みながらKaggleを触っていくのがいいと思います。よくタイタニックがおすすめされていますが、ランキングはほぼ変わらない上にやる気に繋がりにくいので今開催されているコンペに出るといい気がします。 賞金のほうでもいいですし、SwagやKnowledgeでもいいと思います。最初は上を目指さず、自身でいろいろ試して解答を提出して、他の人のコードを覗いたりDiscussionに参加したりするといいと思います。思わぬアイデアが埋まってたりしますし、知らないですが… とまあこんな感じで参加しようと思います。まずはテーブルデータのコンペから参加してみて、ゆくゆくは画像系とかやってみたいですね。ではでは

2024年3月13日

E資格(エンジニア資格)2024#1に無事合格したのでそれまでの話をつらつらと

E資格について昔話したと思いますが(こちら)、結果はどうだったか、どんな勉強をしたのかを話していこうかと思います。 まずこちらでJDLAが2024年第一回E資格の結果発表が出ています。合格率や平均得点率、年代・業種・職種・役職別の合格者数が出てます。 私の結果がこんな感じです。 応用数学と開発環境は6割切ってますが、機械学習と深層学習は7割近くになってますね。ちなみに今のタイミングでX(旧: Twitter)で"E資格"を調べると他の人の得点率を見れます。落ちた人の結果を見ると機械学習と深層学習の得点率が低かったみたいです。 問題数から見ると応用数学と開発環境は出題数が少ないので最悪ほぼ取れなくても問題なさそうです。機械学習と深層学習が問題数多いのでこちらを抑えればいけそうな気はしてます。 結果はこんな感じでしたが勉強方法は割とシンプルです。 前にもお話ししましたが私はStudy-AIを使って認定証を取りました。Study-AIでは模擬試験とその解説、過去問(32問分)がありますのでそこを徹底的に理解し、満点取れるまでやりました。 他の方法だと黒本だったり参考書をチェックしたりですかね?それからデータ加工のプログラムは仕事で使ってるので “np.array” だったり、論文で書かれてることはこんな書き方できそうだなというのはなんとなくわかります。実際にプログラムを動かすのは大事ですね。 何度も話してますが資格はあくまで資格なので実際に実装できたり、知識を活用していくことが大切だと思います。資格を取って終わり、じゃなくどう活用していくか?なのでそろそろKaggleに挑戦してみようかと思います。ではでは。

2024年3月10日

pythonの仮想環境構築をいくつかやったので使ってみた感想を書く

前回の続きになります。 前回は仮想環境が必要なの?というテーマで書いてみましたが、とはいえ使えるに越したことはないので実際に試してみて使った感想を残そうと思います。 今回仮想環境を構築するにあたって試してみたのは以下 pip venv pyenv(環境的に使えなかった) pipenv poetry docker(環境的に使えなかった) Rye(環境的に使えなかった) 一応ざっくりと説明すると ライブラリのインストール:pip、pipenv、poetry 仮想環境の構築:venv、pipenv、poetry、docker pythonのバージョン管理:pyenv、docker 一般的に組み合わせとしては pip + venv + pyenv pipenv + pyenv poetry + pyenv docker + pipenv あたりだと思います。私も依存関係とかは詳しくないのでそうなんだという認識ですが… まずは “pip” 、pythonユーザーであれば皆さん使用してるので説明は省きますが、標準ライブラリで馴染みがあるものですね。 次は “venv” 、昔はvertialenvが使われていたみたいですがそれが標準ライブラリになったものです。vertialenvとは別物ですが使い方は同じですね。 仮想環境の作成や有効化ができ、標準ライブラリなので様々な教材でも使用されると思います。有効化に面倒な設定があったり、自動化やライブラリ一覧の出力にも手間がかかるので少し使いにくいですが、覚えておいた方がいいですね。vscode使うならインタープリターの選択で有効化できますが… 次は “pyenv” です。私の環境ではシステム環境変数をいじれないので使えませんでした。 pythonのバージョンがインストールできず、localやglobalの設定もできない状況でした。使えなくて残念ですが、vscodeのインタープリターで選択すれば問題ないのでいいかと あるいはユーザー環境変数で任意のpythonバージョンのPATHを上に移動させるとかですかね。 次は “pipenv"です。こちらはライブラリのインストールと環境変数の作成が一体化した便利なライブラリになっています。 個人的には一番使いやすく感じました。仮想環境構築のしやすさ、ライブラリ一覧の自動化は便利だなと感じました。制限がなければ “pipenv + pythonのバージョン管理” が一番楽な気はします。 ただ、インストールの遅さや抱えてる問題もあるみたいなのでpipenvさえあればいいとは思いませんが、優先度は高いというイメージですね。 次は “poetry” です。使う用途としては"pipenv"と同じですが、異なる点で言うとPyPIにビルド・公開ができるという点になります。 PyPIにビルド・公開することはあまりないので、そうなるとpipenvとの使いやすさを比べてどうか?ということになりますが、使いやすさはpipenvに軍配が上がります。 まず、poetryはpython3.9以上でしか使用できません。今の現場はpython3.7(いつか3.11になる予定)なので使えなかったりします。また、ライブラリのバージョンでも同様に使えないものがあります。 他にも仮想環境の有効化がvenvと同様手間がかかったり、vscodeのインタープリター選択画面に出なかったのでパスを通す設定をしないといけないなどがあったりして使いにくさを感じました。私の環境構築方法に問題があるかもしれませんが… おまけとしてRyeはチームよりも個人開発向けなのでやろうとしたのですが、客先PCでは使わないほうがよさそうです。個人で触ってみようとは思います。 それからDockerです。Desktop版をインストールしようとしましたがダメでした。とはいえAWSの実行ではdockerコンテナを利用しているので、ローカルでは使えませんが開発や本番環境では使われているのでdockerfileの中身やdocker-composeをチェックしてみます。ローカルだとどんな使いやすさなんですかね? 前にも話したんですが、pythonやライブラリのバージョンが固定されているような現場では正直不要だとは思いますが、知っておいて損はないかと思いますし、知識はどこかで役立つと思います。 手軽で使いやすいという点では “pipenv” > “poetry” >= “pip + venv"に"pyenv"を足したものかと思いますが、覚え順としては"pip + venv” > “pipenv” > “poetry” がいいと思います。ついでにDockerまで使えればほぼ問題ないという印象です。 ...

2024年3月8日

常駐先のPCでPythonの仮想環境構築って必要なの?

たまには自身の仕事の環境のことでも話をしてみるのもいいかと思って記事にしました。ただ自身の疑問や考えを整理するために書いてるので、大したことは書かないかと思います。人間っぽくていいなと思います。 大前提としてpythonの仮想環境構築について知っておくに越したことはないと思います。客先に派遣される業態ではいつ使うかわかりませんし、自社開発でもライブラリの更新をした方がセキュリティ面でも安心できると思うので、安定板と更新版で使い分けができそうです。 さて、最近新PCに移行することになりました。前のPCでは仮想環境を使ってこなかったので、これを機に仮想環境について調べこの記事を書くことにしました。仮想環境で何を使ったかはあまり触れないと思います。 私の現場では客先常駐ではないですが、お客様先から配布されたPCを使って開発を行います。スペックは特段低いわけではないので、重たい処理や大量のデータを扱わなければ問題ない程度です。ちなみにWindowsです。 ただお客様先から配布されたPCなのでセキュリティは固めです。実はpyenvを使おうとしたのですがインストールがうまくいかずpythonバージョンの使い分けができませんでした。 他にもDocker Desktopをインストールしようとしましたがこちらも無理でした。申請すれば通るかもしれないですが、他にも方法はありますので一旦諦めました。ちなみにWinMerge(ファイル同士の比較)もインストールできませんでした。前のPCは標準搭載だったのですが… ここから本題なのですが、仮想環境を作る必要があるのか?ライブラリの管理をする必要があるのか?という問題です。もちろん客先によっては自由度が高いところもあるので一概には不要だとは思いません。 私の話になりますが、本番環境ではAWSを使っています。開発環境もありますがスコアリングのみであればローカルでvscodeを使用しています。 AWSではDockerfileでpythonとライブラリのバージョンを指定して実行しているのですが、そのバージョンが全てのプロジェクトで統一されています。pythonのバージョンであれば3.7.12、pandasであれば1.12.0という具合です。 こうなるとローカルでも使用するpythonやライブラリのバージョンは固定されるので、仮想環境の構築は不要でとりあえずpipでインストールしてしまえばいい気もします。requirements.txtに吐き出していまえば他の人にも共有できて同じ環境が作れますし… 整理してみましたがやはり不要な気がします。とは言え仮想環境構築で使ったvenvとpyenv(ほぼインストールのみですが…)の使い方もわかりましたし、他のライブラリであるpipenvやPoetryも触ってみようと思います。 次に話すとしたら実際に仮想環境構築したことかAWSについてですかね?ではでは

2024年3月6日