技術ブログ追加申請フォームを設置しました。

新着

ハッキングの実践・対策の練習ができる!「ハッカー入門」公開中

paiza
2022-06-06 04:00:00
[プログラミング] [プログラミング-プログラミング初心者] [プログラミング-プログラミング学習]
Web開発について学んでいく過程で、ハッキングやセキュリティなどに興味を感じる方もいるでしょう。 動画でプログラミングが学べるpaizaラーニングでは、ハッキングの実践やセキュリティ対策の練習ができる「攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)」を公開しています。 今回は、このハッカー入門で学べる内容についてご紹介します。 www.youtube.com ハッカー入門の内容は? 誰もがホワイトハッカー(善意のハッカー)になれるよう、クラッカー(悪いハッカー)の攻撃手法を実際に試しながら学べるセキュリティ講座です。SQLインジェクションやXSS(クロスサイトスクリプティング)といったハッキング手法は、実際のWebサイトで試してしまうと不正アクセス禁止法に抵触しますが、このレッスンではpaizaラーニングの仮想実行環境上でデモサイトのPHPコードを実際に修正して、SQLインジェクションの脆弱性への対策を実践できます。 ハッカー入門を教えてくれるのは? 「攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)」の進行役は、新キャラクター「涼月美影」。声を担当しているのは声優の内田真礼さんです。 実際のレッスン内容 01:最近のセキュリティ動向を知ろう まずは、最近のセキュリティ動向について学びましょう。Webサイトの攻撃手法として有名なSQLインジェクションとクロスサイトスクリプティング(XSS)の概要をご紹介します。 02:デモサイトの動作を確認する このレッスンで使用するデモサイトの動作を確認します。一般のユーザーとしてログインし、一通りの機能を使ってみましょう。 03:SQLインジェクションで攻撃する SQLインジェクションでレッスン内のデモサイトを実際に攻撃してみます。そして、攻撃者の視点でaliceのパスワードを盗み出しましょう。 04:SQLインジェクションの対策をおこなう サイト開発者の視点で対策をおこないます。デモサイトのPHPコードを実際に修正して、SQLインジェクションの脆弱性への対策をしてみましょう。 05:クロスサイトスクリプティングで攻撃する クロスサイトスクリプティング(XSS)で、デモサイトを攻撃します。強制的に外部サイトへアクセスさせる、不正なJavaScriptを掲示板サイトに埋め込んで、ユーザーの情報を盗み出しましょう。 06:クロスサイトスクリプティングの対策をおこなう 最後に、デモサイトのPHPコードを修正してXSSに対する脆弱性への対策をしてみましょう。 01:最近のセキュリティ動向を知ろう 02:デモサイトの動作を確認する 03:SQLインジェクションで攻撃する 04:SQLインジェクションの対策をおこなう 05:クロスサイトスクリプティングで攻撃する 06:クロスサイトスクリプティングの対策をおこなう PHPってどんな言語? ハッカー入門はPHPを使ったレッスン内容となっております。 PHPは 比較的コードが書きやすく、入門者でも学びやすい Web開発に特化した言語で、短いコードでWeb開発ができる などといった特徴があるプログラミング言語です。 求人数も多く、Webサービスの開発やゲーム開発等で広く利用されており、WordPressなどの開発でもPHPが使われています。 ハッカー入門をやってみたいけど、PHPを使ったことがない、プログラミング自体がまだ初心者だし…という方は、paizaラーニングのPHP入門編から始めると無理なく学べるかと思います。 paizaラーニングのPHP入門編 まずはPHPを使ってプログラミングの基本的な概念を学びましょう。 1: PHPをはじめよう 標準出力、コメントのつけ方、変数、ランダム関数、演算子 2: 条件によって処理を変えてみよう 条件分岐(if文)、比較演算子、日付処理 PHP入門編3: ループ処理を学ぶ 標準入力、ループ処理(for文・while文) 4:配列の基礎、explodeを学ぶ 配列の使い方、explode関数を使った文字列分割 5:連想配列、foreach、ソートを学ぶ 連想配列の使い方、foreach文の使い方、ソート 6:多次元配列を理解しよう 2次元配列の使い方 7:関数を理解しよう 関数の作り方、引数、戻り値、スコープについて 8:クラスを理解しよう クラス、アクセス修飾子、staticについて 9: さらにクラスを理解しよう クラスの継承、メソッドのオーバーライド 10: 例外処理を理解しよう 例外処理の作り方、throw、catch、finallyについて PHP入門編について詳しくはこちら 「攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)」について詳しくはこちら 「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。 詳しくはこちら そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。 スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。 詳しくはこちら

「Pepabo Tech Talk -入社1年以内のメンバーが語る、ペパボのSREチームの取り組み-」開催レポート

GMOペパボ
2022-06-06 03:18:53
こんにちは!HR統括部で、エンジニア採用担当をしている@achamixxです。 このブログでは、2022/04/26に開催された「Pepabo Tech Talk -入社1年以内のメンバーが語る、ペパボのSREチームの取り組み-」の発表資料と、当日いただいた質問を公開します! 今回のイベントは昨年入社してくれたSRE3名に登壇いただき、SREになった理由や、入社後取り組んだ仕事になどについてお話ししました! オープニング: @tnmt ペパボのSREについて、ペパボのエンジニア組織やエンジニアカルチャー、技術環境などのお話しをしました。 資料はこちらをご覧ください。 バックエンド志望だった新卒がSREになるまで @h0mirun_deu SREをよく知らない元バックエンド志望の新卒がSREになったという話をしました。 Q&A 最近は各社でSREを採用してると思うんですが、どうしてペパボに決めたんでしょうか? 大学生の時はバックエンドエンジニアになるつもりで応募しました。 大学3年のときにWebアプリケーションのインターンを経て、入社の決め手は風通しの良さやアウトプットを重んじる社風に魅力に感じました。 ペパボに入ってからk8sを触ったとのことですが、習得する上で難しく思った点があればお聞きしたいです。大学でインフラをしっかり学ばれた方でもつまずくポイントがあれば、これから学ぶ方へのアドバイスにもなるのではと思いました。 Kubernetesのアーキテクチャが複雑で大きいのがつまずきポイントではないかなと思いました。 自分はドキュメントを見たり、チームの方々に聞くなどしています! ペパボのSREとして働くきっかけ @r_nakamine もともと未経験からこの業界に飛び込み、どんなきっかけでインフラ周りのお仕事に興味を持って、なぜ今ペパボのSREとして働いているかについてや、入社してからの苦労した経験などをお話しました。 Q&A 「何もわからない」ところから、いろいろと調べて、検証してみてと繰り返したようですが、自らひたすら調べた感じでしょうか。もしくは先輩方から指示がありやってみた、でしょうか。 指示があったというよりは興味があるものをひたすら検証したりとか、タスクに取り掛かる前に事前に検証して、少しでもわかる状態まで持っていくみたいなモチベーションでやってました! k8sクラスタの構築をしてみたいと思うのですが、クラウド破産への対処はどういったことをしましたか?VMで構築する場合とクラウド上で構築する場合で、k8sの挙動への理解度は変わると思いますか? クラウド破産は実際に起こったわけではないですが、度々リソースの消し忘れで無駄に料金がかかってしまうことがあったので、AWS Trusted Advisor などを使ってアラートを設定したりしていました。 k8sをVMで自前で構築する場合とクラウドのマネージドサービスを使って構築する場合の理解度はもちろん変わってくると思っていて、自前で構築する場合はk8s clusterを動作させる各種コンポーネントに関する深い知識が必要になってくると思います。 ペパボの「いるだけで成長する環境」をどのような意味で実感されていますか?研修や読書会などの教育体制以上に、すごい仲間に刺激されるから成長するという部分がやはり大きいのでしょうか? もちろん、ただ「いるだけ」では成長することはないですが、自身の成長を加速させるという意味では、まわりの同僚を巻き込みながら刺激し合い、お互いに日々成長を実感できる環境が整っていると感じました。 ペパボのSREチームへジョインした私が取り組んできたこと @ryuichi_1208 SREチームへジョインして約7カ月でやってきたことについてのまとめを発表しました。 Q&A ポストモーテムを自社でも運用したいと思っているのですが、いわゆるインシデント報告書とはどのような違いがありましたでしょうか?またポストモーテムの見本にしたものはありますか?やはりオライリーのSRE本の巻末付録のやつでしょうか? 大きな違いとしては作成する目的になるかなと考えます。ポストモーテムはあくまでも内部のエンジニアと今後プロジェクトに参画するメンバーを対象として「どのような障害が過去に起きていたか」や「どのように改善を行ったか」に重きを置いて運用をしています。フォーマットはオライリー 本の内容を参考に手を加えたものを使用しております。 まとめ:SRE積極採用中です! これからSREを目指す方向けに、研修付き採用「【2022/07/01 入社必須】ペパボカレッジ(SRE:Site Reliability Engineer)」の採用を実施しております。応募締切が 2022/05/11(水)10:00まで です。ご応募お待ちしております。 【2022/07/01 入社必須】ペパボカレッジ(SRE:Site Reliability Engineer) もちろん経験者向けの採用も実施中です! サイトリライアビリティエンジニア(SRE: Site Reliability Engineer) どちらもご応募お待ちしております!

GitHubのIssuesで「プロジェクトメンバーの増減時にやることリスト」を管理する

クラスメソッド
2022-06-06 03:12:18
[その他] [GitHub]
プロジェクトメンバーが増減する際にやることはたくさんあります。 増えるとき プロジェクトの説明 利用しているSaaSへの招待 AWSのIAMロール作成 Googleカレンダーの予定に追加 など 減るとき 利用しているSa […]

Rails 7の新機能「query_log_tags」でSQLクエリに自動でコメントを追加する

GMOアドパートナーズ
2022-06-06 02:00:00
[AM] [Rails]
はじめに こんにちは。GMOアドマーケティングの石丸(@thomi40)です。 以前、本ブログでRails 6.1に新しく追加された機能について紹介しました。 今回はRails 7から追加された「query_log_ta

ユーザーの意図を汲む音声認識の高速化手法 〜 音声認識と自然言語処理の同時実現

Yahoo! JAPAN
2022-06-06 01:54:12
信号処理のトップカンファレンスICASSP2022で発表した、音声認識と自然言語処理を同時に実現する手法を紹介します。

マネーフォワードのインターンを振り返る in 2022

マネーフォワード
2022-06-06 01:00:29
はじめまして。 マネーフォワード業務基盤グループでインターンをしている村上です。 … 続きを読む → Tags: Del.icio.us Facebook TweetThis Digg StumbleUpon Comments: 0 (Zero), Be the first to leave a reply! You might be interested in this: MFクラウド経費とRODEMを使って近距離交通費精算を10秒で終わらせる マネーフォワードはシルバースポンサーとしてiOSDC JAPAN 2021を応援させていただきます! 【レポート】potatotips #36 を開催しました Moneyforward APIで車ゲームを作る ReactとReactNativeでFluxなTODOを実装してみた話Copyright © Money Forward Engineers' Blog [マネーフォワードのインターンを振り返る in 2022], All Right Reserved. 2022.

【入社エントリ】エンジニアとしてエニグモに新卒入社しました!

エニグモ
2022-06-06 01:00:02
こんにちは! 株式会社エニグモに22年新卒入社しました橋野です。 サービスエンジニアリング本部でBUYMAのサービス開発を担当しています。 今回の記事では、エニグモへの入社理由についてお話ししようと思います。 目次 わたしとは? コロナ禍のエンジニア就活 内定承諾を決めた3つの理由 エニグモのサービス 世界を変える新しい流れを エニグモで働く人 おわりに わたしとは? まずは簡単に私について自己紹介できればと思います。 学生時代はハッカソンが好きで、たくさんハッカソンに出場したり、また私自身もプログラミングの団体に所属しておりハッカソンを主催したりしたこともありました。 ハッカソンにたくさん出…

コンテナビルドを速くするためのテクニック

Studyplus
2022-06-06 12:00:03
[Docker] [SRE] [Rails] [Skaffold]
こんにちは! SREの栗山です。 最近観て良かった映画は「コーダ あいのうた」です。 今回は弊社で使っているコンテナビルドを速くするためのテクニックを紹介します。 以下のような一般的なテクニックに関しては他でよく紹介されているので今回は割愛します。 Dockerfileでは変更が少ないものを上に、変更が多いものを下に定義し、キャッシュが効くようにする .dockerignoreをちゃんと定義する マルチステージビルドを活用する bundle installの結果をキャッシュする 弊社のサーバーサイドではRuby on Railsをメインで使っています。 そのためコンテナビルド時にbundle …

チームに慣れてきたので、「ドラッカー風エクササイズ」でチーム内の期待値を合わせる

スペースマーケット
2022-06-03 11:42:51
こんにちは、技術部フロントエンドエンジニアを名乗っておりましたが 4月からグループリーダーとなりました和山です。 気づけば僕もスペースマーケットに入社して2年が経とうとしています。 早いです、本当にあっという間でした。 そして気づけばいつの間にかリーダーという立ち位置にいます。 続きをみる

マイクロサービスのデータぜんぶ抜く……gRPCで!

Retty
2022-06-03 10:07:09
[マイクロサービス] [システム設計] [Elasticsearch] [検索] [gRPC]
どうも、エンジニアの神 id:pikatenor です。書きかけの記事を下書きに突っ込んで放置していたらマネージャーの常松に目をつけられ、#Rettyマイクロサービス強化月間 第1週目の記事に祭り上げられることになりましたが無事に遅刻しました。記事の公開をお待ちいただいていた皆様には深くお詫び申し上げます。 engineer.retty.me そういうわけで今回は自作OSSの宣伝とそいつをサービスに組み込むに至った背景のお話です。 マイクロサービスのDB分割と集約 Logstash + gRPC という選択 大雑把な説明 gRPC Server 側の実装 良かったこと おまけ: プラグインの実…

新卒エンジニアが経験したSpeeeの実態

Speee
2022-06-03 10:00:00
こんにちは、Speeeのヌリカエでエンジニアをしています。21卒の染谷です。 学生の皆さん、突然ですがエンジニアとして会社で働くってどのようなものか想像できますか??私は開発系の長期インターンやアルバイト未経験だったので、学生の頃はなーんにもわからなかったです!!! 今回は新卒2年目になったということで、1年間仕事をしてみてどうだったのか、Speeeで仕事をするとはどんなものかを裁量権という切り口から実態を取り上げ、少しでも働くということが想像できればと思います。 この記事を読めば、私はSpeeeは楽しく働けているぞ!ということがわかります。 私のバックボーンや何故Speeeに入社したのか、より詳しくはこちらのエンジニア新卒採用サイトへどうぞ。 newgraduate.speee.jp はじめに 現在、私は新卒採用のイベントや面談で学生とお話する機会があり、私自身も学生の頃、同じようなこと聞いてたなー気になるよなーと思いながら、私の観点からSpeeeはこうだよと実体験を交えながら紹介をさせてもらっています。 この記事で裁量権にフォーカスを当てようと思ったのも、よく聞かれるのでどうせだったらブログにして読んでもらったほうが理解にズレがなく伝わるんじゃないかなと思ったのがきっかけです。それと採用イベントって1人の学生と話せる時間が短いんですよね、なのでこの記事でより理解してもらえればと思っています。 本題の前に私が学生だった頃の話をさせてください。学生時代に私がどのような経験をして、どのようなことを思っていたのか。そのことを知ってからこの記事を見て頂くと、より一層想像できると思います。また、前提が違うのであれば、読んでいるあなたにとっては私とはまた違う感想を抱くと思います。 学生時代 私は大学時代はプログラミング系のサークルに所属していてUnityC#でゲーム制作などしていました。リーダーを務めていましたが他にやる人が居なかったからやっていた、あるあるパターンです。 リーダーなのでマネジメントのようなことも兼任していたのですが、他のメンバーでやる気のある人はあまりおらず、プログラミングをするのが好きなのも相まって私自身が頑張ってなんとか作品を完成させていました。 そんな中、他大学の学生と1年間プロジェクト活動をする機会があり、そこで初めてやる気のある人と一緒に開発し「意見出し合いながらなにかをつくるって楽しいな」という経験しました。 このような経験から、私はやる気のある人たちと働きたい。自分の手を動かしてプログラミングしたいと思ったのでベンチャー会社に就職したいと思っていました。 また、SIerが候補から外れているのは、自らの手を動かしたい。早く成長したい。裁量権を持って自由に働きたいと思ったからです。 Speeeの組織体制 Speeeで1年間体験した実態を紹介する前に「裁量権」 という言葉はいろいろな意味合いで使われることがあるので、この記事の中ではこういう意味で取り扱うという前提を明示します。 役職に関係なく自由に発言ができる ビジネスとの距離が近い 立候補すれば開発したいタスクをできる 自分のやりたいように仕事を任せてもらえる 1と2は裁量権という言葉からはちょっと違うなと思いましたか?今この文章を見ると私もそう思います。当時の私としては垣根がなく自由ということでそのようなことを思っていました。1と2をより正確に言葉に表すのであれば「無責任範囲」と言えば良いでしょうか。 また、Speeeではプロダクト単位で開発をしているので、誰がどのようなことを役割として持っているのか簡単にチームメンバーの紹介をします。 プランナー🤓 ユーザのことを一番知っているビジネス職の人。どのようなことを実現すればユーザに価値を届けられるのかを考え、要件の元となるアイデアを出す。プロダクトオーナーとも言う。 エンジニア👨‍💻 実際にプログラムを書く人。エンジニアリングの観点からどうしたらユーザに価値届けられるか考える。 1週間に1時間ある会議で、プランナーが持ってきたアイデアを議論し、ユーザへ価値を届けるためにはこの機能作ったら良いのではないかと話し合って要件を考える。 実態 実際働いてみてどうかと言うと理想通りに働けています。 後ろの席に居るプランナーと話し合いながら、つくる意義を聞きながら開発しています。 社内メールのお作法はこう!とか、完全に要件化されたものが上から降りてきてそれをコーディングするだけ!ということは一切なかったです。 開発してるときに疑問点や改善点が出てきたらプランナーに対して、slackでメンションつけてメッセージや直接席に向かって口頭で会話しています。 プランナーにはいつも忙しいところ時間とってくれて感謝です 🙏 役職やビジネスとの距離(1, 2について) Speeeの人は皆、目的思考を持っていて目的を達成するためには何が必要かを考えながら会話をしています。役職は関係ないですし職種すらも関係がないです。プランナーの専門分野とエンジニアの専門分野をそれぞれ尊重し、意見を出しつつユーザにとって良いプロダクトになるよう開発しています。 「ユーザの要望を分析するとこんな機能あったら良さそう!」とプランナーがアイデアを持ってきたとして、エンジニアはその案をそのまま鵜呑みにして開発することはありません。「この機能は本当に必要なのだろうか」「このコンテンツを作成すると重い処理になり、ページスコアが落ちて結果的にSEO下がりそう。他の方法はないのだろうか」と話し合います。 開発するという手段はエンジニアの専門領域です。責任を持って目的(プランナーの実現したいこと = ユーザの価値)を達成するためにどのような開発をすれば良いのかと意見を出します。長いと1~2時間かけて話し合うこともあります。 また、営業職が同じフロアに居るので電話していない暇そうなときを捕まえて「この機能実際にクライアントってつかってくれていますか?」「なにか不満言っていませんか?」と聞いたりもします。 業務・責任領域(3, 4について) 好きなようになんでもやらせてもらえます。 「事業として成果出したいから今週はこれらのタスクを完了したい」とプランナーから提示されるのでその中からやりたいタスクをエンジニア同士で相談して自身がやるタスクを決めます。 Speeeではスクラム開発を採用しています。スクラムではチームとしてスプリント(私のチームでは1週間)を走り切るのが大切です。そのため自分の作業だけが終われば良いという訳ではなく、チームメンバーの誰かが苦戦しているのであればペアプロするなり、詰まっている点をGithubにpushして早期レビューするなどチームで走りきる工夫をしています。 スプリントをやりきるためにはどうするかエンジニア同士で相談し「誰がどのタスクを担当しようか」「私はこのタスクチャレンジしてみたいけれど、苦戦するかもしれないのでサポートお願いします」みたいな風にやるタスクを決めています。 また、語弊がないように言っておくと好きなようになんでもということは「最新の技術使いたいからそのライブラリ使って書き換える!」ということが自由にできる訳ではないです。もちろんその最新技術を使うことで今後の開発がやりやすくなって長い目で見ると開発スピードが上がる、SQLのパフォーマンスが向上してページスコアが上がるなど事業的なメリットがあるのであれば別です。 実際に私も「リファクタリングしたいです。何故なら今後の開発しやすくなって総合的に開発スピードが上がるからです」と打診してリファクタリングしたことがあります。自身のスプリントが早めに終わり、チームメンバーも特に苦戦していないようであれば改善系のタスクに取り組むこともあります。 コンテンツ追加をがしがしやっていると中々時間が取れないので、毎週ちまちまリファクタリングやエラー修正などをやっています。リファクタリングしたい箇所や気になったエラーはGithubのissueに自由に書き出して、そこから選んで開発しています。 このように事業として成果を出すためにどのようなシステムにていけば良いのか考えつつ、大きなものは打診してというやりたいように仕事を任せてもらえます。 まとめ ということで私が学生の頃に「これある環境良いなー」と思っていた1~4をSpeeeでは満たせているので、実際に楽しく働けています。 つまりユーザ価値を考えてプロダクトつくりたいならばSpeee良いぞという話です。 読んで頂いた皆様がSpeeeで働くことを想像できていれば幸いです。 最後に宣伝です。 Speeeでは24卒エンジニア向けにインターンシップを開催します! アルバイトのように実務を経験できる訳ではないですが、Speeeらしさを体験して頂く内容となっているので、Speeeに入社したらどのように働くのか体感できます! この記事を見て少しでも興味を持ってくれた方が参加してくれるのを待っています。 speee-recruit.snar.jp また、Speeeでは一緒にサービス開発を推進してくれる仲間を大募集しています! もしSpeeeに興味を持っていただいた方は以下で社内メンバーのカジュアル面談を公開しているので、お気軽にご連絡ください💁 tech.speee.jp Speeeでは様々なポジションで募集中なので、「どんなポジションがあるの?」と気になってくれてた方は、こちらチェックしてみてください!もちろんオープンポジション的に上記に限らず積極採用中です!!!

Better Stimulusガイド 04: イベントリスナーの追加・削除はStimulusで行う(翻訳)

Tech Racho
2022-06-03 08:30:02
[Ruby / Rails以外の開発一般] [Stimulus.js] [翻訳記事]
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Events – Better StimulusJS 原文更新日: 2021/07/16 原著者: Julian Rubisch — Stimulus Reflexのコアメンバーです サイト: Home – Better StimulusJS 🔗 1. マークアップにグローバルなイベントを登録する Bad connect() { document.addEventListener(...); } Good

【入社エントリ】エンジニアから技術広報にジョブチェンジ!

ラクス
2022-06-03 06:00:00
4/16にラクスに入社しました、技術広報の飯野です。 入社して1ヶ月と少し経ちましたので入社エントリを書いてみることにしました。 本投稿は社外の方はもちろんですが社内メンバーにも自己紹介の絶好の機会ですので、社内外を問わず読み物としてお楽しみいただければと思います。 「技術広報って何をしているの?」「なぜエンジニアから技術広報に?」という方から「ラクスってどんな会社か知りたい!」という方にまで幅広く読んでいただければ幸いです。 目次 経歴 転職のきっかけ 入社の決め手 ラクスの技術広報とは 入社後やっていること 社内の雰囲気 入社後の課題感 まとめ

フロントエンド定例 2022/6/3

ランサーズ(Lancers)
2022-06-03 05:31:48
[フロントエンド] [フロントエンド定例]
こんにちは、フロントエンドチームです。 今週のフロントエンド定例の内容を記載します。 フロントエンド定例について、以前の記事(ランサーズのフロントエンドチームが… The post フロントエンド定例 2022/6/3 first appeared on ランサーズ(Lancers)エンジニアブログ.

freeeの社内異動制度「異動戦国」のチーム紹介を一挙公開

freee
2022-06-03 02:00:01
[カルチャー] [キャリア] [ピックアップ]
こんにちは、DevBrandingのellyです。 先日ブログでご紹介したfreeeの社内異動制度「異動戦国」、この時期になると社内では毎年、異動希望者を募集するために各チームの熾烈なPR合戦が繰り広げられます。 今回は、その際のSlackや社内WikiでのPR合戦の様子をご紹介します。募集期間中の社内の雰囲気やfreeeの開発組織にはどんな仕事があるのか、どんな魅力があるのかを知ってもらうきっかけになれば嬉しいです。 Slack上で繰り広げられた今年のPR合戦の様子 チーム紹介 SREチーム DBREチーム DXチーム IAM (認証認可基盤開発)チーム サービス基盤チーム 課金基盤チーム …

自然言語処理を用いた効果的な広告テキストの自動生成

サイバーエージェント
2022-06-02 11:56:22
[エンジニア] [AI] [CADC2022]
  3月24日、サイバーエージェントのエンジニア・クリエイターによる技術カンファレンス「C ...

雑談から生まれたアイデアでかゆいところに手が届いた改善

Zaim
2022-06-02 11:14:06
家計簿サービス Zaim のデザイナーの今泉です。 今回は普段の施策とは別に、エンジニアとの雑談の中から生まれたアイデアで、少し空いた時間を使って、かゆい所に手が届くような改善ができた話をします。 続きをみる

AWS Step Functionsレシピ集

TECHSCORE
2022-06-02 11:00:00
はじめに AWSで定期的なデータ連携バッチを書く方法の一つにAWS Step Functions(以下Step Functions)があります。Step FunctionsはAWS Lambda(以下Lambda)を始めとするAWSの様々なサービスを組み合わせたワークフローを記述できるサービスです。LambdaおよびStep Functionsはバッチ用のサーバを構築・管理する必要がなく安価にサービスを運用できるため、私のチームでも活用しています。 LambdaおよびStep Functionsにはそれぞれ制約があり工夫が必要となる場合もあります。例えばパイプラインを定義するためにASL(Amazon State Language)というDSLを使いますが、ASLで何ができるかを理解するには時間が掛かります。細かい書き方などはすぐ忘れてしまって、以前書いたのを探すのに苦労したりもします。この記事は主に自分のために、用途別の「レシピ」をまとめようというものです。 西尾 義英(ニシオ ヨシヒデ) 開発から離れていた時期もありましたが最近プロダクトづくりに戻ってきました。 データを活用できる製品・基盤づくりがテーマです。 概要 後の説明のためにStep Functionsで取り扱う概念や用語について説明します。 ワークフロー Step Functionsではいわゆるパイプライン、つまり複数の処理を有向無循環グラフ(DAG)でつなげたワークフローを書けます。開発者ガイドではワークフローのことを状態遷移機械(state machine)、個々の処理を状態(state)またはタスク(task)と呼んでいます。状態遷移図で書いたワークフローの例を示します。 処理の始まりは「Start At: タスク名」で宣言します 最後のstateには「End: true」という属性を付与します あるstateの直後に起動する stateを「Next」で指定します 「Next」は一つだけ指定できますが、分岐やループなどの制御を実現する特別な stateがあります(下図) 分岐やループの中身が一つ以上の stateをもったサブ状態群となる場合があります データの流れ state間の入出力は JSON形式のテキストで、Lambdaとの連携が自然に行なえます。デベロッパーズガイドでは payloadと呼ばれることがあります。デフォルトではstateに入力されたJSONがそのままLambdaに渡り、Lambdaの出力が次のstateに渡ることになりますが、ASLの中でJSONを定義し直したり、JSONPath を使って抽出・変形することもできます。設定が可能な箇所を以下に示します。 基本的な書き方(SAM) Step FunctionsはAWSコンソールからGUI形式で開発することもできますが、実際の開発ではAWS SAMなどを使ってコードとして記述した方が良いと思われます。SAMで開発する時の書き方を説明します。 処理を行うLambdaを書く SAMテンプレートにAWS::Serverless::Functionリソースを定義する state machineを定義するためのASLをJSONまたはYAML形式で書く 3-1. 2で定義したLambdaのARNは変数置換(substitution)が可能です template.yamlにAWS::Serverless::StateMachineリソースを定義する 4-1. ASLでの変数置換(substitution)を定義します。2のLambdaのARNを参照します。 コピペミスや、ARN(!GetAtt リソース名.Arn)ではなく論理名(!Ref リソース名)を書いてしまう誤りが起こりがち 4-2. Lambdaを呼び出せるようなRoleを定義します # main.asl.yaml StartAt: Task1 States: Task1: Type: Task Comment: | 2.で定義した AWS::Serverless::Function を呼び出します。 Resource: ${TaskFunctionArn} End: true # template.yaml(一部) TaskFunction: #2. Type: AWS::Serverless::Function ~省略~ BatchStateMachine: Type: AWS::Serverless::StateMachine Properties: statemachines/main.asl.yaml DefinitionUri: statemachines/main.asl.yaml DefinitionSubstitutions: #4-1. TaskFunctionArn: !GetAtt TaskFunction.Arn #3-1. Role: !GetAtt BatchStateMachineRole.Arn #4-2. BatchStateMachineRole: #4-2. Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Sid: StsAssumeRole Effect: Allow Principal: Service: states.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: InvokeLambdas PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:InvokeFunction Resource: "*" Lambda以外のサービスと連携(SNSで通知) LambdaはResourceにARNを書くだけで連携できますが、Lambda以外のサービスを呼び出すこともできます。以下はSNSで通知を行う例です。 Publish Success to SNS: Type: Task Resource: arn:aws:states:::sns:publish Comment: | SNSでバッチ処理成功を通知する。 件名や本文には固定の文字列だけでなく payload(の一部)を指定することもできる。 Parameters: Subject: Batch job succeeded Message: $.result TopicArn: $SuccessTopicArn End: true State Machineの分割 状態遷移の数に制限があったり、ASLが長すぎて読みづらい、複数のstateで発生する例外をまとめて一箇所でキャッチしたいなど、いくつかの理由からASLを分割してサブルーチンのように呼び出す場合があります。 # main.asl.yaml Process Purchases: Type: Task Resource: arn:aws:states:::states:startExecution.sync # StateMachineを同期的に呼び出す組み込みTask。後ろの`.sync`がポイント Parameters: StateMachineArn: ${PurchasesStateMachineArn} # 呼び出すStateMachineのARN Input: # StateMachineにわたすPayload updated.$: $.updated from.$: $.from sales_detail.$: $.keys.sales_detail ResultPath: null # StateMachineからのoutputは入れ子が深く使いにくいので破棄してしまう Catch: # 呼び出したStateMachineのどこかで例外が発生したらここでまとめてキャッチできる - ErrorEquals: ["States.TaskFailed"] Next: Publish Failure to SNS End: true StateMachineからStateMachineを呼び出すにはStateMachineのRoleにポリシーが必要です。詳細は https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/stepfunctions-iam.html に説明されています。 入出力 {Input|Output}Pathの指定方法 以下のパターンを使い分ければおおよそ大丈夫かと思います。詳細はリファレンスを参照。 加工前 Path 加工後(Python object) {"input": "somevalue"} "$" {"input": "somevalue"} {"input": "somevalue"} null None {"input": "somevalue"} "$.input" "somevalue" {"parent": {"child1": "v1", "child2": "v2"}} "$.parent.child1" "v1" | | | [1, 2, 3] "$[0]" 1 ResultPathの意味 InputPathやOutputPathの指定は、入力されたJSONのどの要素を取り出すかを意味しますが、ResultPathは、stateから出力されるJSONのどこに結果を挿入するかを指定します。以下の3つの使い方があります。 ResultPath: $ $はJSONのroot要素を意味します。つまり入力されたJSONを破棄して結果で上書きします ResultPath: null 逆に挿入先を指定しないということは、結果を破棄し入力されたJSONをそのまま出力する意味です 入力されたJSONの要素に結果をマージする ResultPath: $.resultは、入力されたJSONに"result"という要素を追加します。 3の入力例 { "job_id": 1, "process_at": "2022-04-01T00:00:00+09:00" } 3の出力例 { "job_id": 1, "process_at": "2022-04-01T00:00:00+09:00", "result": { "status": 200, "key": "processed.json" } } {Parameters|ResultSelector}の指定方法 出力したいJSONをそのまま書けばよいのですが、入力されたJSONを参照する時だけプロパティ名の末尾に.$を付けるのがポイントです。 同じく詳細は https://states-language.net/spec.html#payload-template を参照。 # 指定例 Parameters: flagged: true parts: first.$: $.vals[0] last3.$: $.vals[3:] 同期的な制御 ファイルの分割処理 Map stateは、JSON配列の要素ごとの処理を記述することができます。可能な場合は各タスクは並行に実行されるので、ループと言うよりMap-ReduceのMapに相当します。Mapへの入力が [1, 2, 3]の場合、Map下のIterator先頭のstateは1, 2, 3をそれぞれ受け取ります。他のパラメータが必要な場合、ItemsPathを使って配列を参照するJSONPathを指定するとともに、MapのParametersに子のTaskが受け取るJSONを定義することができます。 よくある使い方は、Lambdaのメモリまたは実行時間の制約のためデータを分割処理する場合です。 # ファイルの分割処理 1.Split Users in Files: Type: Task Resource: ${SplitUsersInFilesFunctionArn} Comment: | 入力されたファイルを固定行数で分割してS3に保存。 input: key_users(str): 処理するファイルを取り出すS3キー output: s3_keys(array of str): 分割したファイルのS3キー ResultPath: $.s3_keys # <-- ここに配列を入れる Next: 2.Import Users } 2.Import Users: Type: Map ItemsPath: $.s3_keys # ここから配列を取り出す Parameters: job_id.$: $.job_id # バッチ全体の共通変数 s3_key.$: $$.Map.Item.Value # Iteratorが受け取る配列要素(ItemsPathで指定)を参照する ResultPath: null # 実行結果は捨てる MaxConcurrency: 1 # 並行実行させない場合単なるループ処理 Next: 3.Another process Iterator: StartAt: Load Database States: Load Database: Type: Task Resource: ${LoadDatabaseFunctionArn} Comment: | 入力されたファイル一つをデータベースにロードする。 input: job_id(int): ジョブID s3_key(str): 処理するファイルを取り出すS3キー output: なし End: true 3.Another process: # 省略 固定回ループする ItemPathは、State間で受け渡されるJSONの一部を指定することができるのみで、固定要素の繰り返しを書くことができませんが、Passを組み合わせると実現できます。 Enumerate Reset Data: Type: Pass Comment: | ループ変数を生成 input: job_id(int): ジョブID output: types(array of str): 処理するデータの種類 Result: ["customers", "purchases", "purchase_items"] ResultPath: $.types # 上の配列をこのPathで参照できるようにする Next: Reset Data Reset Data: Type: Map ItemsPath: $.types # ループで回したい要素 Parameters: job_id: $.job_id type.$: $$.Map.Item.Value ResultPath: null # 結果は捨てる End: true Iterator: StartAt: Revert Data States: Revert Data: Type: Task Resource: ${RevertDataFunctionArn} Comment: | 指定された種類のデータをリセットする input: job_id(int): ジョブID type(str): 処理するデータの種類 output: なし ResultPath: null End: true カウンタを使ったループ Stepfunctionsで Choiceが分岐を書けるのでループを実現することはできますが、複雑なので基本的には Mapを使うことを考えたほうが良いと思います。 https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html 入力が空だったら終了 Concatenate: Type: Task Resource: ${ConcatenatePurchasesFunctionArn} Comment: | 日次に分割されたファイルを結合する input: job_id(int): ジョブID keys(array of str): ファイルを取り出すS3のキー output: key(str | null): 結合した結果を保存したS3のキー。入力されるファイルが0件ならnull ResultPath: $.key Next: Test Empty Data # 処理するデータが空なら終了させたい Test Empty Data: Type: Choice # 分岐を書く Choices: - Variable: $.key # 評価した値のPath IsNull: true # 評価式 Next: Return If Empty # 当てはまった場合の遷移先 Default: Convert Date # 全ての Choice要素 の評価が失敗した場合の遷移先 Return If Empty: { Type: Succeed } # 終端のState。Succeedは何もせずここで状態遷移が正常に終了したことを表す Lambdaの実行結果で分岐する Step FunctionsはLambdaの例外をキャッチして分岐することもできますが、Lambdaの出力結果で処理を継続するか失敗させるかを判断したい場合はChoice stateで分岐を書くこともできます。 Tell Status : Type: Task Resource: ${TellStatusFunctionArn} ResultPath: $.result # {statusCode: 200} または {statusCode: 500} Next: Check Status Check Status: Type: Choice Choices: - Variable: $.result.statusCode <-- ここで取り出す NumericEquals: 500 Next: FailState Default: SuccessState SuccessState: { Type: Succeed } FailState: { Type: Fail } 非同期処理 子のStateMachineの完了を待たない 別のStateMachineを呼び出す方法については「State Machineの分割」で説明しました。子のStateMachineの完了を待ちたい場合が多いですが、待たずに終了してしまうこともできます。 Delegate: Type: Task Resource: arn:aws:states:::states:startExecution # 非同期実行 Parameters: StateMachineArn: ${IntegrationStateMachineArn} Input: updated.$: $.updated job_id.$: $.job_id End: true SNSやEvent、SQSから復帰する StateMachineから明示的にLambdaやStateMachineを起動せずにSNSなどで間接的に処理を起動する場合、普通はそのまま制御が戻ってきませんが、必要であればコールバックしてもらうことができます。 https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/callback-task-sample-sqs.html に解説されていますが、Stepfunctionsから制御の外れてしまったLambdaからトークン付きのコールバックを待ち受けることができます。 実装例 初期化バッチが特定のS3バケットにデータを投げると、自動的に取り込み処理が走ります。取り込みが完了すると初期化バッチに処理が戻り、別の処理を続けます。少々複雑な例ですが、トークンを複数のLambda間でリレーできます。なお、LambdaのコードはPython3.8ランタイム向けのものです。 # main.asl.yaml StartAt: Upload Datalake States: Upload Datalake: Type: Task Comment: | S3バケットにファイルをアップロードする。 アップロードした後はバケットのOnPlaceイベントで別のLambdaが呼び出される。 そちらの処理が終わるとtask_tokenをもってコールバックされて次のTaskへ遷移。 Resource: arn:aws:states:::lambda:invoke.waitForTaskToken HeartbeatSeconds: 60 # https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/connect-to-resource.html#wait-token-hearbeat Parameters: FunctionName: ${UploadFunctionArn} Payload: task_token.$: $$.Task.Token Next: Do Something # 省略 BucketXInput: # ファイルを置くバケット Type: AWS::S3::Bucket Properties: NotificationConfiguration: TopicConfigurations: - Event: 's3:ObjectCreated:Put' Topic: !Ref TopicXOnPlaceFile TopicXOnPlaceFile: # 通知内容 Type: AWS::SNS::Topic FunctionPermissionXOnPlaceFile: # SNSきっかけでLambdaを起動する場合に必要 Type: AWS::Lambda::Permission Properties: Action: lambda:* #InvokeFunction FunctionName: !GetAtt FunctionXOnPlaceFile.Arn Principal: sns.amazonaws.com SourceArn: !Ref TopicXOnPlaceFile SubscriptionXOnPlaceFile: # SNS::TopicにLambdaをひもづける Type: AWS::SNS::Subscription Properties: Endpoint: !GetAtt FunctionXOnPlaceFile.Arn Protocol: lambda TopicArn: !Ref TopicXOnPlaceFile FunctionXOnPlaceFile: # ファイルが設置されたときに呼ばれる関数 Type: AWS::Serverless::Function Properties: CodeUrl: src/ Handler: on_place.lambda_handler # 省略 InvokeConfigXOnPlaceFile: # FunctionXOnPlaceFileの実行が成功・失敗した場合にSNS通知する設定 Type: AWS::Lambda::EventInvokeConfig Properties: FunctionName: !Ref FunctionXOnPlaceFile MaximumRetryAttempts: 0 DestinationConfig: OnSuccess: Destination: !Ref TopicXOnSuccess OnFailure: Destination: !Ref TopicXOnFailure # 以下省略 Qualifier: "$LATEST" TopicXOnSuccess: Type: AWS::SNS::Topic SubscriptionXOnSuccess: Type: AWS::SNS::Subscription Properties: Endpoint: !GetAtt FunctionXOnResult.Arn Protocol: lambda TopicArn: !Ref TopicXOnSuccess FunctionXOnResult: # 関数の処理が成功あるいは失敗したときに呼ばれる関数 Type: AWS::Serverless::Function Properties: CodeUrl: src/ Handler: on_result.lambda_handler # 省略 # src/main.py def lambda_handler(event: LambdaEvent, context: LambdaContext) -> None: result = parse_sns(event) print("do something") if result.task_token is None: return # 常にstateMachineに戻る必要はない try: # TODO 失敗時にsend_task_failureしたほうが良い sfn_client = boto3.client("stepfunctions") sfn_client.send_task_success( taskToken=result.task_token, output=result.to_json() ) except Exception as e: print(e) def parse_sns(event: LambdaEvent) -> ResultOutput: # ResultOutput は、on_place_file Lambdaの戻り値をラップしたdataclass record = event['Records'][0] message = json.loads(record['Sns']['Message']) payload = message["responsePayload"] return ResultOutput.from_dict(payload) コールバックするための権限が必要です。on_result lambda のRoleに以下Policyを追加します。 - PolicyName: StateMachineCallback PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - states:SendTaskSuccess Resource: "*" おわりに 私たちがプロジェクト内で使っているパターンはおおよそこんなところです。最後にStep Functionsを使うときのポイントをまとめます。 ASLはYAMLで書くのがおすすめ カッコやクォーテーションを書く量が減る 行コメントも書ける 繰り返し処理は、まず Map の利用を考える Mapはデフォルト並列実行しようとするので注意 大きくなってきたらStep Functionsを分割する 見通しを良くするため 状態遷移数の上限に引っかかることもある Payloadの加工を良く間違うので、ワークフローを流れるJSONの構造を先に決めておくと良い pydanticを使ってタスク間で共有するJSONをPythonのクラスに対応付けておき、Lambda間で共有する この方法がまとまったらまた記事を書くかもしれません 複雑なワークフローを組む場合、Lambdaで時間がかかる処理を書く前にTask間の入出力を確かめておくと良い Pass stateを使って状態遷移だけ作っておく 中身のない入出力だけのLambdaを定義する

2022年、カヤックは ISUCON 12の出題を担当しています

面白法人カヤック
2022-06-02 10:30:02
[イベント] [お知らせ] [isucon]
カヤックは ISUCON 12 の出題を担当しています。現在参加登録期間なので、みなさん是非参加してくださいね!

SansanにJOINして3カ月で感じたこと〜Bill One開発チームの文化について〜

Sansan
2022-06-02 06:49:24
[チーム] [プロダクト] [マネジメント] [組織運営] [Bill One]
こんにちは。技術本部 Bill One Engineering Unit の大道です。私は2022年2月に中途入社としてSansan にJOINしました。前職までもIT企業に勤めており、システムエンジニアとして金融システムや開発者向けアプリ、SaaS開発プロジェクトの立ち上げなどを行ってきました。 SansanにJOIN後は、技術本部 Bill One Engineering Unitで、Bill Oneの開発に携わっています。そんな私が、SansanにJOINしてからの3カ月で感じた、Bill One開発チームの文化に関することを書いていきます。

アーキテクチャと設計は全然違う⋯ただしあなたの想像する”違い”とは多分全然違う【輪読会発表紹介】

エムスリー
2022-06-02 05:09:09
「ソフトウェアアーキテクチャの基礎」第2章の輪読会資料をご紹介。アーキテクチャと設計の違いを思考法の違いから説明していきます。

任天堂社との協業

DeNA
2022-06-02 02:55:55
任天堂社との業務提携での開発/運用を行っているチームについて紹介します。 任天堂社との業務提携においては大きく分けて二つの事業を構成しており、一つはニンテンドーアカウントを中心とした会員基盤システムの開発/運用業務、もう一つは任天堂社がパブリッシュしているスマートデバイスアプリの開発/運用業務になります。 どちらの事業においても任天堂社の基本戦略である「任天堂IPに触れる人口の拡大」に貢献できるように

Digdagのワークフローを動的に実行できる仕組みの導入

ZOZOTOWN
2022-06-02 02:00:00
[Digdag] [運用改善]
はじめに こんにちは、MA基盤の@gachi-muchi-engineerです。 私達のチームでは、Digdagを利用してユーザーにメールを配信したり、データ連携を定期的に行うような様々なワークフローを運用しています。今回その中でも特定の対象者にポイントを付与したり、メールを配信するなどのビジネス要素が強いワークフローを、エンジニアでない運用者が運用していくなかで課題がいくつか出てきました。そこで、動的にワークフローを起動する仕組みを構築することで課題を解決したので、その方法について紹介します。 目次 はじめに 目次 Digdag 背景 1. スケジュール設定の柔軟性 2. パラメータ定義の柔…

【小ネタ】TerraformでAWS WAFのログ取得設定を行う際の注意点

yappli
2022-06-02 01:33:27
[Terraform] [SRE] [AWS]
SREチームのはぶちです。 今回はTerraformからAWS WAFのログ取得設定を行う手順と、ちょっとした注意点について記事にしたいと思います。 はじめに AWS WAFのログの出力設定する際に条件を絞って出力したいケースがあると思います。 その際に、INFO以外の全てのログを取得したい場合は、ログフィルタの条件としてBLOCK、COUNTに加えてEXCLUDED_AS_COUNTも指定していないと取りこぼしてしまうことがあります。 ※詳細はクラスメソッドさんの記事で分かりやすく解説されているのでチェックしてみてください。 AWS WAFでカウントされたログ取りこぼしてませんか? | DevelopersIO しかし2022/6/1現在、EXCLUDED_AS_COUNTはマネジメントコンソールからは指定できず、AWS CLIやAPIからしか設定できません。 でも安心してください。従順なTerraformarの皆さんはTerrafromから簡単に設定することができます。 注意点 TerraformのAWSプロバイダーのバージョンが古いとバリデーションで怒られてしまうようです。 (v3.58.0ではだめでしたが、 terraform init upgrade などを実行して最新のAWSプロバイダーに更新すれば大丈夫です) $ terraform plan Error: expected logging_filter.0.filter.0.condition.2.action_condition.0.action to be one of [ALLOW BLOCK COUNT], got EXCLUDED_AS_COUNT on waf-stg.tf line 144, in resource "aws_wafv2_web_acl_logging_configuration" "example": 100: filter { terraformコードのサンプル 以下のような aws_wafv2_web_acl_logging_configuration を書くことで簡単にInfo以外のログを取得することができます。 wafやログ保存先(S3、CloudWatch Logs)のコードは省略しています。 使用バージョン: tfversion 1.1.9、hashicorp/aws v4.16.0 resource "aws_wafv2_web_acl_logging_configuration" "example" { provider = aws.useast1 log_destination_configs = [<example-arn>] resource_arn = aws_wafv2_web_acl.example.arn logging_filter { default_behavior = "DROP" filter { behavior = "KEEP" condition { action_condition { action = "COUNT" } } condition { action_condition { action = "BLOCK" } } condition { action_condition { action = "EXCLUDED_AS_COUNT" } } requirement = "MEETS_ANY" } } redacted_fields { single_header { name = "cookie" } } redacted_fields { single_header { name = "if-none-match" } } } さいごに 簡単ですが、TerrafrormでAWS WAFのログを取得する際の注意点について書いてみました。 少しでもどこかの迷えるTerraformarのお役に立てればと幸いです。 Terraformさーいっこう!

ANDPADでのAurora MySQL Ver.2へのバージョンアップ

2022-06-02 01:00:02
[RDS] [MySQL] [データベース] [AWS]
こんにちは、最近ランニングをサボって体重が増えたANDPADのDBRE植木です。 秋にはフルマラソンに再チャレンジする予定なので改めて頑張ります。 今回はGW前にANDPADでAurora MySQL(以下、Aurora)をVer.1(MySQL5.6互換)からVer.2(5.7互換)にバージョンアップした件について書かせていただきます。DBMSのバージョンアップで重要なのは9割以上準備作業ですが、スタートアップ企業などでは必要な準備ややっておいた方が良い事などがわからないことも多いかと思います。ANDPADに入社して約一年になりますが、その一年の間に実施した準備の話などにも重みを置いて記事を…

Google様主催のG.I.G.プログラム第2回セッションを受講しました

とらのあな
2022-06-02 01:00:00
こんにちは。虎の穴ラボの植竹です。 2022年4月より、Google様よりG.I.G.プログラムにお誘いいただき、弊社からは2名のエンジニアが参加しました。 かねてよりFantiaで GCP を利用している繋がりで、この度プログラムへの招待をいただきました。 G.I.G.プログラムとは「各業界をリードするエンジニアに向けた、Google Cloud Platform の特別トレーニング プログラム」でして、G.I.G.の正式名称は「Google Cloud Innovators Gym」となります。 要は、招待制の無料で受けられるGCPスキル向上のための研修プログラムですね。 主な内容としては…

形式的に検証したセグメント木の実装を使って競技プログラミングの問題を解く

Wantedly
2022-06-01 11:03:51
[アルゴリズム] [競技プログラミング]
本記事では、定理証明支援系 Coq 上で形式的に検証したセグメント木の実装を使って、実際に競技プログラミングの問...

社内勉強会を開催してみよう!

クラシル
2022-06-01 09:00:02
そろそろ梅雨も近づき雨の多い季節になってきましたね。みなさんいかがお過ごしでしょうか? クラシルでAndroidエンジニアをやっているみうらです。 今回はエンジニアには馴染みの深い勉強会について、社内での簡単な開催方法について書いてみようと思います。 いきなりですが皆さんの会社では社内で何かしら勉強会をやっているでしょうか? 読書会やLT会、もくもく会…やっている所もあればやっていないところもあるとは思うのですが、やりたいけどやってないという話を聞いたこともあります。 外部の勉強会に参加したことはあるが勉強会を開催したことはない…といった方もいらっしゃると思います。 そこで今回は勉強会の簡単な…

本日より「Qiita Engineer Festa 2022」記事投稿キャンペーンを開始します

Qiita
2022-06-01 08:32:03
こんにちは、Qiita運営スタッフです! 寒暖差が激しい日々が続いておりますが、みなさまいかがお過ごしでしょうか。 本日より「Qiita Engineer Festa 2022」の記事投稿キャンペーンが始まりましたのでご […] 投稿 本日より「Qiita Engineer Festa 2022」記事投稿キャンペーンを開始します は Qiita Blog に最初に表示されました。

DMM×はてな共催オンラインイベント「それぞれのアジャイル開発の現場 〜 チームの中から外から 〜」を6月14日に開催します #dmm_hatena

はてなブログ
2022-06-01 03:02:40
2022年6月14日(火)に DMMさんとオンラインイベント「それぞれのアジャイル開発の現場 〜 チームの中から外から 〜」を開催します。はてなより2名のスクラムマスターが登壇し、DMMさんとともにアジャイル開発のリアルについてお話します。申し込み方法は DMMさんが運営する connpass のイベントページをご確認ください。皆様のご参加をお待ちしております!