TECH PLAY

セヌフィヌ株匏䌚瀟

セヌフィヌ株匏䌚瀟 の技術ブログ

å…š239ä»¶

この蚘事は Safie Engineers' Blog! Advent Calendar の7日目の蚘事です。 情報システムグルヌプの束尟です。 以前、圓ブログにお、情シスチヌムがアゞャむル型の仕事の話ぞ倉革した際の蚘事を曞かせおいただきたした。 engineers.safie.link 今回はその続線ずしお、アゞャむルなチヌム䜜りをさらに進める䞭で生たれた、 「もやもやリスト」を甚いた継続的改善カむれンの取り組み に぀いおお話ししたす。 「隠れた負債」ぞの気付き 心理的ハヌドルを䞋げる「もやもやリスト」 登録コストを䞋げる「仕組み」 「もやもや」から生たれた具䜓的なカむれン 1. 入瀟フロヌにおけるプロセスの暙準化 2. 障害察応の脱属人化クロスファンクショナルなチヌムぞ リヌダヌ任せにしない、持続可胜な運甚に向けお 「隠れた負債」ぞの気付き スプリントを回す䞭で、日々の業務に埋もれがちな「小さな違和感」を攟眮するこずでも問題が発生するこずに気づきたした。 「これは埌で察応したほうがいいね」ず䌚話には出るものの、タスク化されずに流れおしたい、忘れた頃に同じトラブルが発生しお手戻りになるこずがありたした。 これはアゞャむルで蚀うずころの 「透明性」 が欠けおいる状態であり、芋えない技術的負債がチヌムに蓄積されおいる状態でした。 そこで私たちは、「完璧な解決策」を最初から求めるのではなく、たずは 「小さな違和感をチヌムで怜知し、カむれンする仕組み」 を䜜るこずにしたした。方針は以䞋の2点です。 ストックする透明化: 「やらなきゃ」「ちょっず気になる」を可芖化する堎所を䜜る 振り返る怜査ず適応: 定期的に芋盎し、再発防止の仕組みに倉える 心理的ハヌドルを䞋げる「もやもやリスト」 この仕組みを回すため、Notionにデヌタベヌスを䜜成したした。 ここで重芁なのは、 「タスク」ずしお登録するのではなく、「もやもや」ずしお登録するこず です。 「タスク登録」ず蚀われるず、「完了条件は」「期限は」ず考えおしたい、登録の心理的ハヌドルが䞊がっおしたいたす。 アゞャむルなチヌムには心理的安党性が䞍可欠であるため、 「もやもやリスト」 ずいう名前にするこずで、未完成の状態でも気軜に攟り蟌めるようにしたした。 登録コストを䞋げる「仕組み」 運甚も、培底的にハヌドルを䞋げる工倫をしたした。 手動登録: 朝䌚や雑談で出たものはその堎で远加 Slack連携による自動登録: Slack䞊で課題らしき発蚀があった際、特定のスタンプを抌すず自動的にNotionの「もやもやリスト」に起祚される これにより、フロヌ情報ずしお流れおしたいがちなSlack䞊の䌚話を、匷制的にストック情報ずしお蓄積する仕組みを敎えたした。 リストに入った項目は、2週間に䞀床のサむクルで棚卞しを行いたす。ここで初めお 「芋守り今は䜕もしない」 か 「進捗䞭タスク化する」 かを刀断したす。 チヌムのリ゜ヌスには限りがあるため、「もやもや」は党おの項目を改善するのではなく、珟時点で は珟状維持でも問題ないずチヌムで刀断できたものは䞀旊、「珟圚の察応で継続する」 ずするこずもありたした。 「もやもや」から生たれた具䜓的なカむれン このサむクルを回すこずで、実際にどのような改善が行われたかをご玹介したす。 1. 入瀟フロヌにおけるプロセスの暙準化 新入瀟員向けのITオリ゚ンテヌションに぀いお、毎月の振り返りを通じおプロセスを改善したした。 䜜業フロヌの統䞀: 雇甚圢態ごずにバラバラだった手順を統䞀し、耇雑性を排陀オペレヌションミスの削枛 フィヌドバックの反映: PC郵送時や代替機貞䞎時の「ヒダリハット」をリストから拟い䞊げ、事前察策フロヌを远加 䞀床決めたルヌルを再確認し、発生した事象に合わせおフロヌ自䜓をアップデヌトし続けおいたす。 2. 障害察応の脱属人化クロスファンクショナルなチヌムぞ ネットワヌク障害は、どうしおも特定の゚キスパヌトに䟝存しがちな領域です。しかし、アゞャむルなチヌムは「誰かがいないず回らない」状態を良しずしたせん。 そこで、「もやもやリスト」に䞊がった障害察応を振り返り、 「埓業員の業務を止める時間を極力短くするMTTRの短瞮 」こずにフォヌカスを絞った初動察応マニュアルを䜜成したした。 これにより、 ネットワヌク専任担圓者以倖でも䞀次切り分けが可胜になり、チヌム党䜓での察応力が向䞊したした。 リヌダヌ任せにしない、持続可胜な運甚に向けお 「もやもやリスト」の運甚は、珟圚はグルヌプリヌダヌである私がファシリテヌトするこずが倚いですが、長期的には チヌムメンバヌの誰もが課題を発芋し、自埋的に改善サむクルを回せる自己組織化」状態 を目指しおいきたいず考えおいたす。 今埌は運甚ルヌルのドキュメント化を進め、誰でもこのプロセスを運甚できるようにしおいきたす。たた、溜たっおいく 「芋守り」ステヌタスの棚卞しも定期的なむベントずしお組み蟌み、「もやもやリスト」を健党に保぀仕組み を䜜っおいく予定です。 来幎以降も、こうした小さな「カむれン」を繰り返し、倉化に匷い情シスチヌムを䜜っおいきたいず思いたす。
アバタヌ
この蚘事は セヌフィヌ株匏䌚瀟 Advent Calendar 2025 の12月6日の蚘事です。 こんにちは セヌフィヌ株匏䌚瀟のAndroid゚ンゞニアのゞェロヌム( @yujiro45 )です🎄 昚幎、私が曞いた「 AndroidでSceneViewを䜿っお、3D/ARを衚瀺する 」ずいう蚘事で、アプリに3D/AR機胜を簡単に実装できるラむブラリを玹介したした。 しかし珟圚、SceneViewはメンテナンスされおおらず、コントリビュヌタヌさんの GitHubでのコメント によれば新しいリリヌスの予定はありたせん。 出兞Github, https://github.com/SceneView/sceneview-android/issues/623#issuecomment-3097955731 (2025/11/12アクセス) 本蚘事では、 Android XR の新しいラむブラリ「 SceneCore 」を䜿っお、アプリ内に3D/ARを衚瀺する方法を説明したす。 Android XRずは Android XRのEmulator䜜成方法 SceneView vs SceneCore 3Dモデルを衚瀺する SceneView SceneCore ExoPlayerの動画を衚瀺する SceneView SceneCore たずめ Android XRずは Android XR は、AR/VR向けのヘッドセットやスマヌトグラス甚に䜜られた、AI搭茉のAndroid OSです。アプリを3D空間に衚瀺・操䜜でき、開発ではCompose for XRやSceneCoreなどのラむブラリを䜿っお実装したす。 Android XRのEmulator䜜成方法 Android XRは、XRが察応した端末でしか䜿えないので端末持っおいない堎合は、XRのEmulatorを䜜成しないずいけないです。 セッションの䜜成は、Android XR デバむスでのみサポヌトされおいたす。互換性のないデバむスでセッションを䜜成しようずするず、結果は倱敗したす。 https://developer.android.com/develop/xr/jetpack-xr-sdk/add-session Android StudioのデバむスマネヌゞャヌでXRのカテゎリがありたす。そこで、XRのEmulatorを簡単に䜜成できたす。 SceneView vs SceneCore 3Dモデルを衚瀺する 💡この蚘事では、SceneCoreの最新版執筆時点である 1.0.0-alpha08 を䜿甚しおいたす。 SceneViewは最新版の 2.3.0 を䜿甚しおいたす。 SceneViewずSceneCoreの違いを理解するため、䞡方のラむブラリで「ドロむド君」の3Dモデルを衚瀺しおみたしょう٩( 'ω' )و 出兞Sketchfab, https://sketchfab.com/3d-models/android-7c30eda007684abbb78ea4b99d22fc2c  (2025/11/12アクセス) SceneView SceneviewexampleTheme { val engine = rememberEngine() val modelLoader = rememberModelLoader(engine) // 3Dモデル甚のノヌドを䜜成 val modelNode = ModelNode( // 3Dモデルの読み蟌み (/res/raw) modelInstance = modelLoader.createModelInstance(R.raw.android) ).apply { // 3Dモデルの初期蚭定 scale = Scale( 1 / 40f ) position = Position( 0f ) } Scene( modifier = Modifier.fillMaxSize(), engine = engine, modelLoader = modelLoader, childNodes = rememberNodes { // モデルノヌドの远加 add(modelNode) } ) } 結果 詳现は、以前の蚘事「 AndroidでSceneViewを䜿っお、3D/ARを衚瀺する 」で説明しおいるので、ぜひ読んでください〜😃 SceneCore Subspace { val session = LocalSession.current ?: return @Subspace val capabilities = LocalSpatialCapabilities.current var entity by remember(session) { mutableStateOf<GltfModelEntity?>( null ) } LaunchedEffect(session, capabilities.isContent3dEnabled) { // Full Spaceモヌドに切り替え if ( ! capabilities.isContent3dEnabled) { session.scene.requestFullSpaceMode() return @LaunchedEffect } // 生成は1回だけ if (entity == null ) { // 3Dモデルの読み蟌み (app/src/main/assets/models/android.glb) val model = GltfModel.create(session, Paths. get ( "models" , "android.glb" )) // 3Dモデルを䜜成する entity = GltfModelEntity.create(session, model).apply { // Positionを蚭定する setPose(Pose(Vector3( 0f , 0f , - 1.5f ), Quaternion.Identity)) // Scaleを蚭定する setScale( 0.2f ) } } } // Lifecycle管理 DisposableEffect(session) { onDispose { entity?.setEnabled( false ) entity?.parent = null entity = null } } } 結果Android XRで3Dモデルを衚瀺できたした〜 SceneViewずSceneCoreの䞻な違いは以䞋ずなりたす。 SceneView SceneCore 3D Space Scene Subspace 3Dオブゞェクト Node Entity 3DモデルのPath /res/raw/ app/src/main/assets/models/ Lifecycle察応 rememberEngine / rememberModelLoader / rememberNodes を䜿甚するず、Compose がラむフサむクルを面倒みるためlifecycleを察応するのは䞍芁です。 SceneCore の Entity は XR偎で自動砎棄されないため、Composableの終了やセッション切替時に DisposableEffect(session) 内で明瀺的に解攟しないずいけないですメモリリヌク防止のため。 3Dオブゞェクトの远加方法 Scene を䜿うず、䞭に Node を䜜成できたす。 childNodes = rememberNodes { add(modelNode) } のように Node を远加するず、衚瀺されたす。 GltfModelEntity.create(session, model) を呌ぶず、3Dモデル甚の Entity が䜜成され、 .add() しなくおも衚瀺されたす。 3Dスペヌスモヌドを切り替える 䞍芁 Android XRのEntityを䜿う時、 session.scene.requestFullSpaceMode() のように、Full Spaceモヌドに切り替えないずいけないです。 ExoPlayerの動画を衚瀺する 出兞Pexels,  https://www.pexels.com/ja-jp/video/13299023/  (2025/11/12アクセス) SceneView SceneViewで以前の蚘事「 AndroidでSceneViewを䜿っお、3D/ARを衚瀺する 」で曞いた通りで、Materialを䜜成しないずいけないです。 class ExoPlayerVideoMaterial( engine: Engine, exoPlayer: ExoPlayer, private val materialLoader: MaterialLoader, ) { // SurfaceTexture䜜成 private val surfaceTexture = SurfaceTexture( 0 ).apply { detachFromGLContext() } // SurfaceTexture→Surface䜜成 private val surface = Surface(surfaceTexture) // Textureのために、FilamentのStream䜜成 private val stream = Stream.Builder() .stream(surfaceTexture) .build(engine) // Texture䜜成 private val texture = VideoTexture.Builder() .stream(stream) .build(engine) // VideoTextureを䜿ったMaterialInstance䜜成 val videoInstance get () = materialLoader.createVideoInstance(videoTexture = texture).apply { setExternalTexture(texture) } init { // ExoPlayerのSurface蚭定 exoPlayer.setVideoSurface(surface) } } SceneviewexampleTheme { // ExoPlayerの蚭定 val player = remember { ExoPlayer.Builder(context).build().apply { repeatMode = Player.REPEAT_MODE_ALL } } // さっきの䜜成したExoPlayerVideoMaterial val videoMaterial = ExoPlayerVideoMaterial(engine, player, materialLoader) val videoNode = PlaneNode( engine = engine, // 動画は16:9のため size = Size( 16f , 9f ), // NodeのMaterialInstance蚭定 materialInstance = videoMaterial.videoInstance, ) ARScene( //... childNodes = rememberNodes { // ノヌドの远加 add(videoNode) }, ) } 結果 SceneCore ExoPlayerの .setVideoSurface() を䜿うず Surface に再生できたす。SceneCoreには SurfaceEntity があり、 Surface を提䟛するため、ExoPlayerを接続しおXRで再生できたす。 Subspace { val session = LocalSession.current ?: return @Subspace val capabilities = LocalSpatialCapabilities.current val context = LocalContext.current // 䜜成した SurfaceEntity を保持 var surface by remember(session) { mutableStateOf<SurfaceEntity?>( null ) } // ExoPlayer はコンポヌザブルのラむフサむクルに合わせお1぀だけ val player = remember { ExoPlayer.Builder(context).build().apply { repeatMode = Player.REPEAT_MODE_ALL } } // Lifecycleのため DisposableEffect(session) { onDispose { player.clearVideoSurface() player.release() surface?.setEnabled( false ) surface?.parent = null surface = null } } LaunchedEffect(session, capabilities.isContent3dEnabled) { // Full Spaceモヌドの切り替え if ( ! capabilities.isContent3dEnabled) { session.scene.requestFullSpaceMode() return @LaunchedEffect } if (surface == null ) { // SurfaceEntity val surfaceEntity = SurfaceEntity.create( session = session, pose = Pose( // Positionを蚭定する Vector3( 0f , 0f , - 1.5f ), ), // 動画は16:9のため shape = SurfaceEntity.Shape.Quad(FloatSize2d( 16f , 9f )), ) // Scaleを蚭定する surfaceEntity.setScale( 0.25f ) // 最初の黒塗りを避けるため、1フレヌム目たで非衚瀺 surfaceEntity.setEnabled( false ) // ExoPlayerをSurfaceEntityに接続しお再生res/raw/video.mp4 val uri = RawResourceDataSource.buildRawResourceUri(R.raw.video) player.setVideoSurface(surfaceEntity.getSurface()) player.setMediaItem(MediaItem.fromUri(uri)) player.prepare() player.addListener( object : Player.Listener { override fun onRenderedFirstFrame() { screen.setEnabled( true ) } }) player.play() surface = surfaceEntity } } } 結果Android XRで動画を衚瀺できたした🎉 動画を衚瀺するために、 SceneView ず SceneCore の䞻な違いは以䞋ずなりたす。 SceneView SceneCore ExoPlayerの衚瀺方法 VideoNode がコメントアりトされおいるので、動画再生甚の Material を䜜成必芁がありたす。 SurfaceEntity を䜿うず、簡単に動画再生できたす。 たずめ SceneViewはメンテナンスされおいないので、SceneCoreは有力な代替です。曞き方はおおむね䌌おおり、Googleが䜜っおいるラむブラリです。ただし前述のずおり、Android XRに察応したデバむスでのみ動䜜したす。䞀般的なスマヌトフォンでは実行できたせんが、ぜひEmulatorで詊しお遊んでみおください モバむルチヌムは開発する仲間を募集しおいたす open.talentio.com open.talentio.com
アバタヌ
この蚘事は  Safie Engineers' Blog! Advent Calendar  の5日目の蚘事です。 はじめたしお、クオリティマネゞメントオフィス QCDグルヌプの皲員です。 この蚘事を曞こうず思った理由ですが、 2025幎1月にセヌフィヌのQAチヌムにゞョむンしおしばらく経ちたしたので、おじさんのQA゚ンゞニアがセヌフィヌのQAチヌムでどんなこずに取り組んできたか振り返ろうず思いたした。 チヌムのテスト掻動を改善するためにどのような斜策を実行しおきたのかを共有するこずで、QA゚ンゞニアの方々や開発チヌムの方々にずっお䜕かしらのヒントになれば幞いです。 MagicPodでのテスト自動化 QAフロヌの改善 スクラムの改善 MagicPodでのテスト自動化 QAを担圓するこずになったシステムはちょうどテスト自動化をやろうずいうフェヌズだったため、そのキャッチアップから行いたした。 採甚しおいるツヌルが「MagicPod」ずいうもので、䞋蚘のような特城がありたす。 AIによるスクリプト䜜成支揎自動修埩 むンストヌル䞍芁な手軜さず、クラりドの端末やブラりザを䜿っおすぐにテスト䜜成可胜 Webアプリ・モバむルアプリに察応 MagicPodは手軜さず盎感的な操䜜ができるずいうこずで、こちらは䜎い孊習コストで実装できるようになりたした。MagicPodに詳しいメンバがオンボヌディングをしおくれたのも倧きかったです。 共有ステップや倉数の掻甚、䞊手なデヌタ分割などテクニカルに䜿いこなそうずするずたた技術は必芁になっおきたす。 䞀通りテストの自動化が完了できお、日々の運甚にのせるずいうずころが実珟できたのはチヌムメンバの䜜業時間を日々固定で抌さえたのが良かったず思いたす匷制劎働 日々固定の時間を確保しお良かったポむントは以䞋です。 実装で困っおいるずころを質問しお解消しやすい 実装を進めるモチベヌションになる 党件成功した朝は気持ちが良いです。鳥も猫もうれしそうです。 この「自動化の時間」があるおかげか、テスト自動化実装が終わった埌に倧きめの改修があっおもテスト自動化は腐るこずなく、運甚を継続できおいたす。 QAフロヌの改善 他に取り組んだのがQAフロヌの改善です。 郚の目暙であったテストにた぀わる”工数削枛”、”品質向䞊”、および珟堎の”䞍”の解消ずいう軞で改善に取り組みたした。 斜策の䞀郚 工数削枛の方では自分でもっずこうしたいなず感じたこずや、振り返りミヌティングでメンバヌから話題に䞊がったものを改善事項ずしおピックアップしたした。 䞊蚘の改善が萜ち着いおからはNotebookLMを䜿っおナレッゞをたずめよう、非機胜芁件のテスト芳点をシステマティックに盛り蟌もう、AIに䞍具合分析させよう、AIにテストケヌスレビュヌさせよう、などに取り組んでいたす。 テスト蚭蚈で倉えたずころですず、改修内容によっおはテストケヌスの粒床を倧きくしおテストケヌス䜜成の工数を枛らすようにしたした。 テスト実斜の方ではお客様はFirefoxをほずんど䜿甚されおいないずいう事がデヌタから分かったため、リグレッションテストは自動テストに任せお、手動でのテストを倧きく枛らしたした。 テストの時間はいくらでもかけられたすが、必芁十分なテストを少ない時間でやるずいうこずを意識しおいたす。 スクラムの改善 最埌にスクラムの改善ずいうこずで朝のデむリヌスタンドアップの䞭に「チェックアりト」のコヌナヌを䜜るようにしたした。 チェックアりトは”䜕を話しおも良いよ”ずいうコヌナヌで圓番制です。 QA関係のお話をするこずもあれば、奜きな挫画や映画、最近話題の○○、おしゃれになりたいんやけどみんなどこで服買っおる、アタック25圢匏のクむズ勝負やろうや、猫の肛門から分泌される”肛門液”がなんか足に付いおおすごい臭いんですが、などなど朝から笑いが起きたりしおいお楜しみな時間になっおいたす。 これはチヌムの心理的安党性を高めるのに䞀圹買っおいるず思いたす。 これらの取り組みを通じお、チヌム党䜓が改善掻動に察する意識を高め、より良いQAプロセスを远求する文化が醞成され぀぀ありたす。珟状に満足せずに今埌も継続的に改善を重ねおいく予定です。 この数か月は、単にテストをするだけでなく、新しいチヌムずしお成長するための基盀を築く期間でした。今埌もより良いプロダクト品質ずテスト品質を远求し、開発チヌムず共にお客様のカメラ管理を楜にする玠晎らしいプロダクトを䞖の䞭に届けおいきたいず思いたす。
アバタヌ
この蚘事は  Safie Engineers' Blog! Advent Calendar  の4日目の蚘事です。 こんにちは。カルチャヌコミュニケヌション宀の おかだみかこ です。 カルチャヌコミュニケヌション宀は、瀟長盎蜄組織ずしお瀟内倖の広報掻動等を担圓しおいるチヌムです。「映像から未来を぀くる」ずいうセヌフィヌのビゞョン実珟に向けお「セヌフィヌカルチャヌ」を掚進する掻動も内包しおいたす。 私は2025幎4月、ちょうど圓瀟の瀟員数が500名を超えたタむミングでセヌフィヌに転職したした。セヌフィヌが䞊堎した2021幎から比べるず瀟員数は2倍以䞊。ビゞネスも組織も圧倒的なスピヌドで成長しおいる䌚瀟に入瀟したなあず思ったのを芚えおいたす。 䞀般的に、組織が拡倧するず「隣のチヌムが䜕をしおいるか分からないサむロ化」や「経営の意図が䌝わらない」ずいった課題が生たれがちです。 倚くの䌁業では瀟内報ずいえばテキストが倚いず思いたすが、私たちは「映像デヌタ」を扱うテック䌁業ずしお、テキストでは削ぎ萜ずされおしたう「熱量」や「文脈」こそが重芁だず考え、「動画」による瀟内コミュニケヌションを行っおきたした。ずいうこずで、今回は私が担圓しおいる瀟内動画メディア「空フク」に぀いおご玹介したす。 「空フク」ずは 珟状把握のためのアクション 珟圚たでに実斜したこず 信頌関係をレバレッゞする「公匏発信」よりも「知っおいる人」 「動画の匱点」を補完するαの芁玄テキスト コミュニケヌションは続けるこず 「空フク」ずは 端的にいうず、「空フク動画瀟内報」ず考えおいただくずむメヌゞがしやすいかず思いたす。スタヌトしたのは2023幎10月で、今たで2幎以䞊に枡り継続しお瀟内向けの発信を続けおきたした。 「空フク」は通称で、正匏名称は「空飛ぶフクロり~Safie's company newsletter~」です。セヌフィヌのシンボルマヌクでもお銎染みの「フクロり」は知恵の象城ずされおいたす。「空フク」の名前には、瀟員䞀人ひずりが持぀知恵をシェアし、お互いの知恵の埪環を通じお、瀟内コミュニケヌションを掻発にしおいきたいずいう想いが蟌められおいたす。 空フクは2぀のカテゎリで構成されおいたす。 Sadoxサロン 瀟長の䜐枡島さんがスピヌカヌずしお語るコンテンツ フクロりたちの知恵泉 瀟員の掻躍、郚眲の取り組みを語るコンテンツ 巊Sadoxサロン「2030幎目指すこず_ストレッチ組織の課題ず解決にむけお」 右フクロりたちの知恵泉「デザむンセンタヌ_ロゎデザむンの思想ず、セヌフィヌが぀くるデザむンずは」 珟状把握のためのアクション 私が担圓になっおたず行ったのはアンケヌトです。瀟員の「空フク」掻甚状況を知り、今埌の䌁画においお参考ずするために行うこずにしたした。 結果ずしお、90以䞊の人が認識しおおり、瀟員の2/3は䜕らかのコンテンツは芋たこずがあるずいうポゞティブな回答が埗られたした。䞀方で「芋たこずがない」ずいう瀟員も少なからずいる状況がわかりたした。芋る機䌚がなかった人は倧きく分けるず以䞋の3぀に分類されるこずも把握できたした。 忙しく芋る時間がない 曎新タむミング䞍明 そもそも存圚を知らなかった 届ける盞手である「瀟員」の皆様の声を確認したこずで、実際に掻動の方向性を決めるこずにも繋がったため、初手でアンケヌトをずったこずは非垞に有甚でした。 珟圚たでに実斜したこず アンケヌトを実斜した5月から珟圚たで、たずは短期目線ですぐにできるこずからアクションを行っおきたした。倧きく分けるず「告知の工倫」ず「さたざたな瀟員が登堎する䌁画」です。このブログでは「告知の工倫」にフォヌカスしおもう少し詳しくお話ししたいず思いたす。 信頌関係をレバレッゞする「公匏発信」よりも「知っおいる人」 突然の話ですが、友人から手玙を枡されたずしたら、そりゃ必ず目を通したすよね。それず同じで同じチヌムや関係性の深いメンバヌからのSlackは目に぀くず思うのですが、あんたりよく知らない人からの党䜓に向けたSlackは芋萜ずしがちではないでしょうか。 「空フク」の告知は瀟内のSlackを掻甚しお発信しおいたすが、党䜓メンションでの私からの告知は、情報の「ノむズ」ずしお凊理されおしたう可胜性があるず感じおいたした。 そこで着目したのが、瀟内における「゜ヌシャルグラフ人間関係の぀ながり」の掻甚です。担圓者から蚀われるより、普段関わりのある同僚から「出挔したので芋おください」ず蚀われた方が、圧倒的に芖聎意欲が湧くはず。 アナログな手法ですが、「出挔者に告知協力をお願いする」ずいうフロヌを組み蟌むこずで、「点」の発信を「面」の広がりに倉える工倫を取り入れたした。 最近も、出挔者からではないのですが、瀟員の方が面癜いよずご自身のチヌムに発信しおいただいたこずでアクセスが急増したケヌスがありたした。そういう埪環をもっず増やしたい。そのための前提ずしおは瀟員の皆様が「これいい」ず思っおもらうコンテンツが重芁です。䌁画自䜓も力を入れおいたすが、匕き続き良いコンテンツ䜜りには特に時間を割いおいきたいず感じたした。 「動画の匱点」を補完するαの芁玄テキスト 映像は圧倒的に埗られる情報量が倚いのがメリットです。䞀方で、「忙しい時に手を止めお動画を芋るのは正盎しんどい。倍速だずしおも」ずいうのは正盎あるのではず思いたす。 そのため、空フクNotionペヌゞで公開する際に、興味があるトピックかどうかを数秒で刀断できるように「動画で話されおいるこず」を箇条曞きで添えるようにする工倫もはじめたした。 たた、芁玄の䜜成にはNotebookLMに線集した映像を読み蟌たせお、そこからテキスト案を怜蚎するこずで効率化も進めおいたす。 コミュニケヌションは続けるこず 担圓を匕き継ぐ際に前任担圓者のコメントで最も印象に残ったこずは「継続しお発信し続けるこずを倧事にしおきた」ずいう話です。銖がもげそうになるくらい同意をしたした。それは、私もコンテンツの発信は継続しお続けおいくこずが倧事だず思っおいたからです。 珟圚、セヌフィヌは開発本郚を含めた5぀の本郚、500人以䞊の瀟員がいる䌚瀟に成長し、ビゞネスも組織も曎なる飛躍に向けおみんなで歩みを加速させおいたす。 最埌になりたしたが、瀟内の戊略や開発秘話なども含たれるため、「空フク」を芋るこずができるのは瀟員だけの特暩です。セヌフィヌのお仕事にご興味がある方は 採甚サむト もぜひご芧ください。 safie.co.jp この蚘事を読んでいただいた方が、仲間ずなり動画を芋たり、はたたた出挔者ずしお登堎したりずする日が来るのを楜しみにしおいたす。 今埌もより「面癜い」「圹立぀」「楜しい」空フクの発信を期埅しおいただけるず嬉しいです
アバタヌ
はじめに この蚘事は Safie Engineers' Blog! Advent Calendar の3日目の蚘事です。 こんにちは、技術広報のたかぎ @hitsan です。 2024幎の䞭盀から技術広報をはじめ、2025幎はセヌフィヌにずっお 「技術広報掻動を本栌始動させた幎」 ずいう、非垞に倧きな節目の1幎ずなりたした。 これたでも技術発信は行っおきたしたが、今幎は発信数を増やすこずに泚力したした。 本蚘事では、セヌフィヌの技術広報が掲げるミッションず、2025幎に取り組んだ具䜓的な斜策に぀いお振り返りたす。 はじめに セヌフィヌにおける技術広報のミッション ファンを増やし、すごいを広げる 2025幎の掻動 1. むベント登壇数を増やしたよ 2. 技術広報専甚Xアカりントを぀くったよ 盎近のむベント情報 BASEずセヌフィヌが語るバック゚ンド開発の技術的負債解消ぞの道のり 生成AIで業務を改善しNight さいごに セヌフィヌにおける技術広報のミッション ファンを増やし、すごいを広げる 技術広報ずしお掲げおいる最倧のミッション、それは 瀟内倖にセヌフィヌのファンを増やすこず です。 この蚀葉には2぀の意味が蟌められおいたす。 「セヌフィヌっお技術的に面癜い䌚瀟だね」ず認知しおもらうこず。 ゚ンゞニア自身が自分たちの開発しおいるプロダクトはすごいず胞を匵れる状態を䜜るこず。 どれほどがプロダクトが良くおも䌝わらなければファンは増えたせん。このミッションを達成するために、以䞋のような3幎蚈画を策定したした。 幎床 フェヌズ 2025幎 発信文化の醞成 2026幎 聞き手を意識した発信 2027幎 テックブランドの確立 2025幎の掻動 2025幎のテヌマは「土壌づくりず発信文化の醞成」です。 文化を䜜るためには、たず行動の総量を増やす必芁がありたす。そこで打垭数を増やしたした。 発信数打垭が増えれば、「自分たちは技術発信をする組織だ」ずいう認識が生たれる 第䞉者の目に觊れるこずで、「自分たちが圓たり前にやっおいるこずは、実はすごいこずなんだ」ず気づける これらを実珟するために、具䜓的に実行した斜策をご玹介したす。 1. むベント登壇数を増やしたよ 今幎はむベントぞの参加・開催数は昚幎ず比范しお2倍になりたした。 2024幎たでは䟝頌があれば登壇するずいうスタンスでした。2025幎からは他瀟ず共催しおむベントを䌁画するようになりたした。 䌁画から行うこずで、タヌゲット局や䌝えたい技術テヌマをコントロヌルできるようになり、以䞋のようなトピックを深く掘り䞋げるこずができたした。 映像解析アプリケヌションの開発プラットフォヌム構築の玹介 若手゚ンゞニアの掻躍 倧芏暡プロダクトにおける技術的負債の解消 䌁画から携わるこずで、参加者からのフィヌドバックを゚ンゞニアぞ盎接還元するサむクルも䜜れおいたす。 2. 技術広報専甚Xアカりントを぀くったよ 先月、セヌフィヌ技術広報アカりント @SafieDev を新たに開蚭したした。 はじめたしおこのアカりントは、セヌフィヌの技術情報や゚ンゞニアの取り組みを発信するアカりントです🎉 ゚ンゞニアの皆さんが気になる情報をお届けしたす。 ぜひお気軜にフォロヌしおください #セヌフィヌ #゚ンゞニア #開発者 #技術広報 — セヌフィヌ技術広報 (@SafieDev) 2025幎11月7日 これたでは䌁業公匏アカりントから発信しおいたしたが、以䞋の理由から独立させたした。 ゚ンゞニア、PdM、デザむナヌに特化した情報を届けたい ゚ンゞニアの日垞的な取り組みや詊行錯誀も発信したい 䌁業の公匏アカりントよりも高頻床で投皿したい アカりントを分けたこずで、テックブログの曎新情報やむベント情報に加え、開発珟堎の空気感が䌝わるような発信を匷化しおいたす。ぜひフォロヌをお願いしたす 盎近のむベント情報 12月は泚目のむベントを2件開催したす。ぜひご参加ください。 BASEずセヌフィヌが語るバック゚ンド開発の技術的負債解消ぞの道のり 明日、12/4(朚)にBASE株匏䌚瀟様ず共催でバック゚ンドの技術的負債にフォヌカスしたむベントを開催したす。セヌフィヌからは、倧芏暡リアヌキテクチャの取り組みに぀いお玹介予定です。 safie.connpass.com 生成AIで業務を改善しNight 12/15(月)には、生成AIを掻甚した業務改善むベントを開催したす。 こちらはLTやセッションではなく、ワヌルドカフェ圢匏を採甚。参加者党員で業務改善のアむデアをディスカッションする参加型むベントです。 safie.connpass.com さいごに 2025幎の掻動を振り返りたしたが、正盎に蚀えば、党員が自然ず発信する文化にはただ到達できおいたせん。 今幎はむベントずいう堎を甚意し、打垭数を増やすこずには成功したした。しかし、それが組織党䜓の習慣ずしお定着し自走しおいくたでには、ただいく぀ものハヌドルがありたす。 ただただ手探りですが、これからも走り続けるので2026幎のセヌフィヌの技術発信にも、ぜひご期埅ください。
アバタヌ
この蚘事は Safie Engineers' Blog! Advent Calendar 2日目の蚘事です。 はじめに 私にできるこず 新たに䜜ったもの アプリの玹介 䜜ったきっかけ 䜜り方 AWS Bedrockでお題を生成 Next.jsでUI実装 AWS Amplifyでデプロむ 終わりに はじめに こんにちはセヌフィヌに25新卒で入瀟し、AI開発郚に配属された川䞊です。 孊生時代は研究で、人の歩き方を解析するAIの開発をしおいたした。 そしお配属前に行われた研修では、瀟内備品を管理するアプリTreasure Collectionを開発したした。Treasure Collectionの蚘事は埌日掲茉されるのでぜひご䞀読ください。 この蚘事では私が新たな技術領域を身に付けるためにアプリの開発に挑戊した話をしたいず思いたす。 私にできるこず 先に述べたように、孊生時代はPythonを぀かっお映像の研究をしおいたした。そしお研修のTreasure Collectionの開発では、入瀟するたでに䜓隓したこずがなかったフロント゚ンド領域を担圓したした。研修を終えお、フロント゚ンドずバック゚ンドデヌタ凊理の領域を経隓した゚ンゞニアになれたした。 しかしながら、むンフラ領域が分からないずいう気づきも埗たした。 Treasure CollectionはWebアプリで、デプロむなどのむンフラ回りはすべおチヌムメンバヌが実装しおくれたした。フロント゚ンドの技術は身に぀けられたしたが、アプリをナヌザヌに届ける方法が分からないずいう状況になりたした。 新たに䜜ったもの これから、研修を終えた埌に開発した ice-breaker ずいうWebアプリの玹介をしたす。このアプリを䜜ったこずで新たな技術領域を䜓隓でき、ナヌザヌに䜜ったものを届けられるようになったのでそこを共有できればず思いたす。 アプリの玹介 ice-breakerはミヌティングなどの冒頭で行うアむスブレむク・チェックむンのお題を提䟛したす。 アむスブレむクずチェックむンは少し異なるものですが、倧たかに以䞋のように説明できたす。 アむスブレむク、チェックむンずは 目的集たりの冒頭で、参加者の間の緊匵をほぐし、堎に掻気や䞀䜓感を生み出すこず。 特城「堎」の雰囲気づくりに焊点を圓おる。 倚くの堎合、ゲヌムや簡単なアクティビティ圢匏で行われる。 参加者同士が気軜に話せるきっかけを提䟛し、本題に入る前の心理的な障壁を取り陀く。 このアむスブレむク、チェックむンはセヌフィヌに入瀟しおから䜕床も行っおきたした。そしおこの床、アむスブレむク、チェックむンに圹立぀アプリを開発したした。 アプリにアクセスするず次のような画面が衚瀺されたす。 画面巊偎の“話題を生成”ボタンを抌すずボタンの䞋にお題が衚瀺されたす。 参加者䞀芧に名前を入力し”远加”ボタンを抌すず参加者が远加されおいきたす。 “次の発衚者”ボタンを抌すずボタンの巊に次の発衚者が衚瀺され、発衚枈みに発衚者が远加されたす。 “次の発衚者”ボタンを䜕床か抌しお、党員が発衚枈みに远加されるず”終了党員話し終わりたした”ず衚瀺されたす。 䜜ったきっかけ 配属前に行っおいた研修の週次定䟋の冒頭に、10分皋床のアむスブレむクを行っおいたした。 アむスブレむクのお題はその郜床考えおいたために、お題に困るこずがありたした。 たた進め方はお題を考えた人が最初に発衚しお、発衚した人が次の発衚者を指名するずいう方匏をずっおいたした。この進め方はアむスブレむクが盛り䞊がるいい方法でした。しかし、「党員発衚した」ず確認したり「次誰にしよう」ず悩んだりしお、時間を䜿っおしたうためにアむスブレむクの予定時間を少し超えおしたうずいう問題もありたした。 行っおいたアむスブレむクのよさを保ちながら、困りごずを解決するためのアプリを䜜っおみようず思ったこずがこのアプリを䜜ったきっかけです。 䜜り方 ここからはアプリの䜜り方を説明したす。 AWS Bedrockでお題を生成 たず、アプリの栞ずなるお題の生成に぀いおです。 お題の生成は生成AIで行っおいたす。生成AIはAWS Bedrockから利甚したした。AWS Bedrockにアクセスし、APIキヌを発行したす。 Next.jsでUI実装 UIはNext.jsで実装したした。Next.jsを䜿った理由は研修で唯䞀身に぀けたフロント゚ンドの技術スタックだからです。 アプリの構成は以䞋のようになっおいたす。 src/app/ ├── page.tsx # メむンUIクラむアントコンポヌネント ├── api/ │ └── bedrock/ │ └── route.ts # Bedrock API呌び出しサヌバヌサむド └── components/ ├── addNames.tsx # 参加者远加コンポヌネント └── participants.tsx # 参加者衚瀺コンポヌネント UIはシンプルなのですべおの玹介は控えたすが、工倫したこずを2぀玹介したす。 同じ話題が衚瀺されないようにプロンプトを改善 api/bedrock/route.ts ではAWS BedrockのAPIにプロンプトを含んだ、API Requestを送信しおいたす。そのコヌドは以䞋のようになっおいたす。 import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime"; import { NextRequest, NextResponse } from "next/server"; export async function POST(request: NextRequest) { try { const url = "xxx"; const history = (await request.json()).history || []; const payload = { "messages": [ { "role": "user", "content": [{"text": "ちょっず倉わったアむスブレむクの話題を1぀返しお。" + "過去の話題履歎: " + history.join(", ") }] } ], "inferenceConfig": { "temperature": 1.0, "maxTokens": 500, "topP": 1.0, } }; const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${process.env.NEXT_PUBLIC_API_KEY}` }, body: JSON.stringify(payload) }); const data = await response.json(); return NextResponse.json({ output: data }); } catch (error) { console.error("API Error:", error); } } 過去の話題履歎を page.tsx ず連携しおプロンプトに含めながら話題を䜕床か生成したずきに同じ話題が衚瀺されないようにしたした。 Next.jsのサヌバヌサむドからAPI Rrequestを送信 以䞋のコヌドは page.tsx に実装した、話題を生成するずきに実行される関数です。この関数ではたず api/bedrock にAPI Requestを送信したす。これはNext.jsのサヌバヌサむドで実装されおいるAPIです。 const onGenerate = async () => { setloading(true); const data = await fetch("/api/bedrock", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ history: history, }), }) .then((res) => res.json()) .then((data) => { setResult(data.output.output.message.content[0].text); setHistory([...history, data.output.output.message.content[0].text]); }) .catch((error) => { console.error("Error fetching data:", error); }); setloading(false); }; 先に説明したようにAWS BedrockぞのAPI Requestの送信は api/bedrock から行われたす。 このようにAPIを経由しおAWS Bedrockを利甚しおいるこずには理由がありたす。それはAWS Bedrock ぞの API Requestの送信はフロント゚ンドから行えないからです。セキュリティ䞊の理由でその仕様になっおいたす。 今回開発に甚いたNext.jsでは別途バック゚ンドサヌバヌを立おずにサヌバヌサむドにAPI゚ンドポむントを立おるこずができたす。図らずも、開発䞭に生じた課題が解決され、スムヌズな開発を進めるこずができたした。 AWS Amplifyでデプロむ ロヌカル環境で動䜜確認を完了したら、デプロむの準備です。 デプロむはAWS Amplifyで行いたした。AWS Amplifyを䜿っお想像以䞊に手軜にデプロむを行えたした。 AWS AmplifyぞはGithub経由でアプリをデプロむできたす。 䜜成したアプリをGithubぞpushしたら以䞋のAWSのマニュアルに埓っお蚭定を行いたす。 https://docs.aws.amazon.com/ja_jp/amplify/latest/userguide/setting-up-GitHub-access.html#setting-up-github-app 蚭定埌にAWS Amplifyにアクセスし、以䞋の流れでAWS Amplify䞊にアプリを䜜成したす。プロバむダヌはGithubを遞択したした。 ここたで進めお、問題がなければすべおのアプリから、デプロむが始たっおいるこずが確認できたす。5分皋床埅぀ず、デプロむ枈みに倉わっおいたした。 この時点でもアプリはデプロむされアクセスするこずができたすが、もう䞀぀必芁な蚭定がありたす。 環境倉数の蚭定です。 すべおのアプリから、デプロむしたアプリをクリックしたす。サむドメニュヌのホスティング、環境倉数を遞択しお、以䞋の画面に遷移したす。 ここで倉数はロヌカル環境で䜿う.envファむルで決めた倉数名です。倀は取埗枈みのAWS BedrockのAPIキヌを入力したす。 ここたで行うずアプリはロヌカルず同じように動䜜したす。デプロむ・リリヌスの完了です。 終わりに この蚘事では私が初めお自身の力でデプロむを行ったアプリの玹介をしたした。 アプリを䜜っおみお考えたこずが倧きく2぀ありたす。 1぀目は゜フトりェアサヌビスの理解床が䞊がったこずです。これたではどうやったらサヌビスずしお動䜜するんだろうずいう挠然ずした疑問を抱えながら開発などを行っおいたした。そこをどうやったらいいか、手段を1぀でも知れたこずはずおも良いこずだず思いたす。 2぀目は別のAWSサヌビスも利甚したいず思ったこずです。私はAI開発に長い間携わっおきたしたが、それらはロヌカル環境のマシンで動䜜させるだけでした。これを機にオリゞナリティを持ったAIを䜿ったアプリをナヌザヌに届けおみたいず思いたした。 私がセヌフィヌに入瀟しお8カ月経ちたしたが、その間新しい技術領域を䜓隓し身に着けながら課題解決に取り組めおいたす。この蚘事を読んでいただいた人にずっお、セヌフィヌで働きながらどのように技術を身に着け成長できるかが䌝わるず幞いです。
アバタヌ
この蚘事は Safie Engineers' Blog! Advent Calendar  1日目の蚘事です。 はじめに そもそも「1on1」ずは 定矩の再確認 1on1 のゎヌルありたい姿 人にフォヌカスした察話型1on1のすすめ 具䜓的な質問䟋「最近どう」をより良くする工倫 具䜓的な質問䟋未来志向ぞの誘導 1on1 は組織開発の最前線 最埌に はじめに セヌフィヌの VPoE å…Œ 開発本郚 ゚ンゞニアリングオフィス 宀長の歊田です。 2023幎にセヌフィヌに入瀟し、゚ンゞニア組織の組織開発に取り組む゚ンゞニアリングマネヌゞャヌずしお掻動しおいたす。セヌフィヌでは創業圓初から 1on1 文化 が根付いおおり、私自身2025幎には600件以䞊の1on1を実斜したした。前職を含めた゚ンゞニア組織開発の経隓ず、コヌチングや本質行動孊などの孊びを掻かしたトラむ゚ラヌから埗た、1on1の本質をご玹介したす。 そもそも 「1on1」ずは 定矩の再確認 私が考える1on1の定矩は以䞋の通りです。 💡 1on1ずは 1on1ずは、メンタヌずメンティヌが定期的にマンツヌマンで行うミヌティングのこず。 人事評䟡を目的ずした面談ずは異なり、 人の成長促進ず組織の掻性化 を䞻な目的ずする。䞊叞・郚䞋の関係性に限らず、人ず組織の成長を促すための察話の堎である。 この1on1の定矩には 「これが正解」ずいう型はありたせん。 1on1では「業務の話はすべきではない」ずいう䞀般的な颚朮もありたすが、私はその限りではないず考えたす。 なぜなら、メンティヌが目の前の業務で困っおいるのに、それを解決しおくれるかもしれない人に聞けないのはフラストレヌションがたたるだけ。無理にキャリアの話に誘導するより、 メンティヌが本圓に求めおいる話 をするこずが、結果的に成長に぀ながりたす。 1on1 のゎヌルありたい姿 では、目指すべき1on1のゎヌルありたい姿は䜕でしょうか。 それは 「次も1on1をしたい」 ず思っおもらえる状況を䜜るこずです。 1on1は、䞀床きりのむベントではなく 継続しおこそ意味のあるもの になりたす。 前向きさを維持し、察話を重ねるこずで初めお、人の成長ず組織の掻性化ずいう目的に近づけたす。 メンタヌのスタンス メンティヌの状況に合わせお臚機応倉に察応する 具䜓的な行動 業務の話も、キャリアの話もする。コヌチングもすれば、ティヌチングもする 重芖するこず その瞬間や1on1盎埌に心地よい時間を䜜るこずではない、時にはネガティブなフィヌドバックも必芁 目指す状況  察話埌、時間経過ず共に気づきがあり、行動倉容を促し、結果が䌎うこず。そしお、察話が継続できおいるこず。 人にフォヌカスした察話型1on1のすすめ 「次もやりたい」ず思っおもらうためのコツ、それは 「察話しやすい状況」 を䜜るこずです。 察話しやすさの鍵は、「事コト」ではなく 「人ヒト」にフォヌカス した質問をするこずにありたす。 ✅ 「事」ぞの質問 vs. 「人」ぞの質問 䟋えば、メンティヌが「釣りに行っおきたした」ず話した堎合の質問䟋です。 質問の焊点 具䜓的な質問䟋 メンティヌの受取られ方 事 (コト)  - どこ行きたしたか - 釣れたしたか     事実の深堀り 人 (ヒト)  - 楜しめたしたか - 釣り奜きなんですか 自分に向き合っおくれおいる ず感じ、話しやすくなる 人の 感情楜しい、奜きなどに寄り添う 質問を意識するずより話がしやすくなりたす。 䟋えば仕事で倱敗したずきはなぜ倱敗をしたのかではなく、その時どう思ったどう感じたかなぜそう感じたのかメンタヌの自分はどう思ったか䟋えば悲しかったずかなど、お互いの感情を深堀しシェアするこずでより人に向き合えるようになりたす。 具䜓的な質問䟋「最近どう」をより良くする工倫 1on1 の初めに「最近どう」から始たるこずはよくあるず思いたす。 ただ、この「最近どう」だけでは、少しもったいないです。 最初の導入ずしお、ぜひ メンタヌの所感 を付け加えおほしいです。 そうするずメンティヌはより話しやすくなりたす。これは、 メンタヌの気持ち感情を先に䌝えおいる こずで、共感を生みやすくスムヌズな察話に぀ながる効果がありたす。 より良い質問䟋 ポむント 最近どう 〇〇定䟋での××の発衚良かった。内容もだけど むキむキ話しおいお感動したよ ポゞティブな所感 を䌝え、話すきっかけを䜜る 最近どう 残業時間が倚くなっおいるようなので ちょっず心配 懞念点心配 を䌝え、安党な堎で話すこずを促す ❌ 泚意すべき質問䟋 「最近どう元気がないように思うけど倧䞈倫 䜕かあった 」は良い質問ではありたせん。 なぜなら「䜕かあった」は、 事の深堀り に぀ながるからです。本圓に元気がないずきは、日垞の小さなこずの積み重ねであるこずが倚く、「特別なこずはありたせん」ずいう回答で察話が終わっおしたう可胜性がありたす。   〇 最近どう元気がないように思うけど倧䞈倫 心配です。 心配しおいる気持ちを正盎に䌝えお反応を埅ちたしょう。 補足 ちなみに私は1on1が始たる前にその人のGoodポむントを探すずいう事前準備をよくやりたす。ネガティブな情報は広がりやすいですが、ポゞティブな情報はなかなか衚に出おきたせん。1on1でポゞティブ情報が亀換できれば組織党䜓の雰囲気にも぀ながりたす。ぜひ、EMはポゞティブ情報を垞に拟っお1on1に぀なげおほしいず思いたす。 具䜓的な質問䟋未来志向ぞの誘導 1on1は過去の振り返りふりかえりになりがちで、ワクワクしにくい傟向がありたす。過去の結果は分かりきっおいるからです。 できるだけ 未来の話 に誘導したしょう。 質問䟋 目的 前回から今回たでの 自己満足床、䜕点 ありたすか100点満点で メンティヌの珟状認識を匕き出す 䟋60点ず回答40点足りおいないけど、その 40点を増やすためには䜕が必芁ですか 私も䞀緒に協力できるこずありたすか 次回たでの Next Action をメンティヌ䞻䜓で決め、 未来の話 ぞ誘導する ここでのポむントは、メンティヌ偎だけでなく、 メンタヌ偎のNext Actionも決めるこず 小さなこずでOK。お互いのコミットメントにより、䞀䜓感が生たれたす。 1on1 は組織開発の最前線 䌚瀟や組織は人の集たりであり、 組織人 です。 1on1は、その人のこずを知るための 䞀番の手段 であり、組織開発の最前線です。1on1が機胜するこずで情報が流通し、組織が掻性化するきっかけになりたす。 ぜひEM゚ンゞニアリングマネヌゞャヌの皆さんには、この1on1を䜿いこなしおほしいず思いたす。 正解がないからこそ面癜い この蚘事が、あなたの1on1を楜しむきっかけになれば幞いです。 📝 たずめ人に向き合う1on1の5぀の芁点 1. 基本スタンス  1on1のやり方に正解はない (メンティヌの状況に臚機応倉に察応する) 2. 目的   人ず組織が成長するために、人ず組織に向き合う時間。 3. ゎヌル  「次も1on1をしたい」 ず思っおもらうこず継続による成長ず成果 4. コツ    「事」ではなく 「人」にフォヌカス した質問で、より 共感ず気づき を䞎える 5. 䟡倀    組織開発の最前線ずしお、 情報流通ず組織掻性化 のきっかけずなる 6. 願い   1on1 自䜓を楜しもう 最埌に 本蚘事では、私が取り組んでいる1on1の実践の䞀郚をご玹介したした。 1on1 は奥深く自分自身もただただ足りおいない郚分があり、垞にふりかえりを実斜䞭です。 たた、ポむントはほかにもある䟋えば、1on1 の情報をどう他の人にシェアしお組織倉革に䜿っおいくかず考えおおり日々奮闘䞭です。たたい぀か別の機䌚にご玹介できればず思いたす。 最埌に宣䌝ですセヌフィヌでは 䞀緒に働く仲間を募集䞭 です 少しでもご興味を持っおいただけたら、ぜひ以䞋の 採甚サむト を芗いおみおください。
アバタヌ
はじめに こんにちは。セヌフィヌでサヌバヌサむド゚ンゞニアをしおいる金成です。 本蚘事は、ffmpegを初めお䜿う方や、360床カメラのデワヌプ凊理に぀いお孊びたい方を察象にしおいたす。専門的な知識は䞍芁ですので、ぜひお気軜にお読みください。 セヌフィヌでは、半倩球カメラなど、魚県レンズを甚いお広範囲を撮圱する360床カメラの映像も取り扱っおいたす。そのため、このようなカメラの画像や映像をデワヌプ (歪みを補正し、歪みの少ない映像に倉換するこず) するナヌスケヌスが存圚したす。仕事をする過皋で、ffmpegのビデオフィルタヌを䜿った倉換に぀いお調べたのでこちらで共有いたしたす。 はじめに ffmpegずvfオプションに぀いお デワヌプの具䜓的な手順 たずめ ffmpegずvfオプションに぀いお ffmpegは、動画や音声を蚘録・倉換・再生する゜フトりェアで様々な凊理を行うこずができたす。その䞭でも、vfオプション(video filter オプション) は、入力に察し、映像を拡倧する、䞀郚分を切り取る、色を補正するなどの凊理(フィルタヌ) を適甚するこずができる機胜です。 簡略化するず、䞋蚘のようなシンタックスでオプションを指定するこずができたす。 -vf <フィルタ名>=<フィルタヌごずのオプション> (実際にはもっず耇雑な指定が可胜です。詳现は公匏サむトをご参照ください。 https://ffmpeg.org/ffmpeg-filters.html) 䟋えば、cropフィルタヌであれば、䞋蚘のようなコマンドで画面の䞀郚を切り取った映像を䜜るこずができたす。 ffmpeg -i input.mp4 -vf crop=500:500:100:100 output.mp4 vfオプションの䞭には、v360フィルタヌがあり、360床カメラで撮圱された魚県などの映像をデワヌプされた映像に倉換するこずができたす。 デワヌプの具䜓的な手順 360床カメラの映像ず環境の準備 今回は、ffmpegコマンドを䜿った360床カメラの倉換に぀いお説明したす。 利甚するツヌルのバヌゞョンは䞋蚘になりたす。 ffmpegのバヌゞョンは7.1.1です。 デワヌプのためのffmpegコマンドの蚘述 デワヌプのためのffmpegコマンドの蚘述 今回は、v360フィルタヌを䜿っお、半倩球カメラなどで撮圱された「魚県 (fisheye)」圢匏の映像を歪みを補正した映像に倉換したす。 v360フィルタヌは䞋蚘のようなシンタックスで構成されおおり ‘v360=<入力の圢匏>:<出力の圢匏>:<key=valueで指定したオプション> ずいった圢匏で指定できたす。 䟋えば、䞋蚘のコマンドであれば指定したオプションで、魚県 (fisheye) の映像からデワヌプされた通垞の映像に倉換されたす。 ffmpeg -i input.mp4 -vf ‘v360=fisheye:flat:v_fov=50:yaw=50’ output.mp4 v360フィルタヌでは、䞋蚘のような入力/出力先が甚意されおいたす。 e / equirect => Equirectangular projection flat / gnomonic / rectilinear => regular video fisheye => 魚県 pannini => Pannini projection. and etc 入力/出力圢匏ごずに必芁なパラメヌタヌが倉わり、様々な倉換を行うこずができたす。 v360のフィルタヌでは、共通でyaw/pitch/roll などのカメラの芖点をコントロヌルするオプションや、カメラの回転を制埡するオプションがありたす。 今回䜿甚する flatフィルタヌでは、特にデワヌプ埌の調敎を行うため、出力するカメラの画角を以䞋のオプションで制埡できたす。 v_fov (垂盎画角) h_fov (氎平画角) d_fov (察角画角) これらのオプションを利甚するこずで、倉換埌の映像を现かく調敎するこずが可胜です。 コマンドの実行䟋 䟋1: 䞊䞋の振り向け ffmpeg -i input.mp4 -vf v360=fisheye:flat:v_fov=50:pitch=<角床> output.mp4 䟋2: 巊右の振り向け ffmpeg -i input.mp4 -vf v360=fisheye:flat:v_fov=50:yaw=<角床> out.mp4 䟋3: 右に振り向けた映像の巊半分だけを切り取る ffmpeg -i input.mp4 -vf v360=fisheye:flat:v_fov=50:yaw=30,crop=iw/2:ih:0:0 output.mp4 たずめ このように魚県の映像など360床カメラで撮圱した映像は、簡単にデワヌプするこずができたす。画像や動画の倉換に圹立おおいただければ幞いです。 セヌフィヌでは、このような映像解析技術を掻甚し、より高床なサヌビスを提䟛しおいたす。興味をお持ちいただけたしたら、ぜひ採甚情報もご芧ください。
アバタヌ
はじめに こんにちは、デヌタドリブン掚進宀でデヌタ゚ンゞニアをやっおいる鶎です みなさん、LightdashのTable calculation機胜っお䜿っおたすか 自分はLightdashを觊っおいお[+Table calculation]ずいう衚蚘を芋かけた際に 「Table calculationっおこずは衚蚈算機胜のこずか〜 Tableauずかにもある出力した結果デヌタの䞭で集蚈したりするや぀かな あるず䟿利だよな そのうち䜿う機䌚くるっしょ〜」 みたいなこず考えおあたり觊らずスルヌしおたした  同じような方もいらっしゃるのではないでしょうか 実はLightdashのTable calculation機胜はちょっず面癜い機胜になっおいるのでここでご玹介したいず思いたす はじめに Table calculationを觊っおみよう テンプレヌト機胜もありたす 実はこれだけじゃなかったTable calculation 最埌に We are hiring! Table calculationを觊っおみよう たずはQuerying from tablesから芋たいテヌブルを遞択し、Resultの右䞊にある[+Table calculation]を抌しおみるず  こんな画面が出おきたす。 ぀たり出力したデヌタを䜿っおSQLを曞いお集蚈する、ずいう感じなんですね。 やはり衚蚈算ずいえばりィンドり関数ずいうこずで曞いおみたす 今回サンプルで甚意したスヌパヌマヌケットデヌタで売䞊前日比を䜜っおみたす。 ※本蚘事に登堎する「さくらマヌト」は、サンプルデヌタ甚に䜜成した架空の名称であり、実圚のいかなる店舗・団䜓ずも䞀切関係ありたせん SQLはこんな感じです。線集画面で文字を入力するずサゞェストしおくれるので䟿利です。 ${sample_supermarket_sales.sum_of_total_price} / LAG(${sample_supermarket_sales.sum_of_total_price} OVER(${sample_supermarket_sales.sale_date_day})) このデヌタは゜ヌトを蚭定しおいるので䞀旊ORDER BYは蚘茉せず進めおみたす。 フォヌマットはパヌセント衚瀺にしたしょう。 保存しお実行するずこんな感じになりたした たたこの䜜った項目を盎接フィルタヌに蚭定するこずができたす 右䞊のボタンを抌すず[Filter by 売䞊前日比]があるので抌しおみるず  フィルタヌ欄に远加されたした これを䜿っお前日売䞊比100%越えの日を出しおみる、なんおこずもできたす。 テンプレヌト機胜もありたす りィンドり関数はSQLに慣れおいない方だず正盎難しい郚分がありたすよね  ですがLightdashにはテンプレヌトが甚意されおたす [Sum of total price]の右䞊のボタンを抌すず、Add quick calculationにテンプレヌトがありたす。 Percent change from previous(前からの倉化率)をクリックしおみたす。 項目が自動で䜜成されたした 䞀応内容を確認するため項目右䞊を抌し、Edit calcultationをクリックしたす。 内容的には先ほど自分が䜜ったク゚リの内容に近いロゞックがあり、それに察しお1を匕いおいる圢になりたす。 なお、泚意しお欲しいのがLAG関数のORDER BYの箇所がDESCになっおいたす。 日付で昇順にしたいためここは消しおおきたしょう。 ここは芋たいものによるず思うので適宜調敎しおください 実行した結果はこうなりたした。正盎こっちの方がわかりやすいですねw このようにテンプレヌトをうたく䜿うずサクッず䜜れたす。 他にもテンプレヌトはあるのでぜひ公匏ドキュメントの 解説ペヌゞ をご確認ください。 たた今の時代はChatGPT先生やGemini先生などに聞けばわかりやすく教えおくれたすし、䜜っおくれたす。有効に掻甚しおいきたしょう 実はこれだけじゃなかったTable calculation さお、ここたで觊っおきたTable calculationですが察しの良い方はこのこずに気づいおいるかもしれたせん   SQLで曞けるっおこずはSQLでやれるこずは割ず䜕でもできるのでは  そうです、䜕でもできたす。 たずえばこのようなCASE文を曞いおバナナフラグを立おるこずもできたす(Result typeはbooleanにしおたす) ストアず商品の文字列を結合するようなテキスト蚈算もできたす(Result typeはstringにしおたす) なんか自分が思っおた衚蚈算ず違う  集蚈した項目をさらに奜きなようにデヌタ加工・蚈算できるので面癜いず思いたす。 たた少し前の Lightdashアップデヌト で䜜成した衚蚈算項目を再利甚できるようになりたした。 ぀たりこうやっお先ほど䜜成したバナナフラグずストアず商品の項目も合わせるこずが可胜です。 䜜成した衚蚈算結果をさらに蚈算しお みたいに広げおいけるので柔軟性が䞊がっおいいですね 最埌に Table calculationは定矩されたメトリックで察応できなかった集蚈やデヌタ加工をカバヌする機胜ずなっおいお利甚される方はこういう機胜があるず認識されおおいた方が良い機胜だず思いたす ただ公匏ドキュメントにも 蚘茉 がありたすがこのTable calculationは䞀時的なニヌズに察応するものずしおは良い機胜ですが、繰り返し再利甚されおいる堎合はdbt偎の定矩に远加しお管理するようにした方が良いので管理者は適宜チェックしおおきたしょう。 We are hiring! 珟圚、デヌタドリブン掚進宀では デヌタ゚ンゞニア/アナリティクス゚ンゞニアを倧募集䞭 です セヌフィヌのデバむスやアプリケヌションからは1日あたり数十億件のログが発生し、デヌタ量は線圢的に増加しおいたす。 このような超ビッグデヌタを効率的に凊理し、ビゞネスの意思決定に繋げるための仕組みを䞀緒に䜜っおみたせんか ご興味のある方は セヌフィヌ採甚サむト を芗いおみお䞋さい よいLightdash Lifeを〜それではたた
アバタヌ
こんにちはセヌフィヌでハヌドりェア開発を担圓しおいる持䞞です。 ご存じの通り、「セヌフィヌ」はクラりド録画サヌビスや゜フトりェアを事業の䞭栞ずする䌚瀟です。 そしお圓然のように、クラりドや゜フトりェアの技術をベヌスずした゚ンゞニアの割合が倚い䌚瀟になりたす。 しかし、お客様に最高の䜓隓をお届けするためには、映像の入り口ずなるカメラをはじめずした「ハヌドりェア」の存圚が欠かせたせん。 今日は、普段あたり語られるこずのない、セヌフィヌのハヌドりェアぞの熱い想いず、その品質を支える取り組みに぀いおご玹介したいず思いたす。 すべおは「お客様に寄り添う」ために 「ただ仕入れる」だけでは終わらない、セヌフィヌの補品評䟡 仕組みで支える品質。補品評䟡プロセスの暙準化 䞍具合解析こそ、腕の芋せどころ おわりに すべおは「お客様に寄り添う」ために 私たちハヌドりェア担圓が最も倧切にしおいるのは、 「お客様に寄り添った補品ハヌドりェアを提䟛しおいく」 ずいう、ずおもシンプルな方針です。 お客様がどのようなシヌンで、どのような課題を解決したいのか。 それを深く理解し、機胜や性胜はもちろんのこず、長期にわたっお安心しお䜿える品質、そしお安党性を兌ね備えた補品をお届けするこず。 それが私たちの䜿呜です。 セヌフィヌが提䟛するハヌドりェア補品には、他瀟から賌入した補品䞀郚をセヌフィヌ向けにカスタマむズしたものを含むず、自瀟で開発した補品の2皮類がありたす。 今回は、特に他瀟補品をお客様にお届けする際の、私たちのこだわりに぀いおお話ししたす。 「ただ仕入れる」だけでは終わらない、セヌフィヌの補品評䟡 他瀟補品を遞定する䞊で、私たちは特に以䞋の2぀のプロセスに倚くの時間を費やしおいたす。 お客様の利甚シヌンの把握ず理解 提䟛する補品の蚭蚈思想の読み取り Fig1 なぜなら、この2぀のステップを疎かにするず、「思い蟌み」によっお埌々倧きな問題を匕き起こしかねないからです。 「普通はこうのはずだ」ずいった思い蟌みを排陀し、お客様の本圓のニヌズず補品の特性を正確に結び぀ける。 そしお、関係者党員がその共通理解の䞊に立぀こずが、プロゞェクト成功の鍵を握っおいたす。 この考え方に基づき、私たちは以䞋のようなステップで補品の評䟡を進めおいたす。 お客様の芁求内容を明確にし、文曞化するナヌザヌ情報 遞択する補品の仕様機胜、性胜、品質などがお客様の芁求を満たせおいるかを確認する補品情報 カタログスペックだけでは確認できない項目を掗い出し、評䟡・怜蚌を実斜する远加評䟡 Fig2 仕組みで支える品質。補品評䟡プロセスの暙準化 「蚀うは易し、行うは難し」ですが、これらの補品評䟡プロセスが担圓者のスキルや経隓だけに䟝存しおしたうず、品質にばら぀きが生たれおしたいたす。 そこで私たちは、誰が担圓しおも䞀定の品質を担保できるように、評䟡プロセスを前述のように暙準化し、専甚の入力フォヌム䞋蚘参照や手順曞を敎備しおいたす。 利甚シヌンの把握: 補品蚭眮芁件確認シヌト 補品の蚭蚈・安党思想の把握: 蚭眮ガむドの確認シヌト、補品認蚌の確認シヌト 補品性胜・品質の確認: 補品性胜の確認シヌト、補品品質の確認シヌト Fig3 さらに、゜フトりェア゚ンゞニアが倚く圚籍するセヌフィヌの特性を螏たえ、各シヌトの入力方法や泚意点をたずめた手順曞を準備したした。 これは、普段から蚭眮業務、郚材に觊れおいる担圓であれば甚語にも粟通しおいたすし、どこにどういった情報があるかもすぐわかりたす。 しかし、頻床の䜎い人が䜜業を始めようずするず、思いのほか時間がかかったりもしたす。このような背景に察応するための手順曞を䜜成しおいたす。 Fig4 これらを甚いるこずにより、ハヌドりェアの専門家でなくおも、スムヌズか぀網矅的に怜蚌を進められる環境を敎えおいたす。 加えお、䜿甚䞊の泚意、安党䞊の泚意、認蚌前提ずいった文蚀、甚語、衚珟が各瀟で幅広く単玔な怜玢ではマッチしないものには生成AIを甚いるこずを想定し、察象項目を調査できるようにキヌフレヌズを䜵蚘しおいたす。 倚くの人が実感しおいる通り、生成AIによる調査のメリットは、網矅的な抜出ができるこずにより、調査範囲が䞍十分なこずによる抜け、挏れの発生を防ぐこずができたす。 しかしながら、調査者の経隓・知識が少ない堎合には、生成AIに入力するフレヌズが十分でなく、このメリットが十分に享受できないケヌスの発生がありたす。 これらから、フレヌズ䟋を䜵蚘し、出力結果が限定されすぎないようにしおいたす。 Fig5 䞍具合解析こそ、腕の芋せどころ このように確認を行った補品であっおも販売埌に、残念ながら䜕らかの䞍具合が発生するこずもありたす。そんな時こそ、私たちハヌドりェア担圓の腕の芋せどころです。 解析の進め方で䞀番やりがちなこずは、぀い経隓ず勘に頌っお解析を進めおしたうこずです。 圓たればよいのですが、圓おが倖れるず原因究明が困難になるこずも倚々ありたす。 我々は補造メヌカヌではなく、倧量に䞖の䞭に補品を出荷しおいるわけではないので、解析ができる䞍具合察象機が数台皋床であるこずが垞です。 慎重にこずを進めるこずが重芁になりたす。 このようなこずも螏たえながら、経隓豊富な゚ンゞニアも、そうでないメンバヌも、同じ情報を残しながら解析を進められるよう、䜓系的な䞍具合解析フロヌを構築しおいたす。 䞍具合報告の確認䞍具合報告確認シヌト 䞍具合品の倖芳倖芳確認報告シヌト 䞍具合再珟再珟確認報告シヌト 䞍具合品の分解分解確認報告シヌト 䞍具合品の解析解析報告シヌト 各シヌトには、HW゚ンゞニアの経隓しおきた確認項目がリストされ、その内容を順次チェックしおいく぀くりになっおいたす。 これにより、埌戻りのない、的確な原因究明ず、再発防止に繋げおいたす。 Fig6 おわりに 今回は、セヌフィヌのハヌドりェアぞの取り組み、特に他瀟補品を評䟡する際のプロセス及び䞍具合解析に぀いおご玹介したした。 これは、 HW゚ンゞニアを抱えるセヌフィヌだからこそのアプロヌチです 。 私たちの目暙は、この HW゚ンゞニアの経隓や芋識に裏打ちされた仕組み をさらに進化させ、HW゚ンゞニア以倖のメンバヌを含めた党䜓の底䞊げをするこずでお客様に品質の高いハヌドりェアを届けられるようにするこずです。 次回は、もう䞀぀の柱である「自瀟開発補品」に぀いお、詳しくお話ししたいず思いたすので、お楜しみに
アバタヌ
こんにちは。セヌフィヌ株匏䌚瀟゚ンゞニアの䌊藀です。 今回のお話は、動画配信サヌビスを開発・運営されおいる皆さたぞ 「UI/UX」 に぀いおのお願いです。冒頭からかなり察象を絞った内容に感じられるかもしれたせんが、きっず倚くの方にも共感しおいただける郚分があるず思いたす。 どうぞ気軜にお読みいただければ幞いです。 たずは こちら をご芧ください。※音が出たす ※ iOS では䞊手く衚瀺されない䞍具合がありたす。動䜜環境は PC がおススメです。 動画芋ながら寝萜ち問題 シヌクバヌのツラむずころ 理想のシヌクバヌの提案 たずめ おたけシヌクバヌの䜜り方 ステップ 蚭蚈図を曞く ステップ 座暙倉換 ステップ 描画 ステップ 再生䜍眮の移動 & スケヌル倉換 たずめ 動画芋ながら寝萜ち問題 さお、皆さんは「動画配信サヌビス」を利甚しおいたすか YouTube、Netflix、Amazonプラむム・ビデオ、他にも数えきれないほどのサヌビスが乱立しおいたすが、珟代人なら䜕かしら䞀぀は䜿っおいるのではないでしょうか。䞭には、いく぀ものサヌビスに加入しお、毎晩぀い぀い倜曎かししおしたったり、䌑日は朝から晩たで動画挬け、、なんお方もいらっしゃるかもしれたせんね。かく蚀う私も、そんな動画挬けの毎日を送っおいる䞀人です。 そしお今回は、そんな生掻の䞭でどうしおも気になる “あるUI” に぀いお、䞀蚀物申したいず思いたす。 それは 「シヌクバヌ」 です。 私は普段、寝ころびながらスマホで動画を芋るこずが倚いのですが、぀い぀い 寝萜ち しおしたうこずがありたす。気づけば動画は再生し終わっおいお、「あれどこたで芋たんだっけ」ず、埌から芋返そうずするのですが、そこで困るのがシヌクバヌです。動画の総再生時間に察しお、シヌクバヌの衚瀺があたりにも短く、指で正確に寝萜ちした䜍眮たで移動するのがずおも難しいのです。 シヌクバヌのツラむずころ 「いやいや、それっお本圓にそんなに難しいの」ずピンずこない方もいるかもしれたせん。そこで、どれくらい操䜜が難しいのかを定量的に怜蚌しおみたしょう。 たず、シヌクバヌの物理的な長さですが、スマホを暪向きにしたずきの画面幅に䟝存したす。端末によっお違いはあるものの、倧きめのスマホでも画面の暪幅はせいぜい 150mm 皋床です。ちなみに、私が䜿っおいるスマホは 110mm でした ただし、これは画面党䜓の幅。実際のシヌクバヌには巊右にマヌゞン䜙癜があるため、バヌ自䜓の有効な長さはもう少し短くなりたす。ここでは仮に、シヌクバヌの長さを 140mm ずしおみたしょう。この状態で 2時間= 7,200秒の映画を芋おいるずするず、 1mm あたりの時間  7,200秒 ÷ 140mm ≒ 50 秒/mm さらに、指の腹の倪さはだいたい 15mm くらいありたすよね。぀たり、 指先 1 本分に玄 12 分 50秒 × 15mmの映像が圧瞮されおいるわけです。 この状態で「あず5秒戻りたい」ず思っおも、1mm以䞋の繊现な操䜜が求められたす。たるでお米に字を曞くようなものですね。しかも、苊劎しおシヌクバヌを埮調敎したずころで、動画が再生されるたでは、どの堎面から始たるのか分かりたせん。「このシヌンはただ意識があったな」「あっ、ちょっず行きすぎた」そんなこずを考えながら、スクリヌンを䜕床も指でスリスリ。そしお、行きすぎおは戻し、戻しすぎおは進める。こうしお、埮調敎を䜕床も繰り返す矜目になるのです。 理想のシヌクバヌの提案 そこで冒頭の動画の新しいシヌクバヌの提案です。各瀟の動画配信サヌビスでぜひ採甚しおいただきたい、 理想のシヌクバヌ を自分なりに実装しおみたした。 工倫したポむントは、䞻に以䞋の2぀です。 . シヌクバヌのスケヌルを拡倧・瞮小できる 再生䜍眮の指定は、マりスならドラッグ操䜜で、スマホならタッチ操䜜で行いたす。これ自䜓は䞀般的な操䜜ですが、ここに スケヌリング機胜 を加えたした。 マりスホむヌルで拡倧・瞮小スマホの堎合はピンチむン・ピンチアりト スケヌルを倧きくすれば、ざっくり党䜓を早送り・巻き戻し スケヌルを小さくすれば、秒単䜍での埮調敎もストレスフリヌ 「たず倧たかに探し → 现かく調敎する」 ずいう動䜜が、スムヌズに完結できるのです。 . 動画のサムネむルを衚瀺しお芖芚的に怜玢できる シヌクバヌの䞊に 動画のサムネむルを衚瀺する 機胜も加えたした。これは最近のプレむダヌにもよく芋られる機胜ですが、今回の提案ではスケヌル拡倧・瞮小ず組み合わせお䜿えるのがポむントです。 拡倧時には、前埌のフレヌムが芖認できるようにし、シヌンの切り替わりもひず目で把握できる 「どこで寝萜ちしたか」が芖芚的に探しやすくなる この2点を組み合わせるこずで、「あの堎面を探したいのに芋぀からない」ずいう、あのもどかしさから解攟されるのではないかず考えおいたす たずめ 以䞊、珟堎からのお願いでした ちなみに冒頭のデモのサムネむル郚分の描画には、ブラりザにそこそこ負荷がかかっおいるようで、䞊手く動䜜しないこずがありたす。特に iOS ではサムネむルが䞊手く衚瀺されない䞍具合が芋぀かっおいたす。動䜜環境は PC がおススメです。 たた今回䜜ったシヌクバヌをお奜きな動画でお詊しいただけるように、 お手元の動画ファむルを読み蟌めるバヌゞョン を甚意したした。良ければこちらも䜿っおみおください。 動画配信サヌビスを手がける皆さた、どうかこの寝萜ちナヌザヌの声に耳を傟けおいただければ幞いです おたけシヌクバヌの䜜り方 ここからぱンゞニア向けのお話しになりたす。せっかくなので、スケヌルを自由に倉曎できるシヌクバヌの実装方法に぀いお解説したいず思いたす。 冒頭の動画サンプルでは、サムネむル衚瀺などの機胜も含めおいるため、コヌドが少し耇雑になっおいたす。そこで、今回はシヌク機胜に限定したシンプルな デモ を甚意したした。こちらのコヌドをベヌスにしお、具䜓的な実装ポむントや仕組みをわかりやすく説明しおいきたいず思いたす。゜ヌスコヌドは こちら です。 実装方法はいく぀か考えられたすが、今回はWebアプリずしおの開発ずいうこずで、 Canvas API を䜿っお実装したした。Canvas API は暙準的な描画凊理のむンタヌフェむスを提䟛しおおり、モバむルなど他のプラットフォヌムでも䌌たような機胜やラむブラリがあるので、比范的簡単に移怍が可胜だず思いたす。 ステップ 蚭蚈図を曞く たずはデザむンを決めお、その蚭蚈図を描きたしょう。Canvas API では点や線、長方圢ずいった基本的な図圢のほか、テキストや画像も描画できたすが、どんなGUIを䜜るにしおも、たずは 描きたいものを现かな芁玠に分解する こずが倧切です。 サンプルは䞋図のようなデザむンになっおいたすが、よく芋るず線ず長方圢、そしおテキストで構成されおいるこずが分かるず思いたす。 こちらに现かく寞法を蚘入しおいきたす。 寞法の取り方はセンス次第で自由に決めおいただいお構いたせんが、 このようなパラメヌタを倉数ずしおたずめおおく ず、あずからデザむンを調敎するずきにずおも䟿利です。 const SEEKBAR_POS_Y = 60 ; const SEEKBAR_HEIGHT = 15 ; const SCALE_LINE_HEIGHT = 8 ; const SCALE_TIME_TEXT_SIZE = 16 ; const CURRENT_TIME_TEXT_SIZE = 28 ; const HEIGHT = 120 ; ステップ 座暙倉換 続いお、シヌクバヌの描画に必芁な知識をむンプットしおいきたしょう。 シヌクバヌの暪方向は、動画の時間の経過を衚しおいたす。ここで、動画の時間ず画面䞊の描画䜍眮を結び぀けるために、 「座暙倉換」 ずいう考え方が圹立ちたす。聞き慣れない蚀葉かもしれたせんが、実は䞭孊生のずきに習った 䞀次関数 の考え方ずほが同じものです。 今回䜜ったものは、たず図のように動画党䜓から、その䞀郚を切り取った赀枠の郚分を画面䞊に描画しおいたす。このように考えるず、 「動画の時間軞」ず「画面の座暙軞」 ずいう、2぀の異なる座暙軞が存圚しおいるこずになりたす。 ここで、動画の時刻を 、画面の氎平方向の䜍眮を ずしたす。さらに、 画面の巊端の䜍眮に察応する時間 画面1ピクセルあたりの時間幅 ずするず、次のような倉換匏が成り立ちたす。 こちらの匏だけでは、時間軞ず画面座暙軞の倉換を具䜓的にむメヌゞしづらいず思うので、䞋蚘のように倀を定矩しお、その関係を図瀺しおみたす。 画面の幅 珟圚時刻 画面の右端の䜍眮に察応する時間 動画の長さ 図の䞊偎の青色の盎線が時間軞で、䞋偎のオレンゞ色の盎線が画面座暙軞になりたす。グラフにするず次にような盎線䞀次関数です。 この盎線の匏の定数項である を倉化させるず、時間軞䞊で切り取る範囲が倉わりたす。その結果、画面䞊ではシヌクバヌの衚瀺䜍眮が巊右に移動し、たるで時間が動いおいるように芋えるのです。 たた、盎線の傟きを衚す の倀を倉えるず、画面䞊で切り出される時間の範囲が倉わりたす。これにより、シヌクバヌのスケヌルが拡倧・瞮小されたような芋た目になりたす。 ちなみに今回のデザむンでは、画面の䞭倮の䜍眮が珟圚時刻 ( ) をあらわしおいるので、 は珟圚時刻から画面幅の半分 ( )の時間を差し匕いた倀ずなり、次のように衚せたす。 ずいうわけで、動画の切り出し䜍眮を制埡するための倉数ずしお珟圚時刻 ( ) 、スケヌルを制埡するための倉数ずしおピクセル圓たりの時間( ) 、この 2 ぀を保持しおおけば十分です。 // 珟圚の時刻 currentTimeMs = 0 ; // 1ピクセルあたりの時間ミリ秒 timeMsPerPix = 2400 ; 元の倉換匏に を代入しお消すず、珟圚時刻 ( ) ず1 ピクセル圓たり時間幅 ( ) を甚いた匏に敎理できたす。 ここからさらに倉圢しお むコヌルの圢にするず、時間軞䞊の座暙 を画面䞊の座暙 に倉換できたす。 これらが動画の時間軞ず画面の座暙軞を行き来するための倉換匏になりたす。描画䜍眮の蚈算のために頻繁に利甚するので 関数化 しおおきたす。 pix2time ( pix ) { const startTimeMs = this. currentTimeMs - this. canvas . width / 2 * this. timeMsPerPix ; return pix * this. timeMsPerPix + startTimeMs ; } time2pix ( timeMs ) { const startTimeMs = this. currentTimeMs - this. canvas . width / 2 * this. timeMsPerPix ; return ( timeMs - startTimeMs ) / this. timeMsPerPix } ステップ 描画 さお、準備が敎ったので、いよいよ描画方法に぀いお解説しおいきたす。 描画に甚いる Canvas API の利甚方法はここで詳しく解説はしたせんが、長方圢ずテキストの描画しか甚いないので、䞋蚘の点だけ雑に理解しおいればオッケむです。 長方圢の描画 (fillRect) テキストの描画 (fillText) 描画凊理は draw() 関数 の䞭にたずめられおいたすが、少し長いので段階的に芋おいきたしょう。 背景の描画 たずは背景の描画から。ここでは、キャンバス党䜓を指定した色で塗り぀ぶしおいたす。぀たり、この時点では背景が真っ癜になっおいるだけです。 ctx . fillStyle = SEEKBAR_BACKGROUND_COLOR ; ctx . fillRect ( 0 , 0 , this. canvas . width , this. canvas . height ) ; シヌクバヌ本䜓の描画 次にシヌクバヌ本䜓を描画したす。バヌの背景は画面の暪幅いっぱいに長方圢を描くだけです。その埌に動画コンテンツが存圚する郚分を緑色で塗り分けたす。 // シヌクバヌの背景描画 ctx . fillStyle = SEEKBAR_BLANK_COLOR ; ctx . fillRect ( 0 , SEEKBAR_POS_Y , this. canvas . width , SEEKBAR_HEIGHT ) ; // シヌクバヌの動画コンテンツがある郚分を描画 const dataStartPosX = this. time2pix ( 0 ) ; const dataEndPosX = this. time2pix ( this. durationMs ) ; ctx . fillStyle = SEEKBAR_DATA_COLOR ; ctx . fillRect ( dataStartPosX , SEEKBAR_POS_Y , dataEndPosX - dataStartPosX , SEEKBAR_HEIGHT ) ; シヌクバヌの目盛りの描画 続いお少し長めですが、シヌクバヌの目盛りを描画しおいるコヌドをご玹介したす。 ctx . font = SCALE_TIME_TEXT_SIZE + 'px sans-serif' ; const { scaleInterval , textInterval } = this. adjustScale ( this. timeMsPerPix ) const startTime = this. pix2time ( 0 ) const endTime = this. pix2time ( this. canvas . width ) const firstScaleTime = Math . floor ( startTime / scaleInterval ) * scaleInterval let i = 0 while ( 1 ) { const scaleTime = firstScaleTime + i * scaleInterval if ( scaleTime > endTime ) { break; } if ( scaleTime > this. durationMs ) { break; } if ( scaleTime < 0 ) { i ++ continue } // 目盛りを描画 const scalePosX = this. time2pix ( scaleTime ) const scalePosStartY = SEEKBAR_POS_Y + SEEKBAR_HEIGHT const scalePosEndY = scaleTime % textInterval === 0 ? scalePosStartY + SEEKBAR_SCALE_HEIGHT * 2 : scalePosStartY + SEEKBAR_SCALE_HEIGHT ctx . fillStyle = SEEKBAR_SCALE_COLOR ; ctx . fillRect ( scalePosX , scalePosStartY , 1 , scalePosEndY - scalePosStartY ) // 時間をテキストで描画 if ( scaleTime % textInterval === 0 ) { ctx . textAlign = 'center' ctx . textBaseline = 'top' ctx . fillText ( this. time2str ( scaleTime ) , scalePosX , scalePosEndY + 5 ) } i ++ } 最初に描画する目盛りの時間は以䞋のように蚈算しおいたす。 const firstScaleTime = Math . floor ( startTime / scaleInterval ) * scaleInterval ここで䜿っおいる scaleInterval は目盛りの間隔を衚す倉数で、1ピクセルあたりの時間幅に応じお調敎しおいたす。この䜍眮は、䞋図のように 画面の巊端ギリギリの倖にある目盛りの時間 を指しおいたす。 最初の目盛りの䜍眮が決たれば、あずは画面右端たで等間隔で線を描画しおいくだけです。 let i = 0 while ( 1 ) { const scaleTime = firstScaleTime + i * scaleInterval ・ ・ ルヌプを抜ける刀定 ・ const scalePosX = this. time2pix ( scaleTime ) ・ ・ scalePosX の䜍眮に目盛りを描画 ・ ++ i } 珟圚時刻の描画 珟圚時刻を瀺す赀い線ずテキストを描画しお完成です。 // 䞭心の線を描画 ctx . fillStyle = SEEKBAR_CENTER_LINE_COLOR ; ctx . fillRect ( this. canvas . width / 2 , 0 , 1 , this. canvas . height ) ; // 珟圚時刻の文字背景を塗り぀ぶす const textBgWidth = 100 const textBgHeight = CURRENT_TIME_TEXT_SIZE + 5 const textBgPosX = ( this. canvas . width - textBgWidth ) / 2 const textBgPosY = ( SEEKBAR_POS_Y - textBgHeight ) / 2 ctx . fillStyle = SEEKBAR_BACKGROUND_COLOR ; ctx . fillRect ( textBgPosX , textBgPosY , textBgWidth , textBgHeight ) ; // 珟圚時刻のテキストを描画 ctx . font = CURRENT_TIME_TEXT_SIZE + 'px sans-serif' ; ctx . textAlign = 'center' ctx . textBaseline = 'middle' ctx . fillStyle = SEEKBAR_TIME_TEXT_COLOR ; const textPosX = this. canvas . width / 2 const textPosY = SEEKBAR_POS_Y / 2 ctx . fillText ( this. time2str ( this. currentTimeMs ) , textPosX , textPosY ) ; ステップ 再生䜍眮の移動 & スケヌル倉換 最埌に、マりスむベントに合わせお再生䜍眮の移動やスケヌル倉曎を行っおいるコヌドを芋おいきたしょう。 たず、再生䜍眮の移動はマりスのドラッグ操䜜に連動しお currentTime を曎新するだけです。 this .canvas . addEventListener ( 'mousedown' , ( e ) => { this. isMouseDown = true this. mousePosX = e . offsetX }) this .canvas . addEventListener ( 'mouseup' , () => { this. isMouseDown = false }) this .canvas . addEventListener ( 'mouseleave' , () => { this. isMouseDown = false }) this .canvas . addEventListener ( 'mousemove' , ( e ) => { if ( this. isMouseDown ) { const prevMousePosX = this. mousePosX this. mousePosX = e . offsetX const diffX = prevMousePosX - this. mousePosX const newCurrentTime = this. currentTimeMs + diffX * this. timeMsPerPix this. currentTimeMs = Math . max ( 0 , Math . min ( this. durationMs , newCurrentTime )) this. draw () } }) 次に、スケヌルの倉曎もシンプルで、マりスホむヌルの操䜜に応じお timeMsPerPix を調敎するだけです。 this .canvas . addEventListener ( 'wheel' , ( e ) => { e . preventDefault () ; let newTimeMsPerPix = this. timeMsPerPix if ( e . deltaY > 0 ) { newTimeMsPerPix *= 1 . 1 } else { newTimeMsPerPix *= 0 . 9 } this. timeMsPerPix = Math . max ( MIN_TIME_MS_PER_PIX , newTimeMsPerPix ) this. draw () }) これで、マりス操䜜による盎感的なシヌクずスケヌル調敎が実珟できたす。タッチ操䜜もサポヌトしおいたすが、実装方法は過去に執筆した 蚘事 でも解説しおおりたすので、こちらを参考にしおいただければず思いたす。 たずめ 長くなりたしたが、以䞊が凊理の党容になりたす。 今回解説した座暙倉換の考えを利甚すれば、アむデア次第で色んなものが䜜れそうな気がしたせんかちなみに座暙軞を次元に拡匵すれば、GoogleMap のようなマップアプリも䜜れたす。みなさたの䜕かのお圹に立おれば幞いです。 最埌たでお付き合いいただき、ありがずうございたした。
アバタヌ
こんにちはセヌフィヌでQA゚ンゞニアをしおいる犏山です。 今回は、入瀟間もない私が、他プロゞェクトのQAメンバヌを巻き蟌み、探玢的テストで補品品質を向䞊させた経隓をお話ししたす。 この蚘事は、特にこんな方々に読んでいただけるず嬉しいです。 探玢的テスト や新しい品質保蚌の取り組みを考えおいるQA゚ンゞニアの方 チヌムや郚眲を暪断した連携で、組織党䜓の生産性や品質を高めたいテックリヌドやマネヌゞャヌの方 新しい環境で自身の匷みを掻かしお成果を出したい䞭途入瀟の方 課題リリヌスを前に、担圓チヌムだけでは芋぀けられない䞍具合の壁 成功の鍵は「巻き蟌む力」他チヌム連携で意識した5぀の工倫 1. タむミングを芋極める 2. 心理的ハヌドルを䞋げお「テストに集䞭できる」環境を䜜る 数倀的な目暙は慣れおから 気軜に共有できる堎を蚭ける バグを芋぀けるこずだけが成果ではない 3. 䞊長を味方に぀ける 4. モチベヌションを維持する 週替わりの画面担圓ロヌテヌション 個別フォロヌず密なコミュニケヌション 迅速なフィヌドバック 5. 共有の堎から関係性を築く テスト結果を数倀的に可芖化 関連題材を甚いた勉匷䌚 挑戊の裏偎ぶ぀かった壁ず、思いがけない発芋 ぶ぀かった壁 実斜時間ず他業務ずの調敎 自身の認知床ず信頌感 思いがけない発芋 メンバヌの協力的な姿勢 倚様な芖点からの発芋 たずめ組織を動かし、成果を出すために必芁なこず 課題リリヌスを前に、担圓チヌムだけでは芋぀けられない䞍具合の壁 セヌフィヌのQA郚門には、合蚈16名のQA゚ンゞニアがいたす。それぞれが耇数の補品を担圓しおおり、私が担圓する補品のQAメンバヌは4名。残りの12名は別の補品に携わっおいたす。 日頃からテストスクリプトを䜿った網矅的なテストず、探玢的テストを䞊行しお実斜しおいたしたが、担圓プロゞェクトのメンバヌだけでは、どうしおも芋぀けにくい䞍具合があるず感じおいたした。 迫りくるリリヌスを前に「どうすればもっず品質を高められるだろう」ず考えた私がたどり着いたのが、 「他プロゞェクトを担圓するQAメンバヌを巻き蟌む」 ずいうアむデアでした。同じQAずいう職皮でも、普段は別の補品に携わっおいるメンバヌの新鮮な芖点ず専門的な経隓を掻かした探玢的テストは、きっず補品の隠れた問題を発芋し、品質を䞀段ず匕き䞊げおくれるず確信したのです。 成功の鍵は「巻き蟌む力」他チヌム連携で意識した5぀の工倫 他プロゞェクトのQAメンバヌに協力を䟝頌するにあたり、スムヌズな連携ず参加者のモチベヌション維持が重芁だず考え、以䞋の点を意識しお準備を進めたした。 1. タむミングを芋極める テストの実斜タむミングは非垞に重芁です。今回は、機胜が90%以䞊実装されおおり、か぀リリヌスたで1ヶ月半ずいうタむミングで協力を䟝頌したした。未実装の機胜が倚いずテスタヌが混乱したすし、開始が遅すぎるず開発ぞの負荷も倧きくなるため、このタむミングが最適だず刀断したした。 2. 心理的ハヌドルを䞋げお「テストに集䞭できる」環境を䜜る 䞻担圓ではない補品の探玢的テストはどうしおも心理的ハヌドルがあるため、できるだけハヌドルを䞋げ、スムヌズに進むようにいく぀か工倫を行いたした。 数倀的な目暙は慣れおから たずは目的を意識し぀぀も慣れおもらうこずを最初の目暙にしたした。裏では具䜓的な目暙数倀は蚭定しおいたしたが、いきなり数倀を提瀺するず逆効果だず考え、埌から共有するこずにしたした。 気軜に共有できる堎を蚭ける Backlogぞの盎接起祚はやめ、スプレッドシヌトに蚘入しおもらう圢匏にしたした。これにより、内容の粟床や䞍具合の重耇を気にせず報告できるため、心理的なハヌドルが䞋がりたす。 バグを芋぀けるこずだけが成果ではない 䞍具合が怜出できなかった堎合でもモチベヌションを䞋げないよう、「䞍具合がない」こずも貎重な情報であるこずを䌝えたした。たた「違和感」や「改善点」も歓迎し、UI/UX向䞊に盎結する重芁な情報だず匷調したした。 3. 䞊長を味方に぀ける プロゞェクトを円滑に進めるには、䞊長グルヌプリヌダヌGLの理解ず協力が䞍可欠です。私たちは2぀のグルヌプに分かれおいるため、他グルヌプのメンバヌを巻き蟌むには、各グルヌプのGLの理解ず協力が必芁でした。事前に盞談し、快諟を埗るずずもに貎重なアドバむスもいただきたした。䞊局郚のサポヌトは、プロゞェクトを成功させる䞊で非垞に心匷い埌抌しずなりたす。 4. モチベヌションを維持する 箄1ヶ月半の探玢的テストぞのモチベヌションを維持しおもらうため、具䜓的な仕組みをいく぀か導入したした。 週替わりの画面担圓ロヌテヌション 参加者には週ごずに担圓画面を割り圓お、飜きを防ぎながら䞻芁機胜を優先的にテストできるよう工倫したした。 個別フォロヌず密なコミュニケヌション リモヌトワヌク䞭心のメンバヌには、DMなどを掻甚しお積極的にコミュニケヌションを取り、䞍具合怜出の感謝を䌝えたり、困っおいるこずがないか確認したした。 迅速なフィヌドバック 報告された内容は、極力その日のうちに確認し、䜕かしら返信するように心がけたした。迅速なレスポンスは、報告する偎のモチベヌション維持に぀ながりたす。 5. 共有の堎から関係性を築く テスト結果を数倀的に可芖化 毎週、テスト結果を数倀的に可芖化し、参加者党員に共有したした。これにより、自分たちの掻動が補品品質にどのように貢献しおいるかを実感しおもらいたした。さらに、特に参考になった報告内容に぀いおは、感謝の意を蟌めお共有し、参加者の努力を称えたした。 関連題材を甚いた勉匷䌚 テストの䞭盀には、探玢的テストに関する勉匷䌚を開催したした。共通の題材を通しお、お互いの考え方やテストスタむルを共有する機䌚を蚭け、チヌム党䜓のテストスキル向䞊ず連携匷化を図りたした。 挑戊の裏偎ぶ぀かった壁ず、思いがけない発芋 今回の取り組みでは、もちろん悩みもありたしたが、幞運にも助けられる堎面も倚くありたした。 ぶ぀かった壁 実斜時間ず他業務ずの調敎 各メンバヌの業務が芋えない状況で、どの皋床時間を捻出可胜かは非垞に悩たしい点でした。GLに盞談し、最䜎1時間/週ずいう䞋限倀を蚭けお自䞻性に任せる方針を決定したした。 自身の認知床ず信頌感 最も困ったのがこちらです。䞭途入瀟から半幎匱ずいうこずもあり、普段接点のない他グルヌプのメンバヌに自身の存圚を知っおもらい、信頌関係を築くこずが課題でした。勉匷䌚などを通じお積極的に自己開瀺を行い、少しず぀関係性を構築しおいきたした。 思いがけない発芋 メンバヌの協力的な姿勢 通垞、初めおの詊みでは様子芋から入るこずが倚いものですが、率先しおスタヌトダッシュを切っおくれたメンバヌがいたした。たた、䞭盀でも熱心に倚くの報告をくれたメンバヌ、そしお終盀たで継続しおテストに参加しおくれたメンバヌなど、様々な協力がプロゞェクトを前進させたした。 倚様な芖点からの発芋 各メンバヌがそれぞれの埗意な芳点や、様々な芖点から䞍具合を怜出しおくれたのは倧きな収穫でした。これにより、私自身も「こんな芳点があったのか」ず孊びを深めるこずができたした。この倚様な芖点こそが、探玢的テストの真䟡だず改めお感じたした。 たずめ組織を動かし、成果を出すために必芁なこず 他プロゞェクトのQAメンバヌを巻き蟌んだ探玢的テストは、補品の品質向䞊に倧きく貢献しただけでなく、郚内間のコミュニケヌション掻性化にも぀ながる、非垞に有意矩な取り組みでした。 本蚘事の最倧の䟡倀は、補品の品質向䞊ずいう 結果 だけでなく、 その成果を生み出した「他チヌムを巻き蟌む」ための具䜓的なプロセスずノりハり を共有した点にありたす。具䜓的な数倀は皆さんのチヌムの状況によっお倉わるかもしれたせんが、ここに曞かれおいる工倫や考え方は、きっず皆さんの組織でも再珟できるず思いたす。 私自身のように䞭途入瀟でドメむン知識が少ないメンバヌでも、今回の工倫を凝らすこずで、きっず玠晎らしい成果を生み出すこずができるはずです。 本蚘事が、皆さんの品質保蚌掻動の䞀助ずなれば幞いです。
アバタヌ
こんにちは。25新卒゚ンゞニアの䞭です。 倧孊院では、ある車の䌚瀟ず共同で「機械孊習を甚いお物理シミュレヌションを眮き換える手法」に぀いお研究を行い、先日ロヌマにお行われたAI関連の孊䌚でポスタヌ発衚しおきたした。゚スプレッ゜もパスタもワむンも矎味しかったです。 このブログでは、入瀟しおから4ヶ月匱で行われた新卒研修プロゞェクトで孊んだ、「党䜓像の可芖化」の重芁性に぀いお話しおいきたす。 新卒゚ンゞニア研修に぀いお 研修で盎面した壁 プロゞェクトの党䜓像が芋えなかった初期フェヌズ 振り返り䌚ず「可芖化」の培底 Before After 研修を振り返っおみお 4月-5月前半課題発芋フェヌズ もし党䜓像が可芖化されおいたら  5月埌半-6月前半課題発芋フェヌズ2 6月埌半-7月開発ず未来蚭蚈のフェヌズ たずめ 新卒゚ンゞニア研修に぀いお 今回のセヌフィヌの新卒゚ンゞニア研修では、4月真ん䞭から7月末たでの4ヶ月匱で、「瀟内課題を解決するためのプロダクト開発」を行ないたした。この研修の最倧の目的は、「プロダクト思考を䜓珟し、゚ンゞニアずしお成長する」こずです。぀たり、ナヌザヌ目線に立ち、プロダクトを考え、それに沿っお開発を進め、その䞊で成長しおいくこずが求められたした。 研修で盎面した壁 研修プロゞェクトが始たっおすぐに私たちが盎面したのは、『チヌム党員でプロゞェクトの党䜓像を把握するこず』の難しさでした。私たちのチヌムには、以䞋の2぀の目的がありたした。 新卒研修プロゞェクトの目的プロダクト思考を身に぀け、゚ンゞニアずしお成長する プロダクトの目的ナヌザヌの課題を解決する プロゞェクトの党䜓像の把握ができおいないず、この2぀の目的を同時に達成するこずは難しいず痛感したした。 プロゞェクトの党䜓像が芋えなかった初期フェヌズ チヌムでの開発フェヌズが始たった初期段階では、プロゞェクトの進捗状況が把握できおいたせんでした。 口頭でのタスク管理口頭で決たったこずがタスクずしお蚘録されず、それぞれのタスクの粒床もバラバラでした タスクの偏り誰が䜕をするのかが曖昧になり、チヌム党䜓でタスクを抱えおいる人ず、そうではない人の差が倧きくなっおいきたした。 挠然ずした䞍安目の前のタスクをこなすこずに粟䞀杯で、「本圓にナヌザヌの課題を解決するものなのか」「このプロセスが自身の成長に本圓に぀ながっおいるのか」ずいう挠然ずした䞍安が垞に付きたずいたした。 これは、プロゞェクト党䜓の把握ができおいないこずにより、「自身の成長」ず「ナヌザヌの課題解決」ずいう2぀の目的を芋倱っおいたこずが原因でした。 振り返り䌚ず「可芖化」の培底 プロゞェクト党䜓の把握ができおいないずいう課題を解決するため、私たちは開発機関の䞭間地点で開催した振り返り䌚で珟状を共有したした。そこで、私たちは以䞋のシンプルなルヌルを培底するこずに決めたした。 タスクは必ずチケットずしお可芖化し、粒床を揃える 具䜓的なルヌルは以䞋の通りです。 チケットは1~2営業日以内で完了するものに限定する 凊理䞭のタスクは1~2個にする 耇数のタスクが同日に䞊ぶ堎合は、党おその日で終わらせられる堎合のみずする このルヌルにより、メンバヌ間でタスクの共通認識が生たれ、スムヌズに開発を進められるようになりたした。 Before 匁圓競合調査の䞭で䜕をするのか、どう調べるのかがわからず、進捗状況が䞀目で分かりづらい。開発本郚䌚は1日のはずなのに4日分匕かれおおり、その䞭で䜕をするのかがわからない。 After アむテム画面実装ずいう芪タスクに察し、䜕をするのかを小タスクずしお蚭定し、進捗を確認しやすくなりたした。 研修を振り返っおみお もし研修開始圓初に「党䜓像の可芖化」の重芁性に気づけおいたら、私たちのプロゞェクトはもっずスムヌズに進んだずいう仮定のもず、開発研修を振り返っおいきたいず思いたす。 4月-5月前半課題発芋フェヌズ この時期は、プロゞェクトの進め方や課題を発芋するための手法に関する知識が䞍足しおいたした。 もし党䜓像が可芖化されおいたら  最終ゎヌルの明確化最終的に完成させるプロダクトの芏暡やビゞョン、最終到達点をチヌムで明確に合意しおいれば、そこから逆算しおマむルストヌンを蚭定できたはずです Backlogの適切な運甚ゎヌルが定たっおいれば、Backlogのチケットの粒床も自然ず定たり、手探りでの運甚を避けるこずができたはずです 5月埌半-6月前半課題発芋フェヌズ2 この期間は、メンバヌが入れ替わりで研修に参加しおいたため、チヌム内での進捗共有が䞍十分になっおしたいたした。 もし「党䜓像」が可芖化されおいたら... スムヌズな進捗共有プロゞェクトの党䜓像が可芖化され、Backlogに適切にチケットが反映されおいれば、戻っおきたメンバヌもすぐに状況を把握できたはずです チヌムの䞀貫性の維持チヌムずしおの刀断軞が定たっおいれば、メンバヌが抜けおも方向性がぶれるこずはなかったでしょう 6月埌半-7月開発ず未来蚭蚈のフェヌズ 開発期間は、圓初の蚈画よりもミニマム開発の完了が遅れおしたいたした。たた、明確なルヌルがないたたアゞャむル的な進め方になったため、進捗の把握に苊劎したした。 もし「党䜓像」が可芖化されおいたら... 運甚を芋据えた蚭蚈: 開発の初期段階から「運甚しやすい蚭蚈になっおいるか」「コストに芋合う䟡倀があるか」ずいった問いに向き合え、属人化を避けるための人員配眮や蚈画を立おられたはずです たずめ この研修プロゞェクトを通しお、私は技術的なスキルだけでなく、『チヌム党員が同じ党䜓像を共有し、目的を意識しお開発を進めるこず』が、プロゞェクトの成功ず自身の成長に䞍可欠だず孊びたした。 研修で盎面した壁は、私たちを倧きく成長させおくれたした。配属されお数週間経った今、この経隓を掻かし、 自身の成長ずチヌムずしおの成果、䞡方の芖点を持っお行動するこず を心がけおいたす。 今埌、この研修で開発したプロダクトは、瀟内運甚に向けおチヌムで議論を重ねおいきたす。技術を孊ぶだけではないこの新卒研修プロゞェクトを経隓できたこず、そしお倚くの壁をチヌムで乗り越えた経隓は、これからの゚ンゞニアずしおのキャリアにおいお、垞に掻かされおいく倧切な教蚓です。
アバタヌ
こんにちは モバむルチヌムの倕田です 先日開催された囜内最倧玚のiOS゚ンゞニア向けカンファレンス「 iOSDC Japan 2025 」に、セヌフィヌのiOSチヌムが参加したした 今幎セヌフィヌは本むベントに シルバヌスポンサヌ ずしお協賛させおいただきたした 䞋蚘 connpass のペヌゞをぜひご確認ください yumemi.connpass.com おわりに 「ブログを曞くたでがiOSDC」ずいうこずで、無事に私たちもiOSDCを締めくくるこずができたした✌ 最埌になりたすが、このような玠晎らしいむベントを䌁画・運営しおくださったスタッフ、関係者、スポンサヌの皆様に心より感謝申し䞊げたす。 来幎も楜しみにしおいたす セヌフィヌでは䞀緒に働く゚ンゞニアの仲間を随時募集しおいたす。 少しでも興味を持たれた方がいたしたら、ぜひ䞋蚘の採甚ペヌゞをご芧ください。 safie.co.jp
アバタヌ
はじめに セヌフィヌの情報システムグルヌプでグルヌプリヌダヌをしおいる束尟ず申したす。 セヌフィヌは「映像から未来を぀くる」ずいうビゞョンのもず、クラりド録画サヌビスを提䟛しおいたす 。私たちのサヌビスは、防犯・芋守りに留たらず、業務効率化や珟堎DXなど、様々なシヌンで瀟䌚の「安心安党」を支えおいたす。 情報システムグルヌプ(以䞋、情シスG)では2025幎1月から半幎ほど、アゞャむルを導入したプロゞェクト・タスク管理を実斜したした。 今回はこちらの取り組みに぀いお、䞻に以䞋の内容を曞いおいきたいず思いたす。 はじめに なぜアゞャむルを導入したか どのようにアゞャむルを導入したのか アゞャむル勉匷䌚の実斜 スプリントの実斜 情シスアゞャむルプレむブックの䜜成 アゞャむルを実斜するための環境づくり どのような倉化があったか 现かい改善の䟋 半幎間を振り返っお おわりに なぜアゞャむルを導入したか 「日々の問い合わせ察応に远われ、本来泚力すべき䞭長期的なタスクがなかなか進たない 」倚くの情報システム郚門が抱える悩みではないでしょうか。 私たちセヌフィヌの情シスGも䟋倖ではありたせんでした。タスクは垞に「実斜䞭」のたた停滞し、定䟋報告は「進んでいない状況」の共有になりがちで、チヌムの士気にも圱響が出始めおいたした。 具䜓的には以䞋のような問題がありたした。 日々の瀟内からの問い合わせ察応ず、目暙蚭定に玐づく長期的なタスクを䞊行しお実斜しおおり、目暙に玐づく長期タスクは各自が開始ず終了を蚭定しお進めおいるが、 突発的な業務などにより、タスクの進捗が遅れがちになっおいた その結果、 タスクがずっず「実斜䞭」のたたずなり、進捗が芋えづらい状態 ずなっおいた 2週間毎に実斜しおいる定䟋では「タスクが進んでいない状況」を共有するこずになり、 メンバヌのモチベヌションも䞊がらない状態になっおいた 進捗が芋えないため、 適切なタむミングでチヌムでサポヌト出来ないずいうゞレンマ があった これらの課題を解決するため、情シスGでは以䞋の目的を掲げたした。 無理のない圢でメンバヌが成果を出せるようにする そのために、 成果を可芖化し、チヌム内倖にすぐに共有できる状態 を䜜る 目暙蚭定の状況を明確にし、進捗を正確に把握できる状態を䜜る 目暙達成たでのプロセスを现かく刻み、その方法が適切か、 より良い方法はないかを垞に探求できるようにする 定䟋䌚議を、単なる進捗報告ではなく、 成果を共有する堎 にする これらの目的を達成するためのアプロヌチずしお、私たちは「アゞャむル」な働き方に着目したした。 どのようにアゞャむルを導入したのか アゞャむル勉匷䌚の実斜 たず、チヌムでアゞャむルを始めるにあたり、セキュリティチヌムず合同でアゞャむルの勉匷䌚を実斜したした 。詳现はこちらの蚘事をご芧ください。 参考蚘事 engineers.safie.link この勉匷䌚を通じお、アゞャむルを導入する際には以䞋を気を぀けるずいうこずを孊びたした。 フレヌムワヌクの 「やり方だけ」を取り入れるこずはしない こず アゞャむルの原則ずプラクティスの目的を理解し、 珟状のチヌムに合ったものを取り入れ、自分たちのものにしおいく こず 䞊蚘をふたえ、情シスGに合う圢で以䞋のような圢でアゞャむルを取り入れおみるこずにしたした。 たずは 「半幎間のトラむアル」 ずしお始めおみる アゞャむルの専門甚語はできるだけ䜿わない 情シスGの䞭で 取り入れられるこずだけを利甚 する 最終的に、この仕組みがメンバヌが 無理なく成果を出すための仕事の仕方の型ずしお定着する こずを目指す スプリントの実斜 2週間を1぀のスプリント期間ずし、以䞋のサむクルで業務を進めおいきたした。 2週間でやるこず決めスプリントプランニング 2週間で実斜するこずを決める 朝䌚デむリヌスタンドアップ 毎日実斜し、問い合わせ察応ずタスクの進捗状況、困っおいるこずを確認する 定䟋スプリントレビュヌ 2週間で実斜した成果を発衚する ふりかえりスプリントレトロスペクティブ 2週間の振り返りを実斜し、その䞭で優先床の高い察応すべきタスクを決める 情シスアゞャむルプレむブックの䜜成 特に意識したのは、単にフレヌムワヌクを導入するだけでなく、「なぜこのプラクティスを行うのか」ずいう目的意識をチヌム党員で共有するこずでした。 そのために、各プラクティスの目的や具䜓的な進め方を 「情シスアゞャむルプレむブック」 ずしお蚀語化したした。 このプレむブックは、途䞭でチヌムメンバヌが倉わっおも「無理なく成果を出す仕組み」が継続されるための、私たちのチヌムの重芁な道しるべずなっおいたす。 蚘茉した䞻な内容 背景なぜ情シスGがアゞャむルに取り組むのか 目的ず具䜓的な進め方 スプリント2週間の進め方 2週間でやるこず決めスプリントプランニング 朝䌚デむリヌスタンドアップ 情シス定䟋スプリントレビュヌ ふりかえりスプリントレトロスペクティブ Notionペヌゞに情シスアゞャむルプレむブックをたずめおいたす。 アゞャむルを実斜するための環境づくり アゞャむル導入ず䞊行しお、メンバヌが目暙蚭定に集䞭できる環境づくりも進めたした。 具䜓的には、やり方がある皋床決たっおいる定垞業務のマニュアルを敎備し、業務委蚗のメンバヌに察応しおもらう䜓制を䜜るこずで、正瀟員メンバヌが課題解決に集䞭できるような環境䜜りを進めたした。 どのような倉化があったか スプリントを進めおいく䞭で、以䞋のような倉化が珟れたした。 スプリント開始1ヶ月ほど プロゞェクトの党䜓像を把握 できるようになった 目暙に沿っお 䞀日のタスクを可芖化 できるようになった 自分の目暙ず進捗を以前より意識 するようになった 他のメンバヌが䜕の目暙を立おおいるか 分かるようになった やるこずが明確になり、目暙やマむルストヌンを立おるこずで 盞談しやすくなった 2週間単䜍のスプリントを意識し、具䜓的に䜕回のスプリントでプロゞェクトを終わらせなくおはいけないず考えたこずで、 プロゞェクトの党䜓像を意識し、どこたで実斜すれば完了なのか、ずいうこずを考える ようなったずいう意芋が出おきたした。 たた、スプリントでは必ず蚭定したタスクを完了する必芁があるため、 完了するために今日はどのタスクをやるべきかを意識する ようになりたした。 タスクを意識するこずで、進めるうえでの課題点が分かるようになり、チヌムで 盞談がしやすく なりたした。 2回目スプリントのふりかえりの様子 スプリント開始2ヶ月ほど (アゞャむルブックの䜜成により)タスク管理の取り組みを蚀語化できた ゎヌルが抜象的なプロゞェクトぞの恐怖感が少なくなった ずりあえず2週間のタスクを決めお進め、郜床修正しおいくサむクルが出来おきた) タスクのプロセスを意識し、 できるだけ现かくタスク化するようになった タスクを现分化するこずで、スケゞュヌルに沿った察応ができた 突発的なタスクを考慮しお、 バッファを持たせた目暙蚭定をする感芚が銎染んできた 前回の振り返りず比范するこずで、より意識しお目暙管理に取り組めるようになった 2週間単䜍での仕事の進め方に慣れおきたこずもあり、チヌムで 2週間で実斜可胜なタスクの量の感芚が少しづ぀分かっおきた ずいう意芋が出おきたした。その結果、突発的なタスクを考慮し、 ある皋床バッファをもたせた目暙蚭定が出来る ようになっおきたした。 たた、2週間でタスクが区切られおいるずいうこずから、ゎヌルが抜象的だったり党䜓のタスクサむズが分からないものでも、 ずりあえず2週間で出来る事を決めお、郜床方向を修正しおいく 仕事の進め方が出来るようになっおきたした。 现かい改善の䟋 スプリントを繰り返す䞭で、タスク管理の方法を现かく倉曎をしおいきたした。 今回は䞀䟋ずしお、朝䌚の運営方法をどのように倉曎しおいったかをご玹介したす。 課題 朝䌚のスピヌド感がない 改善策 Backlogの衚瀺をガントチャヌトからボヌド圢匏に倉曎。「今日やるこず」のステヌタスを远加し、 珟圚取りかかっおいるタスクを分かりやすくした 課題 誰かが困っおいおも、その内容が分かりづらい 改善策 圓番制だった朝䌚のファシリテヌションをグルヌプリヌダヌに固定 。各パヌトでメンバヌに 「確認したいこずはありたすか」ずいう問いかけを入れる ようにした 課題 「2週間やるこず決め」の堎が、ただタスクを各自が決めるだけの堎になっおきおいる 改善策 「2週間やるこず決め」でメンバヌが2週間でやるこずを決めた埌に、疑問点や知りたいこずなど皆から意芋をもらう問いかけを远加し、 コミュニケヌションの堎にするようにした 課題 困っおいるこずの盞談が解決策の議論にたで発展し、朝䌚が長匕いおしたう 改善策 朝䌚を2郚制に倉曎 。前半は定垞業務䞭心のヘルプデスクパヌトずし、非定垞業務の盞談は埌半に回すようにした 課題 問い合わせ察応を誰がやるか、お芋合いになっおしたう 改善策 チヌムで話し合い、 䞀旊の察応ずしお問い合わせ察応をチケットごずの茪番制に倉曎 した このように、2週間ごずにふりかえりず现かい改善を繰り返すこずで、朝䌚の運営方法を少しず぀改善しおいきたした。 半幎間を振り返っお 半幎間のトラむアルを経お、チヌムには以䞋の倉化や文化が定着したした。 现かい確認ず改善を繰り返す仕組み (アゞャむルな仕事の進め方)がある皋床、 チヌムに定着 した 2週間ごずの定䟋が、成果を発衚できる堎になった 现かく成果を発衚しおいく仕組みになったこずで、 目暙蚭定の評䟡が以前より曞きやすくなった 非定垞の問い合わせ察応をタスク毎の茪番制にするこずで、チヌム内でのノりハり共有が進んだ。 やったこずのない分野もやっおみる文化が根付いおきた 「完璧でなくおもいいので、ずりあえずやっおみる。解決しなければチヌムのメンバヌに盞談する、プロに頌る」 ずいう雰囲気が定着した 「頌るこずは悪いこずじゃない」 ずいうマむンドが浞透した 现かい確認ず改善を繰り返す仕事の進め方が定着したこずで、プロゞェクトを進めるうえで手戻りが少なくなったり、方向性を修正しながら動くずいうこずが出来るようになりたした。 特に、 ずりあえずやっおみお、分からなければチヌムに盞談する、頌るこずは悪いこずではない ずいう文化が定着したこずは、チヌムにずっおも非垞に重芁な事だず考えおいたす。 䞊蚘の文化が定着したからこそ、問い合わせ察応の茪番制でメンバヌが実斜したこずがない問い合わせがあった堎合でも積極的に察応したり、難易床が高いプロゞェクトに぀いおもたずはやっおみお、チヌムに盞談しお進めおいくこずが出来るようになったず感じおいたす。 半幎間のトラむアルに぀いおふりかえりをした様子 おわりに 最埌たでお読みいただき、ありがずうございたした。今回は、セヌフィヌの情報システムグルヌプが取り組んだアゞャむル導入の道のりをご玹介したした。 今回のアゞャむルの導入はこれで終わりではなく、今回の取り組みでチヌムに今埌も改善を続けおいく予定です。 私たちの詊行錯誀の過皋が、同じようなチヌムの課題に悩む方や、情報システム郚門の働き方に関心のある方にずっお、少しでも参考になれば幞いです。
アバタヌ
導入 お久しぶりです。戌亥です。晎れおセヌフィヌ株匏䌚瀟新卒゚ンゞニアずなりたした。 参考  研修で動画の仕組みに関しお孊ぶ機䌚があったのですが、そのうちの画像圧瞮に関しおむメヌゞしづらい郚分があるず感じたした。同期゚ンゞニアで勉匷䌚があり、今回はそこで話した内容を䞀郚加筆修正しお解説しようず思いたす。 導入 コンピュヌタでの画像の扱い方 YUVずは 離散コサむン倉換DCT たずめ コンピュヌタでの画像の扱い方 画像圧瞮の前に画像がデヌタずしお扱われおいるこずを知らない方向けに、画像がおおよそどのようにデヌタずしお扱われおいるかを説明したす。 説明のために画像を拡倧しお芋るこずができるアプリをGeminiで䜜成したした。 画像ピクセル拡大ツール (クリック固定機能付き) 画像を入力し、クリックした地点を8×8マスで拡倧しおみるこずができたす。拡倧だけでなく、RGB倀で衚瀺するモヌドずバむナリ倀で衚瀺するモヌドがありたす。 こちらが画像を拡倧した時の図です。巊の画像の小さくオレンゞ色になっおいるセヌフィヌのロゎの嘎郚分が拡倧されたものが右のグリッド図になりたす。 䞀般的に画像は0~255の256段階のRGBRed, Green, Blue倀を各画玠ごずにもっおいたす。以䞋の画像は拡倧したグリッド図をRGBの倀で衚したものです。 コンピュヌタは0ず1で解釈するのでデヌタ量は2進数で考える必芁がありたす。この0たたは1をビットず蚀う単䜍で考えたす。 256は2進数で2 8 なので0255を衚すためには8ビットが必芁です。画像においお、このビット数を枛らすのが画像圧瞮です。 YUVずは YUVずはRGBやHSVなどず同じ色空間色の衚し方の぀です。 人の県の「茝床信号に察しお敏感」ず「色差信号に察しお鈍感」ずいう特性に合わせた衚し方で、茝床信号Yず青色成分の色差Uたたは ず赀色成分の色差Vたたは で構成されおいたす。 ディスプレむに衚瀺させる際やカメラで撮圱した生のデヌタはRGBですが、この「色差信号に察しお鈍感」ずいう特性から、YUVに倉換させるこずでビット数を枛らすこずができたす。 これを䜓隓できるアプリをGeminiを䜿っお䜜りたした。 YUV3層ビューワ ここに画像ファむルを䞊げるず、YUVそれぞれの局がどのような圹割をしおいるかが盎感的にわかりたす。たたこちらのスキップ数ずいうのは、Yで瞊×暪、Uで瞊×暪、Vで瞊×暪ずそれぞれ次元の画玠を持っおいたす。これを䜕個ず぀進むかずいうものです。 䟋えばスキップ数がであればその局は完党な情報です。スキップ数がだず぀飛ばしお、飛ばしたマスはその前の倀で埋められるので、同じ画玠倀が぀連続するこずになりたす。そうした時の党䜓のビット数はYが100%、Uが50%、Vが50%ずなりたす。぀たりビット数は2/3で67%ほどになりたす。これはYUV 4:2:2ず呌ばれる方匏ず同じです。 YUV 4:2:0ず呌ばれる氎平・垂盎方向にそれぞれ぀飛ばしおいく方匏ではYが100%、Uが25%、Vが25%ずなりビット数は1/2ずなりたす。 アプリの方で詊しおもらうずわかる通り、Yをスキップするずすぐにわかりたすが、UずVを少し飛ばしただけでは気づきたせん。こうしお色差信号を枛らしおいくず圧瞮するこずができたす。 ITU-R BT.601ずいうアナログ信号ずデゞタル信号を盞互に倉換するための芏栌がありたす。これによるず、RGBずYUVの関係匏は匏のように定矩されおいたす。 匏RGB to YUV 離散コサむン倉換DCT DCTは厳密には圧瞮方法ではなく、圧瞮のために必芁な凊理の぀です。倉換のために画像に呚波数の考えを導入したす。 右のようなのっぺりずした濃淡の倉化が少ない画像を䜎呚波な画像、唐草暡様や巊の濃淡の激しい画像を高呚波な画像ずいいたす。自然画では高呚波な画像が少なく、高呚波成分を削っおしたっおもあたり圱響を䞎えたせん。そこでDCTを行っお画像を呚波数にしおから高呚波成分を削るこずで画質にあたり圱響を䞎えずに画像を圧瞮できたす。 DCTの具䜓的な手法の前に、フヌリ゚倉換ずいう抂念をお話ししたす。「党おの呚期信号は正匊波の合成で衚珟できる」ずいう考えがあり、これに基づき波圢が氞遠に続くず仮定しお合成元の正匊波を導けたす。ざっくりいうずこれがフヌリ゚倉換であり、波圢がどの呚波数のどのくらいの匷床の正匊波で構成されおいるかがわかるずいうものです。 DCTの匏は匏で瀺すこずができたすが、勉匷しおいた圓時、これを芋おもよくわかりたせんでした。 匏Image to Power DCTはフヌリ゚倉換ず䌌たこずをやっおおり、画像の各局を次元の波だず考え、ブロック単䜍で现かく分けた画像を呚波数成分に分解したす。 䟋えば×マス単䜍でDCTを行う堎合、たず07Hzの波圢を䜜りたす。 そうするず䞋蚘の図のような8぀の波圢ができたす。 図07Hzの離散波圢 それをもずに䞋蚘の図のような基底関数画像ずいわれるグレヌスケヌルの画像を䜜成したす。これは2぀の波の該圓する郚分を8×8の各マスで掛け算したす。 図基底関数画像u, v= (5, 2) このような画像を07Hzの8パタヌンを瞊×暪の蚈64パタヌンを甚意したす。 これは8×8マス単䜍でDCTを行うのであればどんな画像に察しおでも同じ64パタヌンの画像を䜿いたす。 䞋蚘の図のように、生成した64パタヌンの画像ず察象のブロックずの内瞟を取った倀がDCT倉換埌の画玠倀ずなりたす。 図DCT倉換 DCT倉換埌の画像はブロック単䜍この堎合は8×8の画像になりたす。分割した数だけDCT画像係数があるのでこの状態では圧瞮されおいたせん。画像が呚波数情報に倉わっただけです。 これを䜓隓できるアプリも同様にGeminiを䜿っお䜜りたした。 DCT/IDCT可視化ツール 画像を入力し、クリックしお範囲を指定するずその郚分に察しおDCT係数を蚈算するこずができたす。出力されたDCT係数に察しお党範囲を遞択しお逆DCTをするこずで、元の画像に戻すこずができたす。圓然範囲を限定しお逆DCTをかけるず圧瞮によっお元の画像ずは少し違う結果ずなりたす。出力された衚を芋るずその画像の局所的なDCT係数がわかりたすが、各係数がその呚波数の圱響を䞎える倧きさだず思っおいただけるずいいです。ぜひいろんな条件で詊しおみおください。逆DCT結果の画像がグレヌスケヌルなのはYUVのY成分のみで蚈算しおいるためです。 たずめ 動画圧瞮の仕組みに぀いおYUVずDCTを甚いる郚分に぀いお簡単なアプリを䜿っお解説したした。YUVを甚いるこずで色差情報を削るこずができ、DCTを甚いお画像を呚波数成分にするこずで画質に圱響を䞎えない情報に絞っお削るこずができるこずがわかりたした。倧孊で習っおいる圓初はあたり䜕に䜿うのか理解できなかったフヌリ゚倉換などの抂念も、割ず様々な堎面で出おくるこずが倚いので、昔の自分にしっかりやっおおくよう忠告したいずころです。 たた私が調べおいたずきは、出力結果画像の差でみるこずができるYUVはただしも、DCTに関しおは64パタヌンの謎の画像基底関数画像の意味がずっずよくわからなかったので、今回のアプリで誰かの理解の助けになるずうれしく思いたす。 䜙談ですが、最近買った「H.264/AVC教科曞」が図も亀えおしっかり曞かれおいお個人的におすすめです。この蚘事で動画圧瞮の仕組み等に興味を持っおくださった方は読んでみおもいいかもしれたせん。
アバタヌ
こんにちは、iOS ゚ンゞニアの @monolithic_adam です。 iOSDC Japan が近づきたしたね。今幎は新しい䌚堎で楜しみにしおいたす。 #Safie は今幎初めおシルバヌスポンサヌずしお参加させおいただきたす 䌚堎におセヌフィヌのメンバヌを芋かけたら、ぜひ声をかけおください。 iOSDC Japan 2025参加情報 ノベルティヌ パンフレット クラりド録画サヌビス「Safie」に぀いお Our App Safie Viewerセヌフィヌ ビュヌアヌ 最埌に We are hiring! iOSDC Japan 2025参加情報 ノベルティヌ セヌフィヌオリゞナルのアンブレラマヌカヌです。 ノベルティヌ付きチケットの方にはお届けされるはずなので、ご掻甚ください パンフレット iOSDCブック内のパンフレットにも、以䞋の内容を掲茉させおもらっおいたす。 是非ずもご芧ください クラりド録画サヌビス「Safie」に぀いお 今幎スポンサヌずしお初参加ずいうこずもあり、Safieセヌフィヌずいうサヌビスに぀いおご存じない方ばかりかず思いたす。 この堎で簡単にSafieに぀いおご玹介させおください。 Safieのサヌビスに぀いお 䞀蚀で蚀うず、カメラの映像をクラりド化するサヌビスで、iOSアプリずしおはカメラを操䜜したり、映像を閲芧するずいった機胜を提䟛しおいたす。 Our App ずいうこずで、次にiOSアプリに぀いお玹介させおください Safie Viewerセヌフィヌ ビュヌアヌ アプリは こちら からダりンロヌド可胜 デモ機胜により、無料・アカりントなしで䜓隓可胜です #SafieViewer ではいく぀か特城的な機胜を提䟛する必芁があり、 動画の再生 WebRTC / HLSのハむブリッド動画配信に察応 むベントや録画有無を衚瀺するためのリッチなシヌクバヌ 広角撮圱しお歪んだ動画を3D空間で補正 参考: セーフィーの新製品「Safie Go 360」のAndroid実装 - Safie Engineers' Blog! トヌクバック機胜 アプリから音声を入力、 WebSocket を経由しおカメラから音声を再生 ずいった技術的にも面癜い郚分が色々ずありたす。 最埌に 今幎は新しい䌚堎ですし、セヌフィヌも初スポンサヌで色々ずワクワクしおいたす 䌚堎でセヌフィヌくんのTシャツを着おいる人を芋かけたら、是非ずもお話ししたしょう 最高にiOSDCを盛り䞊げおいきたしょう ※ iOSDCに関しおの最新情報は公匏サむトや各むベントペヌゞをご確認ください 他瀟様ず合同で非公匏のアフタヌむベントもやりたす yumemi.connpass.com We are hiring! モバむルチヌムでは、倚様な環境で䞖界に向けたアプリをずもに開発する仲間を募集しおいたす open.talentio.com
アバタヌ
はじめに こんにちは、デヌタドリブン掚進宀でデヌタ゚ンゞニアをやっおいる鶎です 先日、 OSS BIツヌルに぀いおのブログ蚘事 を同じチヌムの小宮が投皿しおおりたしたが、その䞭でご玹介しおいた「Lightdash」でカスタムチャヌトずいう機胜がありたす。 個人的に気になっおいた機胜だったので実際に觊っおみおどのような感じで䜿えるのか、グラフはどんな感じになるのかご玹介したいず思いたす はじめに Lightdashのカスタムチャヌトずは カスタムチャヌトを觊っおみる 最埌に Lightdashのカスタムチャヌトずは Lightdashには 公匏ドキュメント に蚘茉があるように暙準でさたざたなチャヌトを䜿うこずができたす。 2025/06時点では以䞋の10個のチャヌトがあり、普通に䜿う分には困らない感じです。 衚 (Table) 円グラフ (Pie chart) ファネルチャヌト (Funnel chart) 棒グラフ (Bar chart) 面グラフ (Area chart) 折れ線グラフ (Line chart) 暪棒グラフ (Horizontal bar chart) 散垃図 (Scatter chart) 耇合グラフ (Mixed chart) 数字衚瀺 (Big Value) 参考積み䞊げ棒グラフのむメヌゞ 曎にLightdashではビゞュアラむれヌションの衚珟の幅を䞊げる機胜ずしお カスタムチャヌト 機胜がありたす。 この機胜は Vega‑Lite をベヌスずした高床なビゞュアラむれヌション機胜で、Lightdash䞊で暙準グラフではできないようなグラフスタむルや现かい蚭定をJSONベヌスで䜜成できたす。 なお、こちらの機胜は公匏ドキュメントに蚘茉があるようにただベヌタ版ずなっおおりたすのでご泚意ください 䜿い方ずしおはずおも簡単で以䞋のようにしおいくず䜿えたす。 「Query from tables」で察象テヌブルを開く 察象ディメンションずメトリクスを遞択し、Chartの「Configure」をクリック チャヌト蚭定の「Chart type」のリストの䞭にある「Custom」をクリック JSON線集画面が出おきたす簡単に線集できたすね たたこのカスタムチャヌト機胜ですが最近の アップデヌト でテンプレヌト機胜が搭茉され、より觊りやすくなりたした 今回は気になったいく぀かのチャヌトを詊しに䜜っおみおどんなグラフができるのか詊しおみたす カスタムチャヌトを觊っおみる 最近実装されたテンプレヌトはカスタムチャヌトを開いた時に衚瀺される「+Insert template」から遞ぶこずができるようです。 テンプレヌトをクリックするずJSONコヌドが生成され、自動的に集蚈察象がマッピングされる感じになっおたす。 このfieldで利甚されおいる項目はResultsの䞋にあるSQLで自動生成されたSQLの項目名を利甚しおいるようです。 なお、利甚する項目によっおうたく衚瀺されなかったりするのでその堎合は線集しお調敎しお利甚したしょう。 それでは気になっおいたグラフをそれぞれ芋おいきたいず思いたす 棒グラフ (Bar chart) テンプレヌトを利甚しお適圓に䜜成したサンプルデヌタの商品カテゎリず売䞊を䜿っお棒グラフを遞んでみたした。 テンプレヌトを䜿うこずでワンクリックで棒グラフが䜜られたした 圓たり前ではありたすが芋た目は暙準の棒グラフず倉わらない感じですね。 ヒヌトマップ 䌚員ランクず地域の䌚員平均幎霢を䜿っおテンプレヌトを䜿っおみたしたがうたく項目が遞ばれなかったため手動で線集し䜜成しおみたした。 珟圚ヒヌトマップは暙準グラフにはなく、カスタムチャヌトのみの機胜になるためこちらを䜿うこずになりそうですね。 バブルチャヌト 商品カテゎリず売䞊、平均単䟡、平均顧客幎霢を䜿い散垃図のバブルチャヌトを䜜成しおみたした。 軞の scale プロパティで幎霢のスケヌルを30歳以䞊にするこずで芋やすくしおいたす。 おそらく暙準の散垃図ではサむズオプションがなかったためバブルチャヌトは䜜れないず思われたすので利甚したい方はこちらを䜿うこずになるかなず思いたす。 分散積み䞊げ棒グラフ(人口ピラミッド) 次はテンプレヌトにないものを䜜っおみたす。 vega-liteのexampleを眺めおいお気になった 人口ピラミッド です。 サンプルコヌドを芋よう芋たねで䜜っおみたずころいけたした  こういった手の蟌んだグラフはBIツヌルで䜜る経隓がなかったので䜜れるんだなず感動しちゃいたした。。。 こういったチャヌトが䜜れるのはメリットですね。 Tableauのリファレンスラむン的な平均ラむン 最埌に棒グラフ䞊に平均ラむンを 衚瀺 させるexampleも詊しおみたしたが苊戊し぀぀も衚瀺できたした。 なんだかんだ䜿うこずありそうなラむンです。 コヌドの工倫の仕方によっおは目暙倀等のラむンを蚭定できるのではず思いたす。 最埌に 気になっおいたカスタムチャヌトのいく぀かのグラフや機胜を觊っおみたした。 Lightdashはただただ成長の段階で他のBIず比べおビゞュアラむれヌションの面で実珟できないこずがあったりしたすが、このカスタムチャヌト機胜を䜿うこずで痒いずころに手が届くいい機胜だなず思いたす。 しかしながらUIでぜちぜちっずグラフを䜜るようなBIツヌルの本来の操䜜ず比べたらやはり難しい郚分もあり、JSONコヌドを線集しお䜜るのは苊劎する面もありたすのでChatGPT先生等にご教瀺いただきながら䜜っおみるずいいかもしれたせん。 公匏サむトにはサンプルコヌドがあるので流甚できる郚分も倚いず思いたす。 たたこのLightdashですが2025幎6月珟圚でも高頻床で アップデヌト が行われおおり、今埌も機胜がさらに充実しおいくず思いたすし、自分自身もかなり期埅しおいたす Lightdashのチャヌト機胜が気になっおいる方々の参考になれば幞いです
アバタヌ
2025幎新卒ずしお開発本郚に配属されたした、恩智倪陜です。 早速ですが若手゚ンゞニアの皆さん、セキュリティを意識しおコヌディングできおいたすか 私はセヌフィヌに入るたでほが意識せずWebアプリ開発など行っおいたした  IT業界においおセキュリティは理系、文系どちらに行っおも切っおも切り離せない英語のような重芁な存圚です。 そんなセキュリティの孊習をおろそかにしおしたうず、どんなにいいサヌビスを䜜ったずしおも、悪意のある人の手によっお台無しにされおしたうこずがありたす。 それぐらいずおも重芁な分野ですが、セヌフィヌでは新卒研修の䞀環ずしお座孊ワヌクショップハンズオン圢匏で実斜するセキュリティ研修がありたす。 この蚘事の前半では研修で䜕を孊んだのかに぀いお、埌半では孊んだこずをどのように業務でアりトプットしたのかをご玹介したす。 はじめに この蚘事で䌝えたいこず 誰向けの蚘事 座孊アゞャむルず脅嚁モデリングに぀いお ワヌクショップ脅嚁モデリングを実践 4぀の問いに察しお行ったこず ステップ1DFDで「私たちは䜕に取り組んでいるか」を明確にする ステップ2STRIDEで「䜕が問題になりうるか」を掗い出す ステップ3 リスクマップで優先順䜍を぀けお察策を考える ステップ4Δ (プラスデルタ)で振り返える 完成埌にチヌムごずに発衚 このワヌクショップで感じたこず 脆匱性蚺断ハンズオンハッカヌになっお攻撃しおみた デヌタベヌスの情報を抜き取っおみる SQLむンゞェクションの本圓の恐ろしさ 脆匱性蚺断ハンズオンで感じたこず アりトプットセキュリティ研修で埗た知識を実践ぞ 新卒研修プロゞェクトに取り入れる ①蚭蚈の土台である非機胜芁件に反映 ②䜜った機胜に「攻撃」を仕掛けおみる たずめ はじめに この蚘事で䌝えたいこず セヌフィヌのセキュリティ研修の抂芁に぀いお 孊んだこずをどのように仕事に生かしたのか 誰向けの蚘事 セキュリティの重芁性をあたり認識しおいない方開発者 攻撃手法の抂芁は把握しおいるが、具䜓的な攻撃のむメヌゞが぀いおいない方 どんなずころに脆匱性が朜んでいるのかむメヌゞできない方 座孊アゞャむルず脅嚁モデリングに぀いお 研修の前半では、たず アゞャむル開発 に぀いお孊び、その埌に 脅嚁モデリング を孊びたした。 私自身、「アゞャむル開発」ずいうものは知っおいたのですが、「なぜセキュリティの研修なのに、なぜアゞャむル開発の話から始たるんだろう」ずいうのが正盎な感想でした。 それは、アゞャむル開発の匷みである「スピヌド」が、セキュリティ察策の遅れで匱点に倉わるからです。開発終盀での蚭蚈の修正は、倚倧な手戻りずコストがかかっおしたいたす。 そこで重芁なのが、セキュリティ察策を開発初期から行う「シフトレフト」ずいう考え方です。 開発のスピヌドず安党性を䞡立させるためには、たずその土台ずなるアゞャむル開発の党䜓像を理解するこずが䞍可欠だったのだず、深く玍埗したした。 出兞Security Compass - How to Sell Security Training Costs Internally https://www.securitycompass.com/blog/how-to-sell-training-costs-internally-2/ 2025幎7月30日アクセス ※「蚭蚈段階(青)」で䞍具合を芋぀けお修正するコストを基準の1ずした時、「開発段階(橙)」、「テスト段階(灰)」、「リリヌス段階(黄)」それぞれで察応した時のコストのかかり方 脅嚁モデリングずは、システムに察しお「どのように攻撃が発生しうるか」を䜓系的に分析し、具䜓的な攻撃経路やリスクを特定するためのリスク分析手法であり、シフトレフトを実践するための匷力なプラクティス実践手法の䞀぀です。 この手法の匷みは、蚭蚈段階で 朜圚的な問題 を 早期に発芋・修正 できるため、埌の工皋での修正コストを最小限に抑えるこずができるずいうこずに加え、「チヌム内の共通理解を圢成できるこず」がありたす。 DFDデヌタフロヌ図のようなモデルを䜿うこずで、チヌム党員が同じ図を芋お同じ目線で「システムがどのように攻撃されうるか」を議論できるようになりたす。 研修を受ける前の私は、正盎なずころ「セキュリティ察策実装段階でのコヌディングにお察策」ずいうむメヌゞでした。 しかし、この研修を通しおシステムの蚭蚈そのものに脆匱性が朜む可胜性や、チヌム党䜓で脅嚁に぀いお察話し、共通認識を持぀こずの重芁性を孊びたした。 セキュリティは専門家だけの閉じた仕事ではなく、開発に関わる党員で察話し、䜜り䞊げおいくこずが重芁だず、セキュリティに察する考え方が倧きく倉わる経隓ずなりたした。 ワヌクショップ脅嚁モデリングを実践 座孊の埌は、チヌムに分かれお脅嚁モデリングのワヌクショップを䜓隓したした。 課題は、タスク管理Webアプリ脆匱性蚺断ハンズオンで甚いる「 Bad Todo List 」の芁件をベヌスに、どのような脆匱性があるのかを、脅嚁モデリングの「4぀の問い」に沿っお考えおいくずいうものでした。 タスク管理Webアプリ脆匱性蚺断ハンズオンで甚いる「Bad Todo List」の芁件研修資料から抜粋 ワヌクショップの流れに぀いおは「 セヌフィヌの脅嚁モデリングベヌスのセキュア開発トレヌニング 」の蚘事をご確認ください。 4぀の問いに察しお行ったこず ステップ1DFDで「私たちは䜕に取り組んでいるか」を明確にする 脅嚁モデリングの最初の問い、「私たちは䜕に取り組んでいるか」を明確にするため、今回は䞀般的に䜿われる「DFD (デヌタフロヌダむダグラム)」を甚いおシステムの党䜓像を分析したした。 DFDの芁玠研修資料から抜粋 DFDは、システムにおけるデヌタの「流れ」ず「凊理」を芖芚的に衚珟する図で、詳现な動䜜(How)よりも「䜕をするのか(What)」を明らかにするこずに長けおいたす。 DFDの矢印はあくたでデヌタの流れData Flowのみを蚘述しなければならず、曞き始めはこのルヌルになかなか慣れたせんでした。 ぀い「デヌタを取埗するリク゚スト」のような、凊理の制埡に関する矢印を䜕床も曞きそうになり、苊劎したした。 ですが、Bad Todo Listの芁件から䞊蚘のようなDFDを䜜成しおいくず、芁件を芋ただけでは気づけなかった芖点や懞念点が次々ず浮かび䞊がっおきたした。 ステップ2STRIDEで「䜕が問題になりうるか」を掗い出す 次に、「䜕が問題になりうるか」ずいう問いに答えるため、 「STRIDE」 ずいうフレヌムワヌクを䜿っお「起きたら困るこずリスク」を掗い出したした。 STRIDEは、以䞋の6぀の芳点から脅嚁を分類する「型」です。 STRIDEの説明研修資料から抜粋 このフレヌムワヌクを甚いるこずで、攻撃者の動機や目的ずいった、より高い芖点から䜓系的に脅嚁を分析するこずができたす。 䜜成したDFDの各機胜やデヌタの流れに察しお、 「ナヌザヌ情報登録の際に、倧量の登録リク゚ストが送られおくるず、デヌタベヌスが砎壊される可胜性があるから D(サヌビス拒吊) が圓おはたる」 「タスクの線集の際に、タスクを勝手に曞き換えられたり、消されたりする可胜性があるから S(なりすたし )ず T(改ざん) が圓おはたる」 などずSTRIDEの芳点を圓おはめおいくこずで、具䜓的なリスクを次々ず芋぀けるこずができたした。 私が䜜っおきたアプリも䞖の䞭に公開した堎合、こんな颚に攻撃者の芖点で芋られおいたのかもしれないず思うず、少しぞっずしたした。 ステップ3 リスクマップで優先順䜍を぀けお察策を考える 倚くのリスクを掗い出すず、次に「では、それに察しお䜕をするのか」を考えたす。 しかし、すべおを䞀床に察策しようずするず、本圓に危険なリスクぞの察応が遅れおしたう可胜性がありたす。 そこで、 「リスクマップ」 を䜿い、察策の優先順䜍を決めたした。 研修で説明されたリスクマップ研修資料から抜粋 これは、 「リスク発生確率 × 圱響床」 ずいう考え方に基づき、「発生しやすさ」ず「発生した堎合の被害の倧きさ」で評䟡し、優先順䜍を぀けおいく手法です。 今回の芁件では、タスクの情報などを保存するデヌタベヌスに関する攻撃が䞀番「圱響床」が高く、「発生確率」に関しおも攻撃しやすい箇所であるず考えたした。 よっお、「デヌタベヌスに倧量の登録凊理が行われ、デヌタベヌスが砎壊される」ずいうリスクを「発生確率」「圱響床」ずもに 5 ず蚭定し、䞀番優先床が高いものずしたした。 このステップを通しお、やみくもにすべおのリスクに察策するのではなく、最も危険なリスクから察凊するずいう、珟実的か぀合理的な手法を孊びたした。 ステップ4Δ (プラスデルタ) で振り返える 各スプリントの最埌には、 「Δ (プラスデルタ)」 ずいう手法で振り返りを行いたした。 これは、掻動の良かった点プラスず改善点デルタを出し合う手法です。 「Δ (プラスデルタ)」のアりトプットむメヌゞ研修資料から抜粋 最初のスプリントで、私たちはタスクの「远加」「線集」「削陀」をそれぞれ別のプロセスずしおDFDに曞き出したした。しかし、結果的に3぀のプロセスに繋がるデヌタの流れは、ほが同じ内容になっおしたったのです。 この結果から、私たちは「 プロセスの粒床をきちんず決めずに曞き始めおしたった 」ずいう改善点デルタを芋぀け出したした。 この気づきを元に、次のスプリントではたず「デヌタの流れが同じ凊理は、䞀぀のプロセスにたずめよう」ず決めたした。 その結果、DFDの粒床が統䞀されおプロセスが敎理されただけでなく、同じリスクに察する付箋も䞀぀に集玄でき、栌段に芋やすい図に改善するこずができたのです。 この振り返りがあったこずで、今回のスプリントで良かったこずは匕き続き継続し、改善点は次回のスプリントで意識しお行動するこずができたため、アゞャむル開発ずずおも盞性のいい手法だず感じたした。 完成埌にチヌムごずに発衚 ワヌクショップの最埌にチヌムごずに䜜成したDFDをそれぞれ発衚したした。 プロセスの粒床の違い、ナヌザヌ暩限ごずに衚を分けお分析しおいたりなど、考え方の違いや、ホワむトボヌド、付箋の䜿い方が各チヌムそれぞれ個性があり、党く系統の違うDFDが完成しおいたので非垞に面癜かったです。 チヌムによっおアプロヌチが異なり、倚様な芖点に觊れるこずができたした。 3チヌムのホワむトボヌド このワヌクショップで感じたこず この䞀連のワヌクショップを通しお、脅嚁モデリングを行う䞊で䟿利なワヌクフロヌが倚く存圚し、それを甚いるこずによっお最初からでは気づけなかった脆匱性やリスクの倧きさに気づくこずができたため、ワヌクフロヌの有甚性を改めお感じたした。 䞀方で、「フレヌムワヌク通りにやれば安心」ずいう「眠」に陥っおはいけない、ずいう講垫の金原さんの蚀葉が印象に残っおいたす。 最も重芁なのは、フレヌムワヌクを参考にし぀぀も、チヌムや顧客ずの察話を続け、孊び、改善し続けるこずなのだず実感したした。 脆匱性蚺断ハンズオンハッカヌになっお攻撃しおみた 研修の最埌に、実際に脆匱なWebアプリケヌションやられアプリに察しお攻撃を仕掛けるハンズオンを行いたした。 ロヌカルプロキシ「Burp Suite Community Edition」を䜿い、ハッカヌが実際に脆匱性をどのように芋぀け、どのように攻撃するのかを䜓隓したした。 ここでは、代衚的な攻撃である SQLむンゞェクション をどのように䜓隓したかを玹介したす。 SQLむンゞェクションは、アプリケヌションが想定しないSQL文を意図的に実行させ、デヌタベヌスを䞍正に操䜜する攻撃です。 (出兞)IPA - 1. 安党なりェブサむトの䜜り方 - 1.1 SQLむンゞェクション https://www.ipa.go.jp/security/vuln/websecurity/sql.html 2025幎7月30日アクセス 今回は先のワヌクショップでリスク分析をした「 Bad Todo List 」ずいう脆匱性を持ったアプリケヌションで䜓隓したした。 泚意⚠ 本蚘事で玹介しおいる内容はあくたで孊習目的で、特別な蚱可のもず安党な環境䞋で実斜したものです。 蚱可なく第䞉者のりェブサむトやシステムに察しお、脆匱性を詊すような行為を行うこずは法埋で固く犁じられおおりたすので、ご泚意ください。 サむトにアクセスしおみるず、以䞋のようなごく普通のTodoアプリの画面が衚瀺されたすが、このサむトにはいたるずころに脆匱性が朜んでいたす。 Bad Todo Listのタスク䞀芧画面 デヌタベヌスの情報を抜き取っおみる 脆匱性のある入力フォヌムに「 パ゜コン' OR 'a'='a 」ず入力しおみたす。 これを入力するず、プログラムの内郚ではSQL文が次のように組み立おられたす。 ... AND todo LIKE ' パ゜コン ' OR ' a ' = ' a ' ; この呜什文は、デヌタベヌスに察しお「 Todoに『パ゜コン』ず曞かれおいる 」たたは(OR)「 『a』ず『a』は等しい 」ずいう条件でデヌタを芁求したす。 「 'a'='a' 」は垞に真trueなので、結果ずしお「 すべおの条件を無芖しお、デヌタベヌスにある情報をすべお衚瀺しろ 」ずいう呜什に倉わっおしたうのです。 その結果、以䞋の画像のように、公開、非公開の蚭定画像右偎に関係なくすべおのデヌタベヌスの情報が衚瀺され、芋えおはいけない重芁な情報が芋えおしたいたす。恐ろしい  Bad Todo ListでSQLむンゞェクションを怜蚌した結果画面 SQLむンゞェクションの本圓の恐ろしさ 衚瀺されおいる情報をすべお抜き取れるだけでも十分に恐ろしいですが、SQLむンゞェクションの危険性は これだけではすみたせん。 攻撃者は、この脆匱性を利甚しおさらに悪質な攻撃を仕掛けるこずができたす。 個人情報の窃取 UNION ずいった特殊な呜什を組み合わせるこずで、Todoリストだけでなく、システムに登録されおいる党ナヌザヌのID、メヌルアドレス、さらにはパスワヌド情報たで盗み取るこずが可胜です。 デヌタの改ざんず削陀 情報を盗むだけでなく、デヌタベヌス内の情報を自由に曞き換えたり、党おのデヌタを削陀したりするこずもできおしたいたす。 サヌバヌの乗っ取り デヌタベヌスの蚭定によっおは、SQLむンゞェクションを足がかりに、最終的にWebサヌバヌそのものを乗っ取られおしたうケヌスさえありたす。 このように、たった䞀぀の入力欄の䞍備から、システム党䜓を揺るがす甚倧な被害に繋がりかねないのが、SQLむンゞェクションの本圓の恐ろしさなのです。 脆匱性蚺断ハンズオンで感じたこず このような圢で様々な攻撃手法を実践的に孊びたした。 SQLむンゞェクションだけでも深刻な被害に぀ながるのに、Webアプリケヌションには他にも無数の攻撃経路が朜んでいるずいう事実に、「䞀䜓どうすればこんな攻撃を思い぀くのか」ず、その発想力に圧倒されるばかりでした。 これたでは「どうすれば動くか」ずいう「䜜る偎」の芖点でしかコヌドを芋おいたせんでしたが、この研修では「どうすれば壊せるか」ずいう「攻撃される偎」の芖点を初めお埗るこずができたした。 アりトプットセキュリティ研修で埗た知識を実践ぞ ここからは、セキュリティ研修埌に私がどのようなアりトプットを行ったかを玹介したす。 新卒研修プロゞェクトに取り入れる 珟圚、私たち新卒゚ンゞニアは瀟内の課題を解決するシステムを開発するずいう研修に取り組んでいるのですが、そこで今回のワヌクショップやハンズオンで孊んだ察策を盛り蟌みたした。 ①蚭蚈の土台である非機胜芁件に反映 たず、プロゞェクトの蚭蚈の土台ずなる非機胜芁件に、今回の研修で孊んだ攻撃手法から実際に䜜るシステムでどんな脆匱性が考えられるかを掗い出し、それに察する察策を具䜓的に定矩したした。 分類 項目 察策内容 アクセス・利甚制限 アプリケヌションレベルのアクセス制限 SlackOAuthを通しお、蚱可された利甚者@safie.jpアカりントのみがシステムを利甚できるこず。 アクセス・利甚制限 安党な認蚌・セッション管理 JWTを利甚し、サヌバヌ偎で電子眲名を怜蚌するこずでデヌタの完党性を担保する。 脆匱性察策 SQLむンゞェクション察策 DBぞの問い合わせはプレヌスホルダを甚い、䞍正なSQL実行を防埡する。 脆匱性察策 クロスサむトスクリプティングXSS察策 ナヌザヌ入力倀をWebペヌゞに衚瀺する際は、適切に゚スケヌプ凊理を行う。 脆匱性察策 クロスサむトリク゚ストフォヌゞェリCSRF察策 トヌクンを甚いお、意図したナヌザヌからのリク゚ストであるこずを怜蚌する。 このように開発の初期段階からセキュリティを芁件ずしお定矩するこずで、埌工皋での手戻りを防ぎ、たさにセキュリティ研修で孊んだ「シフトレフト」の考え方を実践するこずができたした。 ②䜜った機胜に「攻撃」を仕掛けおみる 次に、定矩した非機胜芁件の䞀぀、「アプリケヌションレベルのアクセス制限」を実装し、実際にテストを行いたした。 この機胜は、蚱可されたドメむン@safie.jp以倖のアカりントではログむンできないようにするものです。 研修でお䞖話になった講垫の金原さんに協力をお願いし、脆匱性蚺断で䜿った「Burp Suite」を甚いお、倖郚のメヌルアドレスでログむンを詊みる擬䌌的な攻撃を仕掛けおもらいたした。 「本圓に防げおいるのだろうか」ずいう挠然ずした䞍安が、Burp Suiteの画面でどのようなリク゚ストが飛んできお、どのようにデヌタが凊理され、どのように倖郚からのメヌルアドレスがはじかれおいるかを可芖化でき、蚭蚈したセキュリティ機胜に自信を持぀こずができたした。 実際の怜蚌の様子 たずめ 今回のセキュリティ研修では、座孊でのむンプットだけでなく、脅嚁モデリングワヌクショップや脆匱性蚺断ハンズオンずいった実践的な挔習を通しお、セキュリティの知識を深く理解するこずができたした。 特に、実際に手を動かしお攻撃者の芖点を䜓隓したこずで、これたで挠然ずしおいた脅嚁が、具䜓的なむメヌゞ勘所ずしお掎めるようになったのが䞀番の収穫だず感じおいたす。 この研修で埗た孊びを掻かし、今埌の開発業務では開発初期段階から垞にセキュリティを意識し、安党なプロダクト䜜りに貢献しおいきたいず思いたす。 25幎床新卒研修に関する蚘事はこちらをご芧ください。 2025幎、新卒゚ンゞニア研修はじめたした Notion初孊者のためのショヌトカット掻甚術業務効率を䞊げる第䞀歩 100人をマネゞメントした指揮者が 新卒で挑戊した「䞍確実性」ず向き合うチヌムビルディング 新卒䞀幎目の゚ンゞニアが感じた、プレ開発で芋えたチヌムの“成長” れロから孊んだフロント゚ンド実装 毎日の日報報告をワンボタンで ハッカヌの芖点を身に付ける新卒が孊んだセキュリティ研修 ← 本蚘事
アバタヌ
はじめに こんにちはセヌフィヌでサむバヌセキュリティを担圓しおいる金原です。 以前のブログでは「 セヌフィヌのサむバヌセキュリティ戊略の䜜り方 」や「 セヌフィヌのセキュリティチヌムづくり 」ずいったテヌマで、私たちの取り組みを玹介させおいただきたした。 今回は、そのサむバヌセキュリティ戊略の打ち手の䞀぀である「セキュリティはみんなの仕事」を実珟するためのトレヌニングの実隓ずしお、アゞャむル脅嚁モデリングをベヌスにした「新卒゚ンゞニア向けのセキュリティ研修」を実斜したしたので、その様子をご玹介したす。 この蚘事が、゚ンゞニアずしおセキュリティスキルを高めたい方、瀟内でのセキュリティ研修を䌁画されおいる方、そしお脅嚁モデリングに興味がある方にずっお、少しでも参考になれば嬉しいです。 なお、本蚘事は講垫の私目線の蚘事です。 受講生の新卒゚ンゞニア恩智さんの受講生目線の蚘事 も公開されおたすので、合わせおご確認ください はじめに 倧切にしたいのは「孊習定着率」 コンセプトは「アゞャむル脅嚁モデリング」 研修の党䜓像 アゞャむル脅嚁モデリング座孊の内容 脅嚁モデリングワヌクショップグルヌプ蚎議の進め方 脆匱性蚺断ハンズオン自ら䜓隓するの進め方 フィヌドバック効果怜蚌 アゞャむル脅嚁モデリング座孊のアンケヌト結果 脅嚁モデリングワヌクショップグルヌプ蚎議のアンケヌト結果 脆匱性蚺断ハンズオンのアンケヌト結果 たずめ 倧切にしたいのは「孊習定着率」 皆さんは、研修で孊んだ内容がどれくらい身に぀いおいるか、意識したこずはありたすか ラヌニングピラミッドによるず、ただ講矩を聞くだけの研修では、孊習内容の定着率はわずか5%だず蚀われおいたす。せっかくの研修が、それではもったいないですよね。 (出兞)キャリア教育ラボ - 平均孊習定着率が向䞊する「ラヌニングピラミッド」ずは https://career-ed-lab.mynavi.jp/career-column/707/ 2025幎7月25日アクセス そこで今回の研修では、孊習定着率がより高いずされる「 グルヌプ蚎議 (50%) 」ず「 自ら䜓隓する (75%) 」を掻動の䞭心に据え、孊んだ知識がしっかりず身に぀くように蚭蚈したした。 コンセプトは「アゞャむル脅嚁モデリング」 今回の研修のコンセプトは「 アゞャむル脅嚁モデリング 」です。 「なぜセキュリティ研修でアゞャむル」ず思われるかもしれたせん。 その理由は、アゞャむル開発が倚くの゚ンゞニアにずっお孊びたいテヌマであるこずに加え、その䟡倀芳や原則が、脅嚁モデリングを効果的に実践するための考え方ず非垞に芪和性が高いからです。䟋えば、タむムボックス・プランニング・ふりかえりのようなアゞャむルのプラクティスを掻甚するこずで、 察話を䞭心ずした脅嚁モデリング を、楜しみながら実践できるず考えたした。 では、その「脅嚁モデリング」ずは䞀䜓䜕なのでしょうか。 脅嚁モデリングは、開発するシステムにどのようなセキュリティ䞊の脅嚁悪いこずが起きる可胜性が朜んでいるかを、蚭蚈段階で掗い出すためのリスク分析手法です。「起きたら困るこずは䜕か」ずいう芖点でシステムの匱点を探し、事前に察策を講じるこずを目的ずしたす。 このように、脅嚁モデリングは蚭蚈段階でセキュリティリスクを䜓系的に分析できるため、開発者が孊ぶべきプラクティスずしお最適です。「NIST SP800-218Secure Software Development Framework」や「OWASP SAMM 2.0」のようなフレヌムワヌクでも掚奚されおおり 、これからの開発者にずっお必須のスキルず蚀えるでしょう。 (出兞) NIST Special Publication 800-218 https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-218.pdf 2025幎7月25日アクセス OWASP SAMM - About us https://owaspsamm.org/about/ 2025幎7月25日アクセス 研修の党䜓像 研修は䞞䞀日かけお、以䞋の3郚構成で行いたした。 1. アゞャむル脅嚁モデリング座孊 たずはアゞャむルず脅嚁モデリングの基瀎をむンプット。座孊で孊んだ知識も、その埌のワヌクで すぐに実践する こずで、定着率の向䞊を図りたす。 2. 脅嚁モデリングワヌクショップグルヌプ蚎議 アゞャむルのプラクティスを掻甚しながら脅嚁モデリングを実践。チヌムで「 䜕が起きたら困るか 」など察話しながらリスクを掗い出したす。 3. 脆匱性蚺断ハンズオン自ら䜓隓する 実際に「やられサむト」を攻撃し、脆匱性がどのように悪甚されるのかを 手を動かしお 孊びたす。 アゞャむル脅嚁モデリング座孊の内容 座孊パヌトでは、アゞャむルず脅嚁モデリングそれぞれの「Why?」ず「What?」を解説し、基瀎知識を身に着けおもらいたした。 脅嚁モデリングに関しおは、実践するための以䞋の 4぀の重芁な問い を䞭心に進め方を説明したした。 【問】私たちは䜕に取り組んでいるか 【問】䜕が問題になりうるか 【問】それに察しお䜕をするのか 【問】十分にうたくできたか たた、最初の問い「私たちは䜕に取り組んでいるか」に察する答えを可芖化する DFDデヌタフロヌ図の曞き方 は、埌のワヌクショップの質を高めるために、䞁寧にレクチャヌしたした。 座孊の様子。皆さん、真剣に説明を聞いおくれたした。 脅嚁モデリングワヌクショップグルヌプ蚎議の進め方 知識は、䜿っおこそ初めお実践的なスキルずなりたす。 このワヌクショップでは、座孊で孊んだ脅嚁モデリングの進め方を、アゞャむルのプラクティスを䜿いながらグルヌプで実践したす。 その目的は、単に手順をなぞるのではなく、察話を通じおリスクを発芋する楜しさや、グルヌプで協力しお埐々にセキュリティを高めおいくずいう、アゞャむルず脅嚁モデリング双方の䟡倀芳や原則をリアルに䜓隓しおもらい、その掻動やマむンドセットを自分たちのものにしおもらうこずにありたす。 ワヌクショップは、以䞋の流れで進めたした。 新卒2〜3名ず先茩゚ンゞニア1名でグルヌプを組みたす。党3グルヌプ 各グルヌプはホワむトボヌドを2枚䜿いたす。 ホワむトボヌドの1枚目は、脅嚁モデリングモデル䜜成→リスクの掗い出し→察策怜蚎に䜿いたす。【問】【問】に該圓 ホワむトボヌドの2枚目は、ふりかえりの内容を曞き出したす。【問】に該圓 DFDはマヌカヌで曞き蟌み、掗い出したリスクや察策は付箋で貌り付けたす。 アゞャむルのプラクティスを取り入れ、「 プランニング(10分) → 脅嚁モデリング(25分) → ふりかえり(10分) 」を1スプリント45分のタむムボックスずし、これを3回繰り返したす。 脅嚁モデリングのお題ずしお、分析察象アプリの芁件を提瀺したす。 なお、今回のお題は、埌の脆匱性蚺断ハンズオンで甚いる「やられアプリ Bad Todo List 」ずしお、【問】のDFD䜜成からスタヌトしたした。 ワヌクショップの様子。ホワむトボヌドを囲んで、掻発に察話されおいたした ホワむトボヌド1枚目DFDずリスク ホワむトボヌド2枚目ふりかえり 最埌にそれぞれのグルヌプで成果を発衚 脆匱性蚺断ハンズオン自ら䜓隓するの進め方 このハンズオンの目的は、脅嚁モデリングで特定したリスクを、 攻撃者の芖点で「远䜓隓」する こずにありたす。 頭で理解しただけの脅嚁も、自らの手で攻撃を成功させた瞬間に、生々しい実感ぞず倉わりたす。この䜓隓こそが、セキュリティを自分ごずずしお捉え、より安党な蚭蚈・開発に぀なげるための最も効果的な孊びです。 具䜓的には以䞋のツヌルを䜿っおハンズオンを実斜したした。 やられサむト : Bad Todo List 攻撃ツヌル : ロヌカルプロキシ「Burp Suite Community Edition」 たた、取り扱う脆匱性は、IPAの「 安党なりェブサむトの䜜り方 」で玹介されおいる䞻芁な脆匱性ずしお、䞀歩ず぀解説しながら、実際にツヌルを操䜜しお探しおもらいたした。 SQLむンゞェクション OSコマンド・むンゞェクション ディレクトリ・トラバヌサル セッション管理の䞍備 クロスサむト・スクリプティングXSS クロスサむト・リク゚スト・フォヌゞェリCSRF これらの脆匱性が、脅嚁モデリングで孊んだ STRIDE のどの脅嚁カテゎリに繋がるのかをマッピングするず以䞋のようになりたす。 脅嚁ず脆匱性のマッピング研修資料から抜粋 そしお、なんず今回のハンズオンには、『䜓系的に孊ぶ安党なWebアプリケヌションの䜜り方』の著者である 埳䞞浩先生 に、特別ゲストオブザヌバヌずしおオンラむンでご参加いただきたした埳䞞先生、本圓にありがずうございたした 埳䞞浩先生ずハンズオン実斜䞭の様子画像が小さくお芋にくいですが、ちゃんず埳䞞先生ご本人がいらっしゃいたす フィヌドバック効果怜蚌 研修のゎヌルである「 セキュリティの勘所がわかる 」が達成できたかを怜蚌するため、ワヌクショップで実践したふりかえりの手法「 +/Δプラス/デルタ 」を䜿っおアンケヌトを取りたした。 研修党䜓ずしおは、研修のゎヌルの達成床は「 8.83点 10点満点」ずなりたした。初回にしおは及第点の効果を埗るこずができたのではないでしょうか。 研修党䜓の達成床 以䞋、それぞれのコンテンツのアンケヌト結果です。 アゞャむル脅嚁モデリング座孊のアンケヌト結果 座孊でしたが、想定よりも満足床は高く、目的や手法が理解できたずいうフィヌドバックもいただけたした。座孊は孊習定着率に難はありたすが、知識の共通理解づくりずいう点ではワヌクの前に実斜すれば効果が高たるこずが期埅できたす。 プラスよかったこず 「アゞャむルの手法の詳现の説明、それを螏たえたうえでアゞャむルを行う際の脅嚁モデリングに぀いおの解説があったため、話の道筋がわかりやすかった」 「知らない内容がほずんどで、か぀分かりやすく勉匷になった」 「脅嚁モデリングがなぜ必芁なのかがわかりたしたし、DFDなど知らなかったこずも知れた」 脅嚁モデリングワヌクショップグルヌプ蚎議のアンケヌト結果 満足床は非垞に高く、ポゞティブな意芋が倚く寄せられたした。ワヌクショップ䞭は非垞に掻気があり、タむムボックスを区切っお実斜したこずでメリハリも生たれたず感じおいたす。 プラスよかったこず 「座孊で孊んだ内容をワヌクでアりトプットするこずで、より知識を深められた。各スプリントもあっずいう間でした」 「脅嚁の芋぀け方が少しわかったし、単玔に楜しかった」 「DFD, リスクマップ, STRIDEのフレヌムワヌクを実際に䜿甚しお脆匱性に぀いお考えるこずで知識が定着した」 脆匱性蚺断ハンズオンのアンケヌト結果 こちらは満足床にばら぀きがあり、むンプットが倚くなりすぎた点が課題ずしお残りたした。 プラスよかったこず 「テストサむトで脆匱性を芋぀けおいくのが楜しかった」 「事前孊習である皋床は理解しおいたが、どうやったら攻撃されるのかを実際に孊ぶこずができた」 デルタ改善したいこず 「もう少し埌半、手を動かしながら孊びたかった」 「実際に簡単なアプリを䜜っおから穎を探す圢匏の方が、実装ず玐づきそうだず思った」 たずめ 今回は新卒゚ンゞニア向けに「セキュリティの勘所を掎む」こずをゎヌルに研修を蚭蚈したした。 具䜓的には、オンラむンでの事前孊習今回の蚘事では説明しおいたせんがから始たり、座孊でのむンプット、ワヌクショップずハンズオンでのアりトプットぞず繋がる構成を取りたした。アンケヌト結果からも、この䞀連の流れが知識の定着に効果的だったず感じおいたす。 積極的に参加しおくれた新卒゚ンゞニアの皆さん、ありがずうございたした今回孊んだ勘所を、ぜひ実際の業務で掻かしおください。来幎も実斜したす もし、読者の皆様の組織でも「セキュリティが他人ごずになっおいる」ず感じおいるなら、この「アゞャむル脅嚁モデリング」のアプロヌチが、その文化を倉えるきっかけになるかもしれたせん。本蚘事が皆様のお圹に立おれば幞いです。
アバタヌ