シンプルなように見えて、中身は複雑 私たちがブラックボックス的に使っているものって、実は「シンプルそうに見えて、めちゃくちゃ複雑」なものが多い。 例えば、以下のYouTubeで作っている投稿編集画面。 https://www.youtube.com/watch?v=n_C6BwFJgcg&t=2041s&pp=0gcJCcEJAYcqIYzv ユーザーからすると直感的で簡単そうに見える。 でも、Reactなどのいろんな技術が組み合わさって動いている。 今、自分が取り組んでいる搬送システムもそう。 見た目は単純で、「倉庫にある商品を、A地点からB地点に運ぶだけの仕組み」に見える。でも、Pythonで書かれたソースコードを一行一行見ていくと、関数、クラス、エラー処理、環境変数… ソフトウェア設計 プログラミング学習
実務で学んだ単体テスト仕様書作成のコツ 現在、単体テストの仕様書作成を進めている。 正直、納期を少し過ぎてしまった。 これまでにないようなボリュームのテーマだったからという言い訳はできる。 しかし、他のメンバーはボリュームが多い中でも納期内に仕上げているのを確認している。 メンバーというかリーダーの人だ。 だから、完全に自分の実力不足である。 本日、チームメンバーに単体テスト仕様書作成のコツを聞いた。 その内容を記事にしていきたい。 関数は最小限の機能をテストする 関数の単体テストは、メイン処理と分けて行う。 当たり前のことかもしれないがそれが意識できていなかった。 ボリュームが多いと頭の中がとっ散らかってしまう。 関数は、引数(入力)があって出力(返り値)があるというのが基本。 途中の処理… ソフトウェアテスト プログラミング学習
他のファイルで定義した定数を使用する 他のファイルで定義した定数を使用するサンプルを作成して、この記事で解説していこう。 サンプルフォルダの構成 main.py # main.py from config.settings import DB_HOST, DB_PORT, DEBUG_MODE def main(): print(f"データベース接続先: {DB_HOST}:{DB_PORT}") if DEBUG_MODE: print("デバッグモードで起動しています。") if __name__ == "__main__": main() config/settings.py # config/settings.py DB_HOST = "localhost" DB_PORT = 5… Python プログラミング学習
progate proffetionalのSQL > 機能追加の結果を測ろう > 道場 > 2.平均お気に入り登録数を取得しよう 機能追加の結果を測ろう | プログラミングの入門なら基礎から学べるProgate[プロゲート]の道場編をやっていく。 道場編 全部で4つ タスク分割 今後の仕事でも困難を分割していきたい。 以下のように 「平均お気に入り数を登録しよう」をさらに分割する必要があれば、行なっていく。 平均 平均について確認しておこう。 1, 3, 5の平均は、(1+3+5) / 3 = 3。 合計の値を総数で割ると、平均を算出できる。 SQLのAVG関数 SELECT AVG(カラム名) FROM テーブル名; 例えば、以下のようなemployeeテーブルがあるとしよう。 employee_idage120230340 SELECT AVG(age) FROM emplo… SQL プログラミング学習
現在の日時から20日前の日時を生成する PentahoETLのPython化において、取得元のフォルダから最終更新日時が20日前のファイルのみを抽出する必要があった。 理由は、3万くらいのファイルがあり、すべて取得してしまうと処理が重くなってしまうから。 その20日という期間を日時型で生成して、ファイル取得のインスタンス生成時にコンストラクタ引数として渡す必要があった。 「20日という期間を日時型で生成」という部分について、この記事では解説していく。 作成したPythonコード from datetime import datetime, timedelta # 現在の日時を取得 now = datetime.now() # 20日前の日時を計算 twenty_days_ago = now… Python プログラミング学習
テキストファイルから特定の文字列が入った行を抽出する 仕事でいくつかテーマがあって、そのPentahoETL処理のログから、目的のテーマのログを抽出する必要があった。 Pythonで実現予定なので、記事を書いていく。 テキストファイルの用意 ChatGPTにお願いして、1000行のなかにJapanが含まれるテキストファイルを生成してもらった。 テキストはこちら。japanが10個ランダムと指示したはずだが、64個入っていた。 row_filter/random_countries.txt at master · ki-hi-ro/row_filter ソースコードの作成 こちらもGPTを活用した。生成AIはどんどん活用していきたい。 ホリエモンがYouTubeの広告で「AIは大脳の機能拡張、アシストしてく… Python プログラミング学習
ウェアラブルシステムのデータをテーブルに格納するデータフローの構築 ウェアラブルシステムから取得したデータを別のテーブルに格納するデータフローの構築について解説する。これは4つあるケトルファイルのうちの1つで行われており、既存のPentaho ETL処理を新しい社内共通テンプレートに置き換える作業の一環である。 データ取得と最終更新日時の条件設定 処理の流れとしては、まず既存のテーブルから最終更新日時を取得し、それを基にウェアラブルシステムからデータを取得する。この最終更新日時には3つの条件があり、以下の優先順位で設定されている。 最優先は、ユーザーが手動で設定したパラメーター。 パラメーターが未設定の場合、次に参照するのはパブリックデータベースの最終更新日時。 どちらもなければ、初期値を設定して使用する。 日時のフォ… データ連携 プログラミング学習
プログラミングの基礎を見直す重要性 プログラミング中にエラーが発生すると、その原因を特定するのに時間がかかることがあります。今回は、私が直面したエラーと、その対応を通じて感じた「基礎の重要性」について振り返りたいと思います。 エラー発生時の状況と原因特定の難しさ 今回のエラーは、条件分岐処理の部分で発生しました。新規ファイルの判定とファイル更新日時の比較を条件にしていましたが、何らかのミスが原因でエラーが発生してしまいました。エラーの原因を特定するには、if文の内容や変数の中身を確認する必要がありましたが、思った以上に時間がかかり、基礎的な知識の再確認の重要性を感じました。 基礎知識を定期的に復習する大切さ プログラミングの基礎知識は、時間が経つにつれて忘れてしまいがちです。特に、基本的… トラブルシューティング プログラミング学習
インスタンス変数の取説 インスタンス変数はどうやって定義して、どうやって使うのか? インスタンス変数の定義方法 コントローラに定義する。 以下の例では、Blogからすべてのデータを取得して、@blogsというインスタンス変数に代入している。 Railsでデータを取得するメソッドまとめ #Ruby - Qiita モデルクラス Blogは、blogsテーブルのモデルクラスと考えられる。 Active Record の基礎 - Railsガイド インスタンス変数の使用方法 ビューファイル(app/views/posts/index.html.erbなど)で使用する。複数の場合は、以下のようにeach文を使用して、一つ一つ取り出して処理を行う。 Railsでデータを取得するメソッド… Ruby プログラミング学習
posts/indexにアクセスした時の挙動 http://localhost:3000/posts/index にアクセスすると、以下の表示になる。 ルーティング config/routes.rb には、以下の記述がある。 これは、/posts/indexにアクセスした時に、postsコントローラのindexアクションが動作しますよという意味。 postsコントローラのindexアクション 以下のような記述である。 Rails プログラミング学習