生産性爆上がり!?エンジニアのおやつ大解剖!!!
エンジニアの集中力アップに役立つおやつ選びのポイントを紹介。ブドウ糖補給にはラムネやチョコレート、腹持ちにはナッツ類やドライフルーツ、リフレッシュにはタブレットやグミがおすすめ。作業効率アップには、個包装のお菓子や棒状のスナック菓子が便利。さらに、ちくわも高タンパク質で人気のおやつらしい。自分に合ったおやつを見つけて、最高の開発環境を構築しよう!
Elixirでリストとタプルを型付けする by José Valim
Elixirの型システムは進化しており、リストとタプルをより厳密に型付けできるようになっています。
リスト:
- 型システムは、空のリストと空でないリストを区別できるようになります。
-
head
関数は、空のリストが渡された場合に型エラーを発生させ、安全性を高めます。 -
List.first!
は、空のリストの可能性がある場合に実行時エラーが発生する可能性を示すために導入されます。
タプル:
- タプルは、各要素の型を個別に指定できます。
- タプルの最小サイズも指定できます。
-
elem
関数とガードは、タプルの型を考慮して型チェックが行われます。
これらの機能により、Elixirの型システムはより強力になり、実行時エラーを減らし、コードの信頼性を向上させます。
DatadogがOCIに対応したぞー
DatadogがOCIに対応し、メトリクスのインテグレーションが可能になりました。設定は、DatadogとOCIの両方で作業が必要です。
Datadog側:
- OCIのテナンシーを追加
- OCIのユーザー情報を入力
- [Create a Stack]でOCIのコンソール画面に移動
OCI側:
- DatadogAuthUserを作成し、APIキーを発行
- DatadogAuthGroupにポリシーを追加
- Dynamic Groupを作成し、ポリシーを追加
- OCIRにログインできるユーザーを作成し、認証トークンを取得
- Datadog APIキーとEndpointを設定
- スタックを作成
注意:
- FunctionsのシェイプタイプはX86に変更する必要があります。
- スタックが成功するまで時間がかかる場合があります。
確認:
- DatadogのダッシュボードにOCIのダッシュボードが表示されます。
これでDatadogでOCIのメトリクスを監視できます。
Mermaidでアーキテクチャ図が書けるようになったらしい
Mermaidでアーキテクチャ図が書けるようになった!
Mermaidはシーケンス図、クラス図、状態遷移図などをテキストベースで作れるツールで、新たにアーキテクチャ図も書けるようになりました。
メリット:
- デザインや配置を自分で考える必要がない
- 図の書き換えが簡単
- バージョン管理できる
- 生成AIに記述させることも可能
アーキテクチャ図の記法:
-
group
でグループを作成し、アイコンとタイトルを指定 -
service
でサービスを作成 -
:B -- T:
でサービスを上下に接続 -
:L --> R:
でサービスを左右に接続、矢印をつけることも可能 -
junction
で分岐を表現
注意点:
- 現状、draw.ioやNotion、VSCode拡張機能などは未対応
- draw.ioではMermaidコードから図を作成できるが、アーキテクチャ図は未対応
今後の期待:
- draw.ioやNotionなどのサービスでMermaidのアーキテクチャ図が使えるようになれば、より便利になる
- Mermaidで作成した複雑な図をdraw.ioで微調整できるようになれば、幅広い用途に活用できる
まとめ:
Mermaidでアーキテクチャ図を書けるようになったことで、より簡単に図を作成できるようになりました。今後のサービス対応状況に期待です。
ChatGPT o1-previewに数学の共通テスト(旧センター試験)を解かせてみた
ChatGPT o1-previewは、2023年度共通テスト数学Ⅰ・A第1問〔2〕(1)を全問正解しました。
DroidKaigi 2024 9月13日資料一覧
DroidKaigi 2024の資料一覧をまとめました。9月13日のセッション内容を、各講演のテーマと資料名で簡潔に示します。
10:20-11:00
- アプリをリリースできる状態に保ったまま段階的にリファクタリングするための戦略と戦術 (Yuki Anzai) - 資料あり
- アイデアからIDEへ: Android Studio用プラグインの開発 (Ahmed Ali) - 資料なし
- Android 15と日本語 (Seigo Nonaka) - 資料なし
- クロスプラットフォームへの冒険: Kotlin Multiplatformでゲームエンジンを作る (David Wursteisen) - 資料あり: Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
11:20-12:00
- Jetpack ComposeにおけるShared Element Transitionsの実例と導入方法 またその仕組み (hyoga) - 資料あり
- 起動時間で差をつけろ!アプリ起動パフォーマンス改善! (yanmar) - 資料あり
- [招待講演] Android StudioのGeminiでコーディングの生産性を高める (Adarsh Fernando, Chris Sinco) - 資料なし
- Google Sign-inの移行から始めるCredential Manager活用 (clockvoid) - 資料あり
12:20-13:00
- ギャップを埋める:FlutterとネイティブコードのためのMethodChannelを理解する (Md Noman Khan) - 資料なし
- 分析に裏打ちされたアプリウィジェット開発 - Jetpack Glanceとともに (Miyabi Gouji, Yuri Ogura) - 資料あり: Analytics-Backed App Widget Development - Served with Jetpack Glance
- データに基づく意思決定を支える、Google Analytics for Firebase のイベント送信 (Haruhiko Takada) - 資料あり
- WebADBを使用したAndroid専用端末化への自動キッティング手法 (Hisamoto Kunimine) - 資料なし
14:20-15:00
- デザインからアプリ実装まで一貫したデザインシステムを構築するベストプラクティス (しゅーぞー) - 資料あり
- Road to Single Activity (yurihondo) - 資料あり
- Androidアプリのスクリーンショットテストをマスターする (bing-zhu) - 資料なし
- 2024年最新版!Android開発で役立つ生成AI徹底比較 (Nishimy, wiroha(ゐろは)) - 資料あり: DroidKaigi 2024 〜 2024年最新版!Android開発で役立つ生成AI徹底比較 〜
15:20-16:00
- テストの新時代 (Marcel Schnelle) - 資料あり: A New Era of Testing
- 使って知るCustomLayout. vs DailyScheduler (Saiki Iijima) - 資料あり
- GraphQLの魅力を引き出すAndroidクライアント実装 (Kurumi Morimoto) - 資料あり
- モバイルアプリケーションとRAG(検索拡張生成) (DREAMWALKER) - 資料なし
16:20-17:00
- Debugging: All You Need to Know (Jumpei Matsuda) - 資料あり: Debugging: All you need to know (for simultaneous interpreting)
- 2Dアプリに3Dの輝きを (Daniele Bonaldo) - 資料あり: コード:filament-demo-3d-printer
- タッチイベントの仕組みを理解してジェスチャーを使いこなそう (usuiat) - 資料あり
- AndroidアプリのUIバリエーションをあの手この手で確認する (Nozomi Takuma) - 資料あり
17:20-18:00
- Compose UIを使ったクリエイティブで複雑なユーザーインターフェース (Chris Horner) - 資料なし
- 実践!難読化ガイド (みっちゃん) - 資料あり
- Android開発以外のAndroid開発経験の活かしどころ (konifar) - 資料あり
- Android Autoアプリ開発の今 -ナビゲーションアプリ開発から学ぶケーススタディ- (Takuro Negishi) - 資料あり: Android Autoアプリ開発の今 −ナビゲーションアプリ開発から学ぶケーススタディ− (DroidKaigi2024)
匿名配送で理解するプロキシサーバー
プロキシサーバーとは?匿名配送を例に解説
プロキシサーバーは、代理人のような役割を果たすサーバーです。フリマアプリのようなサービスで、購入者と出品者の間に入り、匿名配送を可能にする仕組みを提供します。
匿名配送におけるプロキシサーバーの役割:
- 購入者から出品者への送金や出品者から購入者への荷物配送を仲介することで、購入者の個人情報が直接出品者に漏れないようにします。
- キャッシュ機能で、住所や支払い情報などの入力の手間を減らし、取引をスムーズにします。
- アクセスログを記録することで、商品の購入履歴や閲覧履歴などを管理します。
プロキシサーバーの種類:
- フォワードプロキシ: 購入者の代理として、出品者に送金などのリクエストを送信します。
- リバースプロキシ: 出品者の代理として、送金を受け取り、適切な購入者に転送します。
プロキシサーバーのメリット:
- 匿名性の確保: 個人情報の漏洩を防ぎます。
- 取引の高速化: キャッシュ機能で入力の手間を減らします。
- アクセスログの確認: 利用状況を把握することができます。
プロキシサーバーのデメリット:
- 情報漏洩のリスク: プロキシサーバー自体が情報漏洩の対象となる可能性があります。
プロキシサーバーは、匿名配送やセキュリティ強化、パフォーマンス向上など、様々な場面で役立ちます。
LangChainのWebBaseLoaderでWebページの内容が取得できない場合の対処法
OpenAI は、最新の AI モデルである "o1" を発表しました。o1 は、より強力で、効率的、そしてより安全な AI システムです。このモデルは、OpenAI の最新技術を駆使して開発され、さまざまな分野で革新的な活用が期待されています。
Elixirで作ったリポジトリをアップデート管理〜Dependabot〜
Elixirリポジトリのアップデート管理をDependabotで自動化する方法
このブログ記事は、GitHubリポジトリでDependabotを使ってElixirプロジェクトの依存関係を自動的にアップデートする方法を説明しています。
設定手順:
-
GitHubリポジトリにDependabotを設定:
- Settings→Code security and analysisでDependabot alerts, Dependabot security updates, Dependabot version updatesを有効にする。
-
dependabot.ymlファイルを作成:
- リポジトリのルートディレクトリに
.github/dependabot.yml
を作成し、Elixirの依存関係を更新するように設定する。
- リポジトリのルートディレクトリに
-
mixファイルのdepsに古いバージョンを指定:
- Dependabotが古いバージョンを検出できるように、
mix.exs
のdeps
に古いバージョンのライブラリを指定する。
- Dependabotが古いバージョンを検出できるように、
動作:
Dependabotは毎日、設定されたスケジュールに従ってElixirの依存関係の最新バージョンを自動的に探し、更新します。
メリット:
- 依存関係の最新バージョンを手動で確認する必要がなくなり、セキュリティリスクやバグを軽減できます。
- 最新の機能や改善点をすぐに利用できるようになります。
参考:
- GitHub Dependabot documentation: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
まとめ:
DependabotはElixirプロジェクトの依存関係管理を自動化し、最新のバージョンを常に利用できるようにする強力なツールです。
情シスだけが怖い話 行ってみたなう
情シスだけが怖い話 イベントレポ
情シスだけが怖い話イベントに参加してきました!会場は美しく、お化け屋敷のような音楽が流れ、開演前から緊張感が漂っていました。
講演では、実話を元にした4つの怪談が披露され、どれもゾッとしました。特にランサムウェアに感染し、顧客情報が漏洩した話や、転職した社員による情報漏洩の疑い、ディープフェイクを使った詐欺など、現実味があり、身につまされる内容でした。
講演後には、霊シス力を使って写真撮影ができるパネルが登場!フラッシュ有りで撮影すると、何か見えるそうです。
懇親会では、特設キッチンで作られた温かい料理が振る舞われ、とても美味しかったです。
全体的に、インシデント事例を物語調で聞けることで、話に引き込まれやすく、社内リテラシー向上に役立つイベントでした。Tadrillという製品の紹介もスムーズで、導入を検討したいと思いました。
イベントサイトも凝っていて、各ブースの内容が明確だったので、とても動きやすかったです。
ただ、怪談とITインシデントの話が混ざり合うことで、少し笑ってしまいました。
参加者プレゼントもあり、充実したイベントでした。
o1-preview大実験!ChatGPT o1は競プロの問題を解けるのかAtCoder (2024年9月版)
要約
この記事は、ChatGPT (o1と命名) が AtCoder のコーディング問題を解けるかどうか検証したものです。与えられた問題は、N個の商品の価格の合計を求めるという簡単なものでした。ChatGPTは問題を正しく理解し、コードを生成して問題を解決することができました。これは、ChatGPTが数学オリンピック並みの問題解決能力を持っていることを示唆しています。記事では、ChatGPTが今後さらに進化し、Orion(GPT-5)のような存在になる可能性も示唆しています。
UE5.4の半透明について
UE5.4 半透明描画のまとめ
UE5.4では半透明描画に大きな変更があり、アーティストに混乱が生じている。
半透明の描画順:
- 不透明なプリミティブの描画後、半透明なプリミティブがまとめて描画される。
- 描画ターゲットに直接描画、または別バッファに描画後合成の2種類。
-
Translucency Pass
で描画タイミングを選択可能。
Translucency Pass
の種類:
- After DOF: DOF処理後、半透明描画。被写界深度がかからない。
- Before DOF: DOF処理前、半透明描画。深度に基づいて被写界深度がかかる。
- After Motion Blur: モーションブラー処理後、半透明描画。エディタと実行時で見た目が異なる、処理が重くなる、深度情報無視など、多くの問題点がある。
半透明とディストーション(屈折):
- 屈折は擬似的であり、正確に表現できない。
-
Before DOF
では半透明と屈折領域がずれる。
半透明と被写界深度:
- 焦点距離より遠くにあるActorは自動的に
Before DOF
になり、屈折領域がずれる。 -
r.Translucency.AutoBeforeDOF
を負の値に設定することで無効化可能。
結論:
- 半透明描画は問題と制約が多い。
- 仕組みを理解し、計画的に使用することが重要。
-
After Motion Blur
は注意して使用すること。
おまけ:
- ポストプロセスマテリアルの
Blendable Location
はUE5.4で変更された。
注意点:
- 本記事はデフォルト設定のUE5.4をベース。
- プロジェクト設定や将来のバージョンで大きく異なる可能性がある。
WebディレクターがReactを勉強し始めた理由
Webディレクターとして、技術理解を深め、クライアントニーズと技術を繋ぐ存在になるため、Reactを学び始めました。
コーダー経験を生かし、JavaScriptの知識をアップデートすることで、エンジニアとのコミュニケーションを円滑にし、より良いディレクションを実現したいと考えています。
また、業務効率化やアイデアを形にするため、Reactでプロトタイプ制作スキルを身につけ、仕事のスピードアップを目指します。
具体的な目標としては、Reactの基礎理解、過去のアプリケーションのリメイク、そしてプロトタイプ制作を通して、自他ともに頼られる存在になることです。
forEachでawaitを使おうとしたら怒られた
JavaScriptでforEach
ループ内でawait
を使うことはできません。これは、forEach
が非同期処理の解決を待たずに次の要素へ進んでしまうためです。
forEach
の代わりに、for...of
、for
ループ、Array.prototype.reduce()
、Array.prototype.map()
とPromise.all()
、非同期タスクの配列を使用するなどの方法で、ループ内でawait
を使って非同期処理を順番に実行することができます。
【M5StackMP135 】Livebook でエアコンの働を可視化してみた
M5Stack MP135とLivebookを使って、U171の温度センサー(BMP280)でエアコンの温度変化を可視化しました。i2cバスを介してBMP280から温度データを取得し、Livebookでグラフ表示しました。エアコンのON/OFFによる温度変化をグラフで確認することができました。
FastAPIとPlotly.jsを使用した株価分析Webアプリケーションの構築
この記事は、FastAPIとPlotly.jsを用いて株価分析Webアプリケーションを構築する方法を説明しています。ユーザーは、企業を選択し、期間を指定して株価チャートを表示できます。また、移動平均線も表示可能です。このアプリケーションは、デフォルトで主要な日本企業5社を提供し、カスタム銘柄コード入力もサポートしています。
[Elixir]Plugを自作してみる[Phoenix]
このコードは、Elixir の Plug を使って、ユーザーエージェントに基づいて iPad へのリダイレクトを行う方法を示しています。
- 新しい Phoenix プロジェクトを作成し、
config/dev.exs
を変更して他の端末からもアクセスできるようにします。 -
PlugExperimentWeb.Plugs.Ymn
という Plug を作成し、call
関数内でユーザーエージェントから OS 名を取得します。 -
redirect
関数で、OS 名に基づいて iPad 用ページへのリダイレクト処理を行います。 -
lib/plug_experiment_web/router.ex
に作成した Plug を追加します。 - サーバーを起動し、ブラウザからアクセスして、ユーザーエージェントに基づいた処理が正常に動作することを確認します。
この例では、iPad 以外の端末は通常のページにアクセスできます。
Cursor の無料版を使い続ける場合の設定
Cursorの無料版でProに近い機能を使う方法を紹介します。
Gemini: Google AI StudioでAPIキーを取得し、Cursor設定で登録すれば、Gemini 1.5 FlashやProが使用できます。無料枠があるので、使い分けが重要です。
GitHub Copilot: VS CodeベースのCursorでは、GitHub Copilotが利用可能です。学生・教職員やOSS開発者は無料で使用できる場合があります。
注意点:
- Cursor無料版は機能制限あり。
- Geminiの無料枠は1日1500回、トークン数100万。
- GitHub Copilotは[Ctrl]+[I]とComposerが競合するので、設定変更が必要。
結論:
- 無料でProに近い機能が使用可能ですが、制限があります。
- Cursorのフル機能を使うにはPro契約が望ましい。
- 費用と機能を比較して、最適な選択肢を選びましょう。
DroidKaigi 2024 9月12日資料一覧
DroidKaigi 2024は9月12日に開催され、様々なテーマのセッションが行われました。サプライチェーン攻撃対策、Jetpack Compose、Kotlin 2.0、ViewModel、位置情報監視など、最新の技術や開発手法に関する講演が行われました。また、海外就職やエンジニア1年目の経験談など、キャリアに関するセッションも開催されました。
Ectoで「エラーメッセージカスタマイズ」と「独自バリデーション関数作成」
Ecto でエラーメッセージカスタマイズと独自バリデーション関数を作成する
目標:
-
validate_required
エラーメッセージを "空でござる" に変更 - 最低文字数2文字、a〜zを含むという独自バリデーション関数を作成
手順:
-
プロジェクト作成:
mix phx.new ecto_experiment --database sqlite3
-
Ecto 実験用ソース作成:
mix phx.gen.live Accounts User users name:string
-
ルーター設定:
/users
関連のライブビューを追加 -
エラーメッセージカスタマイズ:
validate_required
にmessage: "空でござる"
を追加 -
独自バリデーション関数:
validate_name
を定義し、最低文字数2文字、a〜zを含むバリデーションを追加
検証:
-
http://localhost:4000/users/new
にアクセスし、エラーメッセージと独自バリデーションの動作を確認 - バリデーションを通過するとエラーメッセージが消える
ソース:
- GitHub リポジトリ: [URL を追加]
このブログ記事では、Ecto を使用してエラーメッセージをカスタマイズし、独自バリデーション関数を作成する方法を説明します。
ハッシュ値の性質 ハッシュの衝突耐性とは
ハッシュ値は、データをハッシュ関数に入力して生成されるビット列です。ハッシュ関数は、入力データがわずかに変わると、出力されるハッシュ値も大きく変わるため、データの改ざんチェックやデジタル署名に使用されます。
ハッシュ値は、衝突耐性、原像計算困難性、第2原像計算困難性という3つの重要な性質を持っています。
- 衝突耐性: 異なるデータで同じハッシュ値を見つけることが非常に難しい性質です。
- 原像計算困難性: ハッシュ値から元のデータを推測するのが非常に難しい性質です。
- 第2原像計算困難性: 既に出力されたハッシュ値と同じハッシュ値を持つ「別のデータ」を見つけるのが非常に難しい性質です。
Rubyでは、Digest
モジュールを使用してハッシュ値を計算できます。Digest::SHA256
、Digest::SHA512
、Digest::RMD160
などのハッシュ関数が用意されています。
「表示の拡大」について
ブラウザで表示を拡大する方法は、文字サイズ、表示要素、表示範囲の3種類があり、それぞれOSとブラウザで提供されています。
機能と見え方の違い:
- 文字サイズ: 文字のみ拡大、画像サイズは変わらない。
- 表示要素: 文字と画像など、表示要素全体が拡大。
- 表示範囲: 画面の一部を拡大、スクロールが必要になる。
提供状況:
- スマートフォン: ピンチ操作による表示範囲の拡大が一般的。
- PC: 表示要素の拡大が提供され、設定で文字サイズの拡大も利用可能。
各機能の使い方:
- iOS: 設定アプリで文字サイズ、ズーム機能を調整。Safariではピンチ操作で表示範囲を拡大。
- Android: 設定アプリで文字サイズ、表示サイズ、拡大機能を調整。Chromeではピンチ操作で表示範囲を拡大。
- macOS: システム環境設定でズーム機能を調整。Chromeでは設定で文字サイズ、ページのズームを調整。
- Windows 11: 設定アプリでテキストのサイズ、拡大/縮小、拡大鏡機能を調整。Chromeでは設定で文字サイズ、ページのズームを調整。
注意点:
- iOSではOSの文字サイズ設定をブラウザに反映させるには、特定のCSS設定が必要。
- Androidでは画面内のテキストが少ないと文字サイズが可変しない場合がある。
検証時の注意点:
- 文字サイズの拡縮が効かない場合がある。
- Androidではflex要素やtable要素で可変しない場合がある。
- emやremの指定ではブラウザによって可変しない場合がある。
Power Appsでリソースや他人の空き時間を確認して予約する
Power Apps でリソースの空き時間を確認して予約するアプリの作り方
このアプリでは、リソース(個人やチーム)の空き時間を確認し、ワンクリックで予約することができます。
データ接続
- リソースアカウント格納データソース
- アプリ利用者のアカウント情報データソース
設定
- リソースアカウント格納、アプリ利用者のアカウント情報、OutlookカレンダーID、稼働時間タイムテーブル(例: 8:00~18:00)を定数として設定
コントロール
- リソース選択ギャラリー: チェックボックスでリソースを選択
- 隠しボタン: 空き時間情報を更新するコードを記述
- 空き時間可視化ギャラリー: 空き時間情報をタイムテーブル形式で表示、予約ボタン配置
機能
リソース選択ギャラリー
- チェックボックスでリソースを選択すると、選択されたリソース情報がコレクションに格納されます。
-
FindMeetingTimesV2
アクションを使用して、選択されたリソースの空き時間情報を取得します。 -
IsOrganizerOptional
をtrue
に設定することで、自身の予定情報を除外して、リソースの空き時間のみを取得します。
隠しボタン
- 空き時間情報が更新された場合に呼び出されます。
-
FindMeetingTimesV2
を使用して、最新のリソースの空き時間情報を取得し、コレクションを更新します。
空き時間可視化ギャラリー
- リソース選択ギャラリーで選択されたリソースの空き時間情報を表示します。
-
FindMeetingTimesV2
の結果に基づき、空き時間帯を緑、予約済み時間帯をグレーで表示します。 - 予約ボタンをクリックすると、
Office365Outlook.V4CalendarPostItem
を使用して、Outlookカレンダーに予約イベントを作成します。
ポイント
-
FindMeetingTimesV2
アクションを使って、リソースの空き時間情報を取得します。 -
IsOrganizerOptional
をtrue
に設定することで、自身の予定情報を除外します。 - 予約ボタンは、
Office365Outlook.V4CalendarPostItem
アクションを使用して、Outlookカレンダーに予約イベントを作成します。
まとめ
このアプリでは、Power Apps の機能を活用することで、リソースの空き時間を可視化し、ワンクリックで予約を行うことができます。
Web フロントエンドしかやってこなかった人がバックエンドに入門する
この記事は、Webフロントエンド開発者向けにバックエンド開発入門の手助けとなる内容です。Docker Composeを用いて、nginx、Goで作成したAPIサーバー、PostgreSQL、Redisといったコンポーネントを別々のコンテナに構築し、ルーティングする方法を解説しています。
具体的には、以下のような内容が含まれています。
- Go言語を用いて簡単なAPIサーバーを構築し、Dockerfileとdocker-compose.ymlで開発環境と本番環境を作成する方法
- Docker Composeで構築したコンテナ間のネットワーク動作確認方法
- APIサーバーとクライアントコンテナ間での通信確認
記事は、段階的にコード例と説明を交えながら進められており、バックエンド開発初心者でも理解しやすい内容となっています。
Object でも Hash みたいに分割代入したい
Ruby の Object でも Hash みたいに分割代入 (destructuring assignment) を実現するには、deconstruct_keys
メソッドを実装することで可能です。このメソッドは、Object の属性をキーと値のペアにして Hash として返すように定義します。これにより、Object を分割代入を使って簡単にアクセスできるようになります。
【個人開発】サウナ後のご飯「サ飯」の情報共有ができるアプリを開発しました。
サウナ後のご飯「サ飯」情報共有アプリ「サ飯の時間」開発
**「サ飯の時間」**は、サウナ後の食事「サ飯」を記録・共有するアプリ。サウナ愛好家向けの新しいコミュニティ形成や、サウナ初心者への入り口を目指したCGMサービスです。
開発期間: 3ヶ月
主な機能:
- サウナ施設検索 (エリア限定)
- サ飯投稿 (写真、コメント、サウナ施設情報など)
- いいね&コメント (ログイン必須)
- 新規投稿 (ログイン必須)
- マイページ (ログイン必須)
技術スタック:
- フロントエンド: Rails 7.1.3, Javascript, TailwindCSS, DaisyUI
- バックエンド: Rails 7.1.3, Ruby 3.2.2
- データベース: PostgreSQL
- 環境構築: Docker
- インフラ: Fly.io
- Web API: Google Maps API
工夫した点:
- UI/UX: 固定ヘッダーとボトムナビゲーションでスムーズな操作を実現
- ログイン不要閲覧: 必要な機能のみログインを求める設計
今後の展望:
- テストコード追加
- 対応エリア拡大
- リファクタリング
開発者: タク (Webエンジニア転職を目指す)
その他:
- エンジニア転職チャンネルで紹介されました
- 開発背景には、サウナ好きが高じて作ったという熱い思いが込められています。
LinuxでPythonの仮想環境(venv)を作る方法
LinuxでPythonの仮想環境(venv)を作成・利用するには、以下の手順で行います。
-
仮想環境を作成:
python3.9 -m venv (venvディレクトリ名)
で仮想環境を作成します。 -
仮想環境を有効化:
source (venvディレクトリ名)/bin/activate
で仮想環境を有効化します。 -
仮想環境の使用:
which python
で仮想環境のPythonパスを確認できます。 -
仮想環境の無効化:
deactivate
で仮想環境を無効化します。 -
仮想環境の削除:
rm -rf (venvディレクトリ名)
で仮想環境を削除します。
仮想環境は、プロジェクトごとにパッケージを分離するのに便利です。
CCIE受験しました 1回目
CCIE Enterprise Infrastructureのラボ試験を受験し、10点という結果に。試験内容は秘密だが、受験前に知りたかったことを中心に、受付から終了まで詳細に記録した。
試験では、独自のWeb試験やターミナル操作に戸惑い、DesignとQoSの知識不足を痛感した。ラボ演習だけでなく、英文読解と要点を理解する練習が必要だと感じた。
次回までに、End-to-End QoS Network Design、Optimal Routing Designなどを読み込み、CCIE Enterprise Infrastructure Foundationのラボと解説を丁寧に復習する予定。早く再チャレンジしたい。
【速報】ChatGPTがアップデート!OpenAI o1最新情報を初心者向けに解説
ChatGPTはOpenAIが開発した高度な言語モデルで、自然な会話や文章生成が可能です。最新モデルGPT-4は推論能力、長文処理、マルチモーダル機能が向上しました。
OpenAIは安全性と倫理性を重視しており、有害情報の抑制、ユーザーガイドラインの設定、透明性の確保に取り組んでいます。
「OpenAI o1」は現時点で公式情報はありませんが、さらなる推論能力向上、マルチモーダル対応拡大、効率性改善が期待されます。
AIは教育、医療、ビジネスなど様々な分野で活用され、私たちの生活を大きく変える可能性を秘めています。
propsとは
Reactのpropsは、コンポーネント間でデータを受け渡すための機能です。様々な型のデータや関数を渡すことができ、書き方が複数あります。propsは便利な機能ですが、書き方が複数あるため、しっかりと理解しておく必要があります。