【ゴールデンウィーク営業のお知らせ】
2025年4月29日(火)~2025年5月6日(火)の期間を休業とさせていただきます。
※4月30日(水)、5月1日(木)、2日(金)は通常営業いたします。
※休業期間中にいただいた審査申請については、結果をお返しするために数営業日いただくことをご了承ください。
個人的ですが、「映画の趣味が合う人」をみつけられるSNSを作りたいです
・自分に合う映画をリコメンドしてほしい
・SNS作成を通じて、TypeScript と React を学習したい
・SNS作成を通じて、AI を学習したい
・新しいマッチングサイトになったら面白そう
<プロジェクト概要>
社内の申請・承認システム(ワークフロー)において、申請画面の作成業務を担当しております。
担当範囲は、要件定義の補助、設計、コーディング、テストです。
もともと、物流部門向けに「海外の自社工場から日本本社へ自社製品(エアコン)を輸入する」た
めの申請画面を作成・運用していました。
そこへ、2年前に「通関用の書類(PDF)作成を自動化したい」という要件が追加され、対応するこ
とになりました。
<課題>
それまで、通関書類は物流部門のスタッフ2名が手作業で転記して作成しており、
・労働負荷が高い
・転記ミスが発生しやすい
といった問題がありました。そのため、自動化が強く求められていました。
申請データには以下の3項目がありました。
・エアコンの機種名
・台数
・希望納期
最初に業務部門から出された要件は非常に曖昧で、
・希望納期の近いもの同士で、輸送の便を最適にまとめてほしい
という、実装の方針を立てることが難しいものでした。
さらに、作成するプログラムは他のメンバーもメンテナンスしやすい設計にする必要があり、
できるだけシンプルで分かりやすいコードを心がける必要がありました。
曖昧な要件のもとで最適な処理を考えながら、かつシンプルなコードを維持することが難しく、
「二重の壁」に直面しました。
<対応内容>
まず、申請画面に以下の項目を追加する提案を行いました。
・輸送手段(船便・航空便)
・緊急度(至急・通常)
申請者が選択した内容に応じて、最大30行のデータを最大4枚のPDF(「船便 至急」「船便 通常」
「航空便 至急」「航空便 通常」)に明確に振り分けられるようになりました。
次に、実装を行いました。
実装方法としては、PDFのフォーマットを HTML と CSS で作成し、以下の流れで JavaScript に
よる処理を実装しました。
実装の際、メンテナンス性を考慮し、以下の工夫を行いました。
・二次元配列を使用せず、一次元配列を複数用いることでシンプルな管理を実現。
・コードの可読性を意識し、シンプルなロジックを採用。
<結果>
修正リリース以降、2年間で 200件の申請 に対応し、業務効率化に大きく貢献しました。
手作業でのミスがなくなり、物流部門のスタッフの負担も軽減されました。
物流部門が作成したエクセルファイルを申請画面に添付する、という工程も不要となりました。
<所感>
現在では競技プログラミングにも慣れ、実装のアイデアがすぐに思い浮かぶようになりましたが、
2年前の私は「与えられたデータをどのように加工するか」が明確にイメージできず、なかなかコー
ディングに着手できない日々が続きました。
ある日、帰宅途中にコーディングの方針を思いつき、急いでスマートフォンにメモを取ったことが
印象に残っています。また、コードレビューで「こういうコードが書けるんですね」と言われ、同
僚に良い刺激を与えられたことも嬉しい経験でした。
この経験を通じて、競技プログラミングだけでなく業務でも、難しい課題に挑戦する機会を大切に
したい、と考えるようになりました。
<プロジェクト内容の要約>
このプロジェクトは、PC1台で稼働する会社の人事マスタ更新プログラム(計14本)を、新しいPCに移行するものです。
現行のPCがリース返却を控えているため、システムの移行が必要となりました。
<プロジェクトの規模>
・対象プログラム数:14本
・使用技術:RPA (NTTグループ製 WinActor)、PowerShell、Excel VBA
・関係者:5名(私が中心となり対応)
・人事マスタの管理拠点:本社、海外工場、Microsoft サーバー上など複数個所
<私が担った役割>
・プロジェクト全体の管理と推進
・既存プログラムの解析とドキュメント化
・各技術(RPA、PowerShell、Excel VBA)の移行作業
・Windows10からWindows11への移行に伴う修正対応
・関係者5名との調整および教育
<開発に至った経緯>
・既存のPCがリース返却となり、プログラムの継続運用が求められた
・前任者が設計書を残しておらず、コード解析が必要だった
・RPAを含む複数の技術が混在しており、すべての技術を理解した上で移行を進める必要があった
<開発したアウトプットの詳細>
・14本のプログラムを新PCへ移行し、動作確認を実施
・コード解析をもとに、簡易的な設計書を作成
・Windows11環境での動作安定性を確保するため、コードの修正・最適化を実施
<用いた技術>
・RPA(NTTグループ製 WinActor)
・PowerShell
・Excel VBA
・Windows OS(10 → 11 への移行対応)
<どのような工夫をしたか>
・設計書がない中で、コードのコメント整理やフロー図の作成を行い、可読性を向上
・RPA部分の最適化を行い、処理速度を向上
・Windows11の互換性を考慮し、必要な修正をピンポイントで実施
・関係者と定期的に情報共有を行い、移行後の運用がスムーズになるよう調整
<成果 組織への価値>
・人事マスタ更新プログラムの継続運用を実現
・システムの安定性向上と運用負担の軽減
・設計書を残すことで、今後のメンテナンス性を向上
<成果 個人への価値>
・RPA、PowerShell、Excel VBAの知識をさらに深める機会となった
・システム移行におけるプロジェクトマネジメントの経験を積むことができた
・関係者との調整力やドキュメント作成スキルの向上につながった
<プロジェクト内容の要約>
Python を活用し、英単語とその和訳を聞き流せる動画を作成し、YouTube で公開するプロジェクト。
通勤や散歩、筋トレ中など、隙間時間を活用して効率的に英語ボキャブラリーを増やせるコンテンツを提供。
<プロジェクトの規模>
個人開発として取り組み、現在までに複数本の動画を制作・公開。
YouTube プレイリストとして整理し、学習者が継続的に利用しやすい形で提供。
<私が担った役割>
・動画作成の全工程(企画・スクリプト作成・プログラミング・編集・公開)
・英単語の選定(オンライン英会話教材、TOEIC問題集などを参考)
・Python による音声合成・動画生成の自動化
・YouTube へのアップロードと管理
<開発に至った経緯>
自身の英語学習経験から、日常的にリスニングできる教材の必要性を実感。
特に視覚に頼らず音声だけで学習できるコンテンツが少なかったため、Python を活用して自動生成することで手軽に大量の学習素材を提供できる仕組みを開発。
<開発したアウトプットの詳細>
・英単語とその和訳を音声合成で読み上げる動画
・シンプルで学習に集中できるデザイン
・フリーBGM を追加し、自然に聞き流せる構成
・YouTube でプレイリストを作成し、連続再生が可能
<用いた技術>
・Python(音声合成、動画生成)
・Microsoft Clipchamp(BGM 合成、編集)
・YouTube(動画配信プラットフォーム)
<どのような工夫をしたか>
・自動化:Python を用いて動画生成を効率化し、継続的なコンテンツ作成を実現
・利便性の向上:視覚情報なしでも学習可能なフォーマットを採用
・習慣化しやすい構成:短時間で学習できる動画を複数本作成し、リスナーが継続利用しやすい環境を整備
<どのような成果をもたらしたか>
・個人の成果:自身の英語学習の一環として活用し、リスニング力・語彙力向上に貢献
・視聴者への価値提供:隙間時間を活用した学習スタイルを提案し、多忙な学習者にも利便性の高いコンテンツを提供
・継続的なコンテンツ供給の仕組み確立:自動化により、定期的な動画作成・公開を実現
YouTube プレイリストはこちらです:
https://www.youtube.com/playlist?list=PLEQUxAwlyeu1OF8JLVKmIjeHsy87_Fk2o
<プロジェクト概要>
本プロジェクトでは、テニスの会を開催・管理できるSNSを開発しました。
ユーザーはメールアドレスで認証し、アカウントを作成することで、テニスの会を登録・管理し、参加者とやり取りができるようになります。
<プロジェクトの規模>
本プロジェクトは個人開発として進め、システム全体の設計、実装、運用を一人で担当しました。
現在、PC版の画面を整備済みであり、今後スマホ版の対応やReact.jsを用いた再構築を検討しています。
<私が担った役割>
・要件定義および設計
・フロントエンド・バックエンド開発
・データベース設計・構築
・セキュリティ対策(日本国内のみアクセス可能に制御)
・運用・保守
<開発に至った経緯>
テニスのイベント管理をスムーズに行いたいという課題があり、ITエンジニアになる前にPHPの学習を兼ねて開発しました。
手軽にイベントを登録・管理し、参加者を効率的に把握できる仕組みを構築することを目的としました。
<開発したアウトプットの詳細>
・テニス会の登録・管理機能
・参加者の管理機能
・メールアドレス認証によるアカウント作成機能
・PC向けのWebインターフェース
・ユーザーがブラウザ上にアップロードした写真を、ブラウザ上で切り抜き、アイコンにできる機能
<用いた技術>
・言語:PHP, JavaScript
・フレームワーク・ライブラリ:なし(独自実装)
・データベース:MySQL
・インフラ:レンタルサーバー
・セキュリティ対策:アクセス制御(日本国内限定)
<どのような工夫をしたか>
・シンプルで直感的なUIを設計し、ユーザーが迷わず利用できるよう配慮
・データベースの設計を最適化し、負荷を抑えつつスムーズに動作するよう工夫
・日本国内からのみアクセス可能とすることで、不正アクセスのリスクを低減
・メンテナンスのしやすさを考慮し、コードの可読性を意識した開発
<定量的な成果>
・テニスのイベント管理の手間を軽減し、効率的な運営を可能にした
・PC版のWebサイトを通じて、複数のテニス会の開催がスムーズに行われるようになった
<定性的な成果>
・開発を通じてPHPおよびMySQLの実践的なスキルを習得
・ユーザーの利便性を考慮した設計・実装を経験し、システム開発の実践力を向上
・今後の拡張(スマホ対応、React.jsへの移行)を見据えた設計の経験を積むことができた
サイトURL:
https://tennis-friends.net/
社内の申請・承認システム (ワークフロー) の画面開発チームに、立ち上げ当時から5年間在籍しています。
もっとも長くいることもあり、テックリードの役割を務めています。
開発チームは常に3~4人が在籍し、5年間でのべ12人が開発に携わりました。
チームに加入して日が浅い開発者にも、なるべく早く開発になれてもらう必要がありました。
チームとして成果を上げられるように、
・自分が業務の中で発見した実装のテクニックは都度、整理して閲覧できる場所に格納する
・質問しやすい雰囲気を作る
・難易度の高い案件、人がやりたがらない案件は、まず自分が担当する
など配慮しています。
TypeScript、React はこれから勉強していこうと考えています。
競技プログラミングは上達したいです。
英語は勉強中です。
イヤホンをしていると集中できます。 (何も聴かなくても)
部屋は暗い方が集中できます。
サブディスプレイは絶対に必要です。
小さいタスクを終わらせていくと、どんどん集中が増していきます。