React(next.js)とかで開発してる時に深い階層のObjectデータをデバッグ用に吐き出すならconsole.log()ではなく、console.dir()
ReactなどのバックエンドJavaScriptでは、console.log()
は多段階層のオブジェクトを表示できないことがあります。この問題を解決するには、console.dir(targetVariable, {depth: null})
を使用します。これは、console.log("%o", targetVariable)
よりも深くオブジェクトを表示することができます。
歴戦のSE向け手順書を作成する際に気をつけたこと
手順書作成を通して学んだこと:暗黙の了解の危険性と丁寧な文章の重要性
この記事は、現場のSE向けに機器情報のリスト化を行う手順書を作成した経験について、作成過程での苦労や工夫、そしてそこから得られた学びをまとめたものです。
主なポイントは以下の通りです。
- 作成の背景: 機密事項を含む機器管理資料を、現場のSEが理解できる手順書にまとめる必要があった。
- 作成過程での苦労: 専門用語が多く、資料の内容が理解しづらかった。また、経験豊富なSE向けに、どの程度の詳細さを記述すべきか悩んだ。
-
作成における工夫:
- 読み手の状況を考慮し、難しい言葉を使わず、小学生でも理解できる文章で記述。
- 目的、期限、格納場所、ファイル命名規則を明確に提示。
- ステップバイステップで構成し、スクリーンショットも追加。
- 環境・前提条件別に手順書を作成。
- エラー処理を考慮し、対処法を記載。
-
手順書以外に実施した工夫:
- 完成形を格納場所に予め置いておく。
- 機器の場所をリスト化し、ミーティングで告知。
-
作成後の感想:
- 手順書は読みやすく、スムーズな情報収集に役立った。
- 機器情報の集計・登録作業の大変さを実感。
- 手順書作成後にchatAIが導入され、作業の効率化を痛感。
- 最大の収穫: 経験に関係なく、暗黙の了解は良くないという認識。
- 今後の展望: 文章コミュニケーションの重要性を再認識し、qiitaでの投稿を継続。
まとめ:
この記事は、手順書作成を通して、IT業界における暗黙の了解の危険性と、丁寧な文章作成の重要性を説いています。複雑な作業をスムーズに行うには、誰でも理解できる明確な手順書が必要であり、その作成には時間と労力をかけることが重要であることを示しています。
GoogleカレンダーをWebで再現してみた
この記事は、ドラッグ操作でカレンダーを操作できるウェブアプリの開発について解説しています。このアプリは、シフト入力の効率化を目的として開発され、スプレッドシートを用いた従来のシフト入力システムの問題点を解決するものです。
主な機能:
- ドラッグ操作によるカレンダーの追加、移動、時刻の拡張
- ダイアログによるカレンダーの編集
- カスタマイズ可能なカレンダー表示
- Googleカレンダーとの連携
- ローカルストレージによる設定の永続保存
技術スタック:
- フロントエンド: React + Vite + TypeScript
- API: Google Cloud (アカウント認証), Google Calendar API
- デプロイ: レンタルサーバー (CI/CD GitHub)
開発におけるポイント:
- マウスイベントの共通ロジック化
- ファイル分割によるコードの可読性向上
- デザインにおけるシンプルさ、カレンダーエリアの最大化
今後の展望:
- コピーペースト機能の追加
- ユーザーからの要望への対応
このアプリは、ドラッグ操作による直感的な操作性とGoogleカレンダー連携による利便性を提供することで、シフト入力の効率化に貢献する可能性を秘めています。
採用担当者が見る就職・転職活動のポイント
この記事は、エンジニア採用担当者である著者が、エンジニアの採用におけるポイントを自身の経験に基づいて解説したものです。
採用担当者が重視するポイントは以下の3つです。
- 伸びしろ: 過去の経験における難易度の上昇や技術の幅広さ、深化、ポートフォリオの完成度、GitHubへの貢献、技術ブログの執筆活動などを参考に判断します。
- 長期勤務の可能性: 過去の転職回数や勤務期間を参考に判断します。転職回数が多ければ、その理由を説明できるよう準備しておく必要があります。
- カルチャーフィット: 企業の文化に合うかどうかを判断します。就職活動の軸、エンジニアとして働く目的、将来のキャリアパスなどを参考に判断します。
レジュメ作成のポイントは以下の通りです。
- 社会人になってからの経歴を詳細に記載する。
- エンジニア転向の場合は、転向に至った経緯を説明する。
- 関わった案件について、具体的に何をしたのかを記載する。
- 公開していないURLは記載しない。
- 今後やっていきたいことは具体的に記載する。
- ポートフォリオやGitHubのURLは可能な限り記載する。
- SNSの発言には注意する。
面談・面接のポイントは以下の通りです。
- お互いの時間を大切に、建設的な会話をする。
- 事前にレジュメを確認し、褒めポイントや質問を準備する。
- スカウトを承諾した理由や企業の魅力を事前に考えておく。
- 質問は明確な意図を持って、就職活動の軸と関連づける。
- 働き方、事業・組織、スキル・キャリアアップなど、興味のある分野について質問する。
求人媒体を選ぶ際のポイントは以下の通りです。
- 企業の規模感、業種、職種に合わせて媒体を選択する。
- Findy、LAPRAS、転職ドラフトがおすすめ。
- エージェンシーを利用する場合は、複数社に登録し、自分に合ったエージェントを見つける。
就職・転職活動をしていない場合でも、求人媒体に登録しておくことをおすすめします。
- 自分の市場価値を知るために、最低でも年に一度は経歴を更新する。
- スカウトが来る可能性もあるため、登録しておくことをおすすめします。
この記事は、エンジニアの就職・転職活動を行う際に役立つ情報が満載です。ぜひ参考にしてみてください。
人類はジョギングしながらRestAPIのアプリが開発できるのか?
この記事は、著者がジョギング中にChatGPTの「Advanced Voice」機能を使って、SpringBootフレームワークで従業員の部署への多対多所属関係を実装するコード生成を試みた体験談です。
会話はまずまず順調に進み、エンティティ層、リポジトリ、サービス層のコードを生成してもらえました。ただし、RestControllerの生成はうまく伝わらず、コマンドラインアプリケーションになってしまったため、修正が必要でした。
著者は、ジョギング中にChatGPTを使うことはコーディングタスクには適さないものの、野外アクティビティと連携するなど、活用できる場面は多いと感じたようです。
マルチモーダル画像検索アプリを作ってみた!
この記事は、マルチモーダル画像検索アプリの作り方について解説しています。このアプリは、自然言語や画像を用いて画像データベースから画像を検索できます。
主な機能は以下の通りです。
- 自然言語による画像検索: テキストを入力することで、関連する画像を検索できます。
- 画像による画像検索: 画像をアップロードすることで、類似した画像を検索できます。
- キャプション検索: 画像の説明文(キャプション)を検索できます。事前にAIでキャプションを自動生成し、データベースに登録しておくことも可能です。
- OCRテキスト検索: 画像に写っているテキストを抽出して検索できます。事前にAIでテキストを自動抽出しておくことも可能です。
- 画像生成プロンプト検索: 画像生成AIで生成された際のプロンプトを検索できます。
アプリのアーキテクチャは以下の要素技術に基づいています。
- ベクトル検索: 画像やテキストの特徴を数値ベクトルで表現し、データベースで類似するベクトルを検索します。
- 全文検索: テキストをキーワード検索します。
- マルチモーダル埋め込みモデル: 画像とテキストを共通の埋め込み空間へマッピングするモデルです。CLIPやJapanese Stable CLIPなどが使われます。
- マルチモーダルLLM: 画像やテキストを理解し、様々なタスクを実行できるモデルです。Qwen2-VLやMolmoなどが使われます。
この記事では、これらの要素技術の説明に加え、サンプルコードの解説、セットアップ手順、データベースの準備方法、検索方法が詳しく解説されています。さらに、リランカーを使った検索結果のランキング方法についても説明されています。
このマルチモーダル画像検索アプリは、写真や画像データの管理、画像生成AIの活用などに役立ちます。
Amazon Titan Image Generator v2 の全機能を徹底検証:機能解説と実践ガイド
この記事は、Amazon Bedrockで利用可能になった画像生成AI、Amazon Titan Image Generator v2の全機能を検証した内容です。
主な機能
- 画像生成: テキストプロンプトから画像を生成します。ネガティブプロンプトで不要な要素を指定できます。
- 画像コンディショニング: 入力画像のエッジやセグメンテーション情報を利用して、テキストプロンプトに従った画像を生成します。
- インペインティング: 入力画像内の指定領域を編集または削除し、テキストプロンプトに従って補完します。
- アウトペインティング: 入力画像の指定領域外をテキストプロンプトに従って拡張します。
- 画像バリエーション: 入力画像と類似した画像のバリエーションを生成します。
- カラーパレットによる画像ガイダンス: カラーパレットとテキストプロンプトに基づいて画像を生成します。
- 背景の削除: 入力画像からオブジェクトを識別し、背景を透明化します。
その他
- 各機能は、マスクプロンプトまたはマスク画像を使用して、編集対象領域を指定できます。
- SAM2などのセグメンテーションモデルを利用して、マスク画像を作成できます。
- プロンプトエンジニアリングが重要で、詳細な説明、論理的な順序付け、具体的な単語の使用が推奨されます。
記事では、各機能の具体的なコード例と生成画像が示されています。さらに、マスク画像の作成方法、プロンプトエンジニアリングの推奨事項、Amazon Titan Image Generator v2のfine-tuningについても解説しています。
“Five Eyes”のインターネット監視を打ち破るには?
Nym ミックスネットの概要:集団監視に耐性のある匿名通信
Nym ミックスネットは、従来の VPN や Tor よりも強力な敵対者に対しても匿名通信を提供することを目指す、オープンソースのインセンティブ付きインフラです。
Nym のアーキテクチャ:
- Nym ネットワークは、プライバシーを強化するアプリケーションやサービスに "Layer0" のプライバシーを追加するインフラとして機能します。
- クライアントは、オープンインターネット経由ではなく、Nym ミックスネットを経由してサービスプロバイダーにアクセスします。
- Nym ミックスネットは、ユーザーの通信内容とメタデータの両方を保護し、誰が誰と通信しているか、あるいはどれだけのデータがやり取りされているかを隠します。
- ミックスノードの集合を経由してトラフィックをルーティングし、パケットを暗号的に処理して順序を入れ替えることで、通信を追跡不可能にします。
- gateway ノードを通じてアクセスでき、クライアントとサービスプロバイダーへのアクセスを提供するとともに、攻撃からミックスネットを保護します。
Nym が想定する脅威モデル:
- グローバルネットワーク監視者: ネットワークのすべての参加者間の通信を監視できる敵対者
- 悪意を持つノードオペレーター: ネットワーク参加者の一部を侵害できる敵対者
Nym が提供する匿名性の特性:
- 第三者による Relationship anonymity: 権限のない第三者が、2つのシステム参加者が通信しているかどうかを推測できない。
- 送信者の匿名性: メッセージを送信した当事者の身元が隠される。
- 受信者の匿名性: 通信の部外者からだけでなく、送信者からも、受信者の身元が隠される。
Nym が提供する匿名性の利点:
- 第三者関係の匿名性: Nym は、VPN や Tor と異なり、ネットワークの全体像を把握している敵対者に対しても、通信しているクライアントとサービスプロバイダーを関連付けることを防ぎます。
- 送信者の匿名性: サービスプロバイダーは、どの Nym ユーザーが特定のリクエストを開始したかを特定できません。
- 受信者の匿名性: 将来的には隠しサービスを提供し、受信者の匿名性を提供する予定です。
Nym は、オープンソースで、誰でも自身のノードを設定することができます。
闘魂Elixir ── hello_phoenixを楽しむ
この記事は、ハウインターナショナルという会社の社員が、毎月開催されている社内ハッカソンで、Raspberry Pi上でElixirのフレームワークNervesとPhoenixを使ってWebアプリケーションを実行した体験談です。
具体的には、hello_phoenixというサンプルプロジェクトを使って、SQLiteデータベースとPhoenixのWebアプリケーションを組み合わせ、CRUD操作を実装しました。さらに、Phoenix LiveView Courseで学んだ売上ダッシュボードも組み込み、実際に動作を確認しています。
記事では、Elixirの魅力、NervesとPhoenixの利点、そして実行環境や手順などが詳しく解説されています。また、筆者は、ハンバーガーショップ「レイダック」の美味しいハンバーガーを食べたことを報告し、Elixirの魅力をさらに広めたいという意欲を表明しています。
最後に、筆者はアントニオ猪木さんの「闘魂」という言葉を引用し、行動することの重要性を訴え、記事を締めくくっています。
パスワードレスを目指す組織が、なぜパスワードマネージャーを導入したのか🤔
この記事は、企業がパスワードレス認証を実現する際の課題と、その解決策としてパスワードマネージャーの導入が有効であることを解説しています。
まず、Microsoft Entra IDをIDaaSとして活用し、Microsoft Authenticatorアプリを用いたパスワードレス認証を導入することで、Microsoft 365へのパスワードレスログインを実現できます。
次に、SaaSへのシングルサインオン(SSO)設定により、複数のサービスへのパスワードレスアクセスが可能となります。ただし、SSO対応していないSaaSや、上位プランでのみSSOが利用できるSaaSが存在するため、パスワード運用が完全に排除できないケースもあります。
さらに、オンプレミスアプリケーションへのアクセスには、Azure Virtual DesktopやMicrosoft Entra Private Accessなどのソリューションを活用することで、パスワードレス認証を実現できます。
しかし、管理者アカウントなど、パスワード運用が完全に避けられないケースも存在します。そのため、パスワードマネージャーの導入が有効となります。
記事では、1PasswordとKeeperの比較検討結果から、日本語サポートの充実、設定の容易さ、SIEMとのログ連携などの理由で、Keeperを採用したことを説明しています。
Keeper導入により、ユーザーはパスワードの強度の確認や使いまわしチェックなどが可能となり、管理者はチーム全体のパスワード管理状況を把握することができます。また、Keeperの共有機能を活用することで、パスワードの安全な共有を実現できます。
記事は、パスワードレス化は完全な実現は難しくとも、よりベターなセキュリティ対策を目指し続けることが重要であると結論づけています。
Web 開発者にとって必須の 100 の無料リソース
この記事は、ウェブ開発を始めるための100以上の無料リソースを紹介しています。具体的には、ウェブサイト、YouTubeチャンネル、ホスティングプラットフォーム、API、ベクター・画像・イラストサイト、アイコン、フォント、カラーリソース、チートシート、HTML/CSSテンプレート、CSSゲーム、コードエディタ、JavaScriptアニメーションライブラリが紹介されています。それぞれのカテゴリから具体的な例が挙げられ、ウェブサイトやアプリ開発に必要な様々なツールや情報が網羅されています。
New Relic InfrastructureでLinux ホストをモニタリングしよう!
この記事は、Amazon Linux 2023 に New Relic Infrastructure エージェントをインストールする方法を解説しています。エージェントは OS の CPU、メモリ、プロセスなどの監視をすぐに開始できます。
インストール手順は次のとおりです。
- New Relic アカウントにログインし、"Guided Install" をクリックします。
- "Linux" を選択し、user key を作成します。
- 表示されたコマンドを Amazon Linux 2023 の EC2 上で実行します。
- インストールが完了したら、New Relic の画面に戻り、データが送信されていることを確認します。
これで、OS の CPU、メモリ、プロセスの監視が開始されます。
MySQLクライアントからRDSへ大量データをインポートしようとしたら処理が途中で終了した
この記事は、AWS RDSへの大量データインポート中に発生したエラーの原因と解決策をまとめたものです。
問題: MySQLクライアントからRDSに大量データをインポートしようとすると、処理が途中で異常終了し、データは一部しかインポートされませんでした。クライアントにはエラーが表示されず、データベースサーバーのログには「接続が中止されました」というエラーメッセージが表示されました。
原因:
調査の結果、以下のいずれかの要因が考えられました。
- クライアント/サーバー接続の不適切な終了
- wait_timeoutまたはinteractive_timeoutしきい値を超えるアイドル接続
- 接続パケット取得時のconnect_timeout秒のしきい値超過
- net_write_timeoutやnet_read_timeoutパラメータの値が不足
- max_allowed_packetパラメータ値の超過
解決策:
- RDSのサーバーシステム変数の変更: connect_timeout、net_read_timeout、net_write_timeout、max_allowed_packetの値を大きく設定しました。
- インポート処理時のオプション変更: クライアント側のmax_allowed_packet値を1GBに設定しました。
結論:
RDSへの大量データインポート時にエラーが発生した場合は、サーバーとクライアントのシステム変数を適切に設定することで解決できる可能性があります。特にmax_allowed_packetパラメータは、インポートするデータサイズに合わせて十分な値を設定する必要があります。
教訓:
再現性の乏しいエラーは、放置すると問題が深刻化する可能性があります。早期に調査・解決し、システムの安定稼働を維持することが重要です。
ハッカソンへ初参加し、待ち時間を楽しくするサービス NANIMACHI を開発した話[Qiita Hackathon 2024]
この記事は、Rowicy チームが Qiita Hackathon 2024 に参加した経験について記述しています。チームは、待ち時間を楽しくするサービス「NANIMACHI」を開発しました。このサービスは、待ち時間を可視化し、待ち人同士のコミュニケーションを促進することを目指しています。記事では、参加の目的、メンバー、事前準備、当日の進め方、結果などが詳細に説明されています。事前準備では、技術選定、デモンストレーション、スライドテンプレート作成などを行い、当日は方針決め、サービス開発、発表スライド作成、最終調整などを行いました。結果は予選補欠通過でしたが、チームは開発の楽しさ、達成感、チームワークの重要性を再認識しました。記事は、ハッカソン参加の面白さ、得られる経験の大きさを伝え、読者にも参加を促す内容となっています。
react-three-fiberを使って3Dモデルを動かしてみた!
この記事は、Amplifyで作ったアプリに3Dモデルを表示させる方法を解説しています。
具体的には、Three.jsとreact-three-fiberライブラリを使って、Reactアプリケーションに3Dボックスを作成し、ホバーやクリックイベントで色やサイズを変更する方法を紹介します。
さらに、useFrameフックを使ってボックスを回転させる方法も説明されています。
記事では、コード例を交えながら、各ステップを詳細に解説しており、Amplify、Three.js、react-three-fiberを初めて使う人でも理解しやすい内容となっています。
AWS超入門〜Amazon EC2編〜
この記事は、AWSのサービスの一つであるAmazon EC2について解説しています。EC2は、物理サーバーを所有せずに仮想サーバーを利用できるサービスで、ウェブサイトの公開、アプリケーションの動作、データベースの管理など、様々な用途で使用できます。
EC2のメリットは、高い柔軟性、コスト効率、迅速な立ち上げなどがあります。EC2インスタンスを起動する方法や、SSH接続によるアクセス方法、停止・削除方法などが具体的に説明されています。
さらに、EC2インスタンスを停止・削除する際に注意すべき点として、EBSボリュームの料金発生や、不要なリソースの削除について解説しています。
この記事は、EC2の基礎知識から具体的な操作手順までを網羅しており、AWS初心者にとって、EC2を利用する際の参考になる内容です。
cron式スケジュール設定を具体例で0から学ぶ
この記事は、cronを用いたスケジュール設定方法を解説しています。cronのスケジュールは、分、時、日、月、曜日という5つのフィールドで構成され、各フィールドに特殊文字を用いることで様々な条件を設定できます。
記事では、カンマ(,)で複数の値を指定、ハイフン(-)で一定期間を指定、アスタリスク(*)でワイルドカードを指定、スラッシュ(/)で等間隔処理を指定、クエスチョンマーク(?)で条件を無効化、Lで最後の日または曜日の値を指定、シャープ(#)で月の第n曜日を指定、Wで指定日に一番近い平日を指定する方法を例とともに説明しています。
さらに、これらの特殊文字を組み合わせることでより複雑なスケジュールを設定できることを紹介しています。記事では、これらの特殊文字の使い方を理解することで、様々なニーズに対応するスケジュール設定が可能になることを示唆しています。
ShaderGraphで色収差フィルターを実装【Unity、ShaderGraph、色収差、RGB Shift】
この記事は、UnityのShaderGraphを用いて色収差フィルターを実装する方法を紹介しています。
色収差とは、カメラレンズを通った光が1点に集まらず、光を構成する三原色がそれぞれ異なる波長で屈折することで生じる歪みです。記事では、ShaderGraphの「Tiling And Offset」ノードを使って、UV座標を複数生成し、それらのUV座標でテクスチャからRGBの色要素を個別にサンプリングすることで色収差を表現しています。
記事では、大きく色をずらす実装に加え、パラメータ調整でナチュラルな色収差を表現する方法も紹介しています。さらに、このパラメータを動的に変更することで色収差のアニメーション実装も可能であるとしています。
記事の筆者は、色収差の写真が好きで実装を楽しんだと述べており、さらなる工夫の余地があると考えているようです。
情報を探索しやすくするサイトを作った
この記事は、知識の階層構造をグラフで可視化するサイトを開発した作者による、その開発過程と技術的な詳細を解説するものです。
主なポイント:
- 目的: 知識や物事についての情報を可視化し、学習や理解を促進する。
- 機能: OpenAI APIを用いた階層構造生成、自前で実装したグラフ表示、ノードの削除、削除したノードからのパーソナライズ、TODOリストの作成など。
-
グラフ表示:
- div要素とsvgを使ってノードとエッジを描画。
- ノードの位置決定には力学モデルを採用し、バネとクーロン力を用いてノードの位置を調整する。
- クリック判定が容易なdiv要素による描画を採用。
- 検索: DuckDuckGo APIを用いたWeb検索機能を実装。
- パーソナライズ: ノード削除後、削除されたノードからベクトル検索を行い、検索結果に基づいてグラフを再生成する機能を実装。Supabaseを用いたベクトル検索を実現。
- 今後の展望: サービスの開発継続と、TwitterやReddit、Zennでのフィードバックを歓迎。
技術的な詳細:
- 力学モデルによるグラフ表示アルゴリズムの詳細な説明とコード例が示されている。
- DuckDuckGo APIを用いたWeb検索の実装例が示されている。
- Supabaseを用いたベクトル検索の実装例が示されている。
要約:
このテックブログ記事では、知識の可視化を目的としたWebサービスの開発過程と技術的な詳細が解説されています。特にグラフ表示の力学モデルを用いたアルゴリズムの説明と、Supabaseを用いたベクトル検索の実装例が興味深いポイントです。
JSONからパターンマッチで欲しい情報をサクッと取り出す
Webhookレスポンスから特定の値を取り出す際に、パターンマッチが便利です。
例:
- シンプルなkey/valueのJSONから
name
とemail
を取得 - 配列の要素から
postal_code
を取得
注意点:
-
case-in
を使用する場面もある - JSON.parseを使用する際は
symbolize_names: true
を指定する
パターンマッチは、決まったレスポンスを扱う場合や、エラーハンドリングが必要な場合に有効です。
RealSense D455 vs D455F
RealSense D455F レビュー: 照明の影響を抑え、より正確な深度情報を取得
RealSense D455Fは、通常のRealSense D455にIRフィルターを追加したモデルです。このフィルターにより、照明の影響を受けにくく、より正確な深度情報を取得できることが検証されました。
特に、シーリングライトやデスクライトなど、強い光源がある環境では、D455Fが優位性を発揮します。D455Fは照明の影響を受けにくいため、光源周辺の深度情報をより鮮明に取得できます。また、D455では照明によりドットパターンがぼやけたり、白飛びが発生したりしますが、D455Fではこれらの問題が軽減されます。
ただし、D455Fがすべての状況でD455よりも優れているわけではありません。光源の影響を受けにくいという点ではD455Fが優れていますが、他の状況ではD455の方が良い結果が得られる場合もあります。
結論として、照明の影響を最小限に抑えたい場合は、RealSense D455Fが有効な選択肢となります。しかし、すべての状況においてD455Fが最適というわけではなく、ご自身の環境に合わせて製品を選ぶことが重要です。
LayerX初開催!ソフトウェアエンジニアサマーインターンが楽し過ぎた!!!
LayerXサマーインターン体験記 - スキーマ駆動開発、チーム開発、そして美味しい築地グルメ -
この記事は、LayerXの2週間のサマーインターンに参加した筆者が、その内容と学びをまとめたものです。
インターンの前半は技術講義で、LayerXで使用されている技術、特にスキーマ駆動開発について学びました。スキーマ駆動開発とは、データ構造を定義するスキーマからコードを自動生成することで開発効率を向上させ、バグを減らし、チーム間での協業を円滑にする手法です。具体的にはGraphQLスキーマとデータベーススキーマを用いた開発を経験しました。
後半はチーム開発で、バクラクビジネスカードを模倣したアプリケーションの機能開発を行いました。フロントエンドとバックエンドの連携、コードレビュー、Git操作、データベースのバルクインサート、タスク管理などを経験し、チーム開発における様々なノウハウを学びました。
インターンを通じて、アジャイル開発、ワーキングアグリーメント、インセプションデッキ、クリティカルパスといった概念を理解し、エンジニアとしての実務理解を深めました。
筆者は特に、データベースのバルクインサートによる実行時間の短縮や、チームメンバーとの協力による効率的な開発に感動したようです。
記事には、フロントエンド開発、Go言語、GraphQL、データベース、エラー処理、ログ、Makefileなど、具体的な技術的な内容も盛り込まれています。
さらに、築地での美味しいランチ情報も紹介されており、インターン中の食事についても触れられています。
全体として、LayerXのサマーインターンが技術的にも人的にも非常に有意義な経験だったことを伝えています。
10月なので言語のサ終を確認しましょう
この記事は、Python、Node.js、Javaの3つの言語について、2024年10月におけるバージョンサポート状況をまとめたテックブログです。
Pythonでは、3.8系がサポート終了、3.13系がプレリリース版となります。開発環境は3.11あたりが推奨されます。
Node.jsでは、20系が長期サポートから保守に移行、22系が最新バージョンとなり長期サポートに移行、23系がリリースされます。20系への乗り換えは年末年始あたりが良さそうです。
Javaでは、22系のプレミアサポートが終了、23系がリリースされます。LTS版は、8、11、17、21はそれぞれ長期サポート期間内なので特に変更は必要ありません。25系は2025年にリリース予定です。
記事では、各言語のバージョンサポート状況の詳細な情報と、推奨される開発環境バージョンが記載されています。また、Javaの23系環境構築の際に、プレミアサポートが今年いっぱいで終了することに注意する必要があると述べられています。
【CSS】position: sticky で固定ヘッダーを実装する
記事要約
この記事は、Webサイト制作でよく使われる固定ヘッダーの実装方法として、position: sticky
を推奨するものです。
position: fixed
を使用すると、固定されたヘッダーが他の要素の上に重なって表示され、コンテンツが隠れてしまう問題が発生します。この問題を解決するために、margin-top
を設定する必要があり、メンテナンスが煩雑になる可能性があります。
一方、position: sticky
を使用すると、position: fixed
のようなコンテンツ隠蔽の問題を防ぎ、自然なスクロール動作を実現できます。position: sticky
は要素を指定した閾値に達するまで通常の要素として配置し、閾値を超えると固定表示されます。
そのため、position: sticky
は固定ヘッダーの実装に最適で、margin-top
の設定が不要となり、レイアウトの崩れを防ぐことができます。
要約の要点
-
position: sticky
は固定ヘッダー実装に最適 -
position: fixed
の問題点:コンテンツ隠蔽、margin-top
の設定が必要 -
position: sticky
のメリット:コンテンツ隠蔽を防ぎ、自然なスクロール動作、margin-top
設定不要
初心者なりのPrompt Engineering手法解説【Few-shot編】
この記事は、LLM(大規模言語モデル)におけるプロンプトエンジニアリング手法の一つであるFew-shot promptingについて解説しています。
Few-shot promptingは、モデルに具体的な入力と出力の例を与えることで、タスクに対する理解を深め、より適切な出力を生成させる手法です。例題のように、具体的な事例を提示することで、モデルの回答精度が向上します。
対照的に、Zero-shot promptingは、例を与えずにいきなり質問を投げかける手法です。モデルは一般的な理解に基づいて回答しますが、具体的なフォーマットや要約のスタイルを学習していないため、出力結果が安定しない可能性があります。
記事では、要約タスクを例に、Few-shot promptingとZero-shot promptingの違いを比較しています。Few-shot promptingでは、例から学習したフォーマットに沿って、重要な情報を含んだ一貫性のある要約が生成されます。一方、Zero-shot promptingでは、重要な情報が省略される可能性があり、要約の質が一定ではないという課題があります。
記事の結論として、具体的なタスクやフォーマットに基づいた正確な出力が求められる場面では、Few-shot promptingを使用することで、より質の高い出力が期待できると述べています。
GoでHTTPサーバーをゼロから構築する方法
この記事は、Go言語を使って簡単なHTTPサーバーを構築するチュートリアルです。 Goのインストール、プロジェクトの作成、サーバーコードの実装、実行方法がステップバイステップで解説されています。
具体的には、以下の内容を説明しています。
- Goのインストールとプロジェクト作成: Go言語のインストール方法とGo Modulesを使ったプロジェクトの初期化について説明しています。
-
サーバーコードの実装:
cmd/app/main.go
でサーバーの起動処理、internal/handlers/handler.go
でリクエストハンドラーの定義をしています。 -
サーバーの実行:
go run cmd/app/main.go
コマンドでサーバーを実行し、ブラウザでhttp://localhost:8080
にアクセスして動作確認を行います。
記事では、シンプルな"Hello, World!"を表示するハンドラーを実装していますが、ミドルウェアやデータベースとの連携など、さらなる機能拡張を検討していることが述べられています。
インフラ初心者がつまづいたアカウント運用管理発展
この記事は、AWSアカウント運用管理におけるIAM OrganizationsとIAM Identity Centerの仕組みについて解説しています。
IAM Organizationsは、複数のAWSアカウントを一元管理するサービスです。管理アカウントとメンバーアカウントという概念があり、OU(組織単位)で階層構造で管理できます。SCP(サービスコントロールポリシー)により、メンバーアカウントやOUに対するアクセス制限を設定できます。
IAM Identity Centerは、AWS上でのSSO(シングルサインオン)機能を提供するサービスです。ユーザーは一つの認証情報で複数のAWSアカウントやビジネスアプリケーションにアクセスできます。IAM Identity Centerは、組織インスタンスとアカウントインスタンスのどちらかで利用できます。組織インスタンスは、複数のアカウントを一元管理するための機能を提供します。アカウントインスタンスは、個別のアカウントごとに権限管理を行います。
この記事では、IAM OrganizationsとIAM Identity Centerの仕組みについて、図解を用いて詳しく解説しています。また、許可セットやアクセスポータルといった機能についても説明しています。
Llama3.2 をローカルで動かしてみる
Meta社が公開した軽量なテキストモデルLlama 3.2 (1B, 3B)とマルチモーダルモデルLlama 3.2 (11B, 90B)をローカル環境で動かしてみました。
1B/3BモデルはOllamaのLibraryに登録されており、簡単に実行できます。11B/90BモデルはLibraryには登録されていませんが、Hugging Faceから実行可能です。
1B/3Bは128Kトークンのコンテキスト長をサポートし、多言語テキスト生成とツール呼び出しに優れています。11B/90Bは画像理解タスクに優れており、Claude 3 Haikuなど他のモデルと比べて良い性能を示します。
今回は簡単な試用にとどまりましたが、今後は性能面について検証していく予定です。
【C#】いい加減説明できるようにしたいデリゲート,Action,Func,Expression
この記事は、C#におけるデリゲートの役割と使用方法を解説しています。特に、サーバーサイド開発におけるデリゲートの活用に焦点を当て、UIやイベント駆動型のシステムにおけるデリゲートの利用は扱っていません。
デリゲートは、メソッドを安全にカプセル化する型で、関数ポインターのようにメソッドを変数として扱うことを可能にします。ActionとFuncは汎用的なデリゲート型で、Actionは戻り値がないメソッド、Funcは戻り値があるメソッドを扱うために使用されます。
デリゲートを使用することで、メソッドをリストに格納したり、引数として渡したり、メソッドチェーンで複数のメソッドを連結して呼び出したりすることができます。これにより、コードの再利用性や柔軟性、保守性を向上させることができます。
さらに、Expressionを使用することで、コードをデータとして操作し、動的に処理を生成できます。これは、高度に抽象化された動的な処理を作成するために使用されますが、そのオーバーヘッドは考慮する必要があるとされています。
記事では、デリゲート、Action、Func、Expressionそれぞれの使用例と注意点が詳しく説明されています。また、Expressionを使用して物理名を取得する方法や、動的に処理を生成する方法などが紹介されています。
デリゲート、Action、Func、Expressionを理解することで、C#プログラムの柔軟性と拡張性を高めることができます。適切な場面でこれらの機能を活用することで、より強力で効率的なコードを作成することが可能となります。
知識グラフ入門:Neo4jとオントロジーの関係性を理解する
この記事は、知識グラフ、Neo4j、オントロジーに関する著者の学びの記録です。
知識グラフは、エンティティと関係で構成された、実世界の情報を構造化するデータモデルです。
Neo4jは、知識グラフを実装するためのグラフデータベース管理システムで、Cypher言語を用いてグラフデータを格納、管理、クエリします。
オントロジーは、特定分野の概念と関係性を形式的に表現したもので、データの意味と文脈を明確にし、異なるシステム間のデータ統合を容易にします。
Neo4jとオントロジーは、知識グラフの構築と利用において相互に補完し合います。オントロジーは、Neo4jでのデータモデリングの指針となり、データの整合性維持と推論に役立ちます。
知識グラフを学ぶには、グラフ理論、Neo4jとCypher言語、オントロジー設計の基礎を理解することが重要です。既存のオントロジーを活用することで理解を深めることができます。知識グラフは、推薦システム、質問応答システム、データ統合など、幅広い分野で活用されています。
著者は、知識グラフ、Neo4j、オントロジーの学習を通して、データの表現と利用に関する新しい視点を得たと結論づけています。これらの技術は、複雑な情報の構造化と効率的な利用を可能にする強力なツールであると強調しています。