はてなキーワード: Guiとは
特に目的もなくプログラミングを始めたが、勉強してるうちに仕事にしたくなった。この体たらくだし、まずは経歴をつけたいので待遇(長時間労働や年収)は厭わないが、出来れば派遣や客先ではなく自社開発が良い。
プロゲートのjava、html、cssを数週繰り返した後に本格的に時間をとって勉強し始め、「スッキリわかる入門」のJavaとSQLをやり、「Spring Framework超入門 ~やさしくわかるWebアプリ開発」を読みながら書籍のアプリを真似、その後Twitterと増田を組み合わせたようなアプリを作ってみた。そのあとwebアプリではなくWindowsアプリを作ってみたくなり、GUIの書籍を買ってswingを学びながら、小説家向けのエディタアプリを作った。作ったアプリを公開したりはしてない。GitHubも登録していない。金はないのでスクールも通っていない。
いやわかる、MS OfficeとかAdobeは業界標準だしファイル互換でインポートとかも楽だ。
ただまぁその万人へ必須か?と言われたら圧倒的にそれが必須じゃない仕事をしている人のほうが多い。
何なら仕事じゃなくて趣味レベルであるならばなおさらMS OfficeとかAdobeとか業界標準ソフトウェアじゃなくても良くなっちゃう。
ということで、ありきたりなシェアウェア代替オープンソースソフトウェアのリストを作ってみた。
ド定番中のド定番、オープンソースのオフィススイートだ。
MS Officeじゃなくて良い人はLibreofficeかGoogleのクラウドのヤツを使ってる。
やはり主に使われるのはワープロソフトのWriterと表計算ソフトのCalcとプレゼンテーションソフトのImpressだが、MS Accessの代替として挙げられるBaseは厳密な意味で代替とはならないためMS Accessの代替を無料でゲットしてやろうと考える人が陥りがちの罠だ。
まぁただデータベースのフロントエンドソフトとしてBaseはそこそこ使えるので、MS Accessの代替として捉えるのではなく別種のデータベースフロントエンドソフトとして割り切れば想定されることの大半ができる。
MS Visioの代替としてDrawも挙げられがちだがMS Accessの場合と同様にDrawもVisioの厳密な代替とはならないので注意が必要だ。
Adobe Illastratorの代替として挙げられがちなオープンソースのベクターグラフィックスソフトウェア。
高機能なのだがIllastratorと比較すると恐ろしいほど使いにくいUIを持っており、折角の高機能へアクセスするにはどうしたら良いのかわからないと挫折する人が多く出る。いやなんでホントこんなUIなんだ。
ただ、諦めずクソUIに付き合っていると不思議なもので人間は慣れてしまい結構自由度高くベクターグラフィックスを生成できるようになる。
Adobe Illastratorには無い長所としてSVG規格へ厳密に従うという方針で開発されているため、Illastratorで生成したSVGをWebでそのまま使うとWebブラウザで謎の描画バグにWeb屋は悩まされるがInkscapeではそれが無い。描画バグが起きるとき製作者が間違った設定を行っているか、Webブラウザ側が使っている設定に未対応な場合がほとんど。
将来的にサポートする気はあるらしいが現状はアニメーションSVGに弱いのも残念でならない。どうしてもアニメーションSVGをやりたいのであればInkscapeで生成された静止画SVGをアニメーションSVG化することを想定しているaniGenというWebベースのエディタがあるので調べてみると良い。
Adobe Photoshopの代替として挙げられがちだが、元来Web用の画像を製作するためのラスターグラフィックスソフトウェアなのでRAW現像や写真を加工するためのソフトじゃないが、本家すらその辺のことを忘れたふりをしている。
画像編集や加工で求められる基本的な機能はほぼ網羅されているが、RAW現像に関しては標準状態のままではできず、最近のAdobeが搭載している人工知能を用いた機能もないのでクラシカルなラスターグラフィックスソフトウェアと表現することもできる。
GIMPとInkscapeが使えると大半の画像製作は何とかなってしまうため一部の情報技術者寄りのギークはPhotoshopやIllastratorは触ったこともなく使えないがGIMPとInkscapeは困らない程度には扱えるというデザイナーがツッコミ入れそうなおかしなスキルセットになっていることがある。
Adobe Lightroomの代替として挙げられがちなオープンソースのRAW現像ソフトウェア。
実はdcrawというRAW現像のためのオープンソースのライブラリのフロントエンドであり、GIMPでRAW現像するために活用されるUFrawも同様にdcrawのフロントエンドであるため中身は同じだったりする。オープンソースのRAW現像ソフトウェアはdcraw使いがち。
オープンソースソフトウェアでRAW現像を賄っている人はGIMPでUFrawを活用してRAW現像するよりもUI的に使いやすいのでRaw TherapeeでRAW現像でTIFFを出力しGIMPで微調整するような使い方をしている人が多い。
オープンソースの2D CADで以前はQcadと呼ばれていた。
一部の読者はJw_cadのJWWファイルを扱うことが可能という特徴を持っているというだけで興味を惹かれてしまうのではないか。
Jw_cadとは違ってWindowsやmacOS、各種Linuxディストリビューションで動くので2D CADデータをネット上の友人知人などとやり取りしたいときに向くんじゃなかろうか?ニコニコ技術部的な遊びとか、最近流行りのルール無用JCJCタイムアタックとかで。
オープンソースの3D CADで、近年は3Dプリンターあたりの需要でよく目にするようになった。
Autodesk AutoCADやFusion 360、Dassault Systèmes SolidWorksよりも草の根では広まっており日本語でのハウツー記事もオープンソースソフトウェアとしては比較的多い印象。
シミュレーション機能はシェアウェアと比較すると弱い傾向があるものの草の根でそこまで必要か?と言われたら悩む。無料でシミュレーションやりたいならOpenFOAMにでも流し込め。
オープンソースのお絵描きに特化したラスターグラフィックスソフトウェア。
歴史的経緯ではLinux界隈でのGUIツールキットの2大巨塔にGTKとQtがあり、GTKはGIMPを作り上げるために生まれたこともありGTK側には高度なラスターグラフィックスソフトウェアが存在していたがQt側には存在していなかった。そこでGIMPの対抗としてQtを用いたKritaの開発が進められたが次第にGIMP的な画像編集ソフトウェアよりもお絵描きに特化していき現在のような性格を帯びるようになった。
SYSTEMAX ペイントツールSAIやセルシス CLIP STUDIO PAINTからの影響が強く現れており、オープンソース界隈のSAIやクリスタなどと呼ばれることがある。クリスタがそうであるようにスマートデバイスへの対応も計られAndorid OS版やChrome OS版が存在する。
ただ日本の需要を敏感に拾えるクリスタなどと比較して漫画作成機能に関してKritaは弱いと言われることがあるものの、GIMPと同様に無料とは思えない機能が充実しているのもまた事実である。
オープンソースの3DCGアニメーションソフトウェアで、非常に多機能のため何故かAdobe After Effectsの代替として挙げられることもある。
YoutubeがBlenderのYoutubeチャンネルへ広告を載せろと迫ってBlender公式がそれを拒否してYoutubeから撤退したり、庵野秀明が率いる株式会社カラーが出資したことなどオープンソース界隈でも異彩な存在感を放っており日本国内でも非常に注目されているプロジェクトだ。
ただ、初期状態では独特なUIによる使い勝手が非常に悪くユーザーが自分で使いやすい配置を模索する必要があったりタイムラインが使いにくかったりと何故オープンソースソフトウェアはUIがクソになりがちなのか?という問題にぶち当たる。
オープンソースの2DG/3DCG兼用プログラミングIDE。つまりはUnityとかみたいなやつ。
MIT Licenseでロイヤリティーフリー、開発言語はC#もしくはC++、そしてPythonライクなGDScriptで、Unityみたいにマウスでポチポチしてオブジェクトへ色んな設定を決められるので「Unityみたいのでゲーム作りたいけど運良くヒットしたときにライセンス料がなぁ」と懸念している人に役立つ。
ちなみにWiiとニンテンドーDS用向けにリリースされたSEGAゲームタイトルのソニックカラーズのSwitchやPS4などのマルチプラットフォーム移植版ソニックカラーズ アルティメットはGodotを用いて移植されているので商用でも耐えうることはSEGAが証明している。あのSEGAがソニックでだ。
オープンソースな動画編集ソフトウェア。
様々な部分で動画ライブラリのFFmpegへ依存しているためFFmepgのフロントエンドソフトとしての性格も持つ。
この手の無料の動画編集ソフトは国内だとAviUtlや近年ではBlackmagic Design DaVinci Resolveが人気だけれど、海外のオープンソース界隈ではShotcutは比較的知名度が高い。
カラーグレーディングに関して不足のない機能を有しているので高度なトランジションを用いるというよりも色を追い込むような使い方が合っているだろう。
ていうかFFmpegのフロントエンドなのでFFmpegができることは理論上なんでもできる(理論上なので追加でコマンドを叩く必要があったりするけどね)。
オープンソースのレコーディングソフトウェア。旧名称はAudacityと言われるとご存じの方も多いハズ。プライバシー問題でAudacityからプロジェクトが分岐されTenacityとして再出発することとなった。
旧Audacityは開発の主な拠点がロシアを中心に行われていたという経緯があり、現在のウクライナ-ロシア戦争へ至る前の影響からか個人情報の収集をロシア企業が行うと発表され、それに反発したユーザーらによってプロジェクトが分岐しTenacityプロジェクトが立ち上がった。
Audacity自体はVSTプラグインが動作するなど非常に高機能なレコーディングソフトウェアであったがウクライナ-ロシアの騒動に巻き込まれたと言った感じだ。
Audacityから分岐したTenacityもそのまま高機能なレコーディングソフトウェアなのでこれからはTenacityを使ったほうが色々面倒が少ないだろう。
ProToolsの代替として挙げられがちなオープンソースのDAW。非常に高機能でDAWとして求められることの大半ができるものの、これもまた通例通り最近流行りの人工知能を用いた云々かんぬんは標準状態だとできない。
Ardourプロジェクトの立ち上げをし主要開発者であるポール・デービス氏はJACK Audio Connection Kitのプロジェクトの立ち上げをし主要開発者であるという事実を伝えると驚く人がいるかも知れない。LinuxとGitのリーナス・トーバルズ的な文脈だ。
オープンソース界のFL Studioと呼ばれることもあるDAW。ステップシーケンサーを中心に作曲するタイプのDAWで電子音楽が得意。LMMSという名称はLinux Multi Media Studioの略でLinuxに端を発してマルチプラットフォーム展開をしたDAW。
オープンソースのDAWにしては珍しく初期状態から多数のソフトウェアシンセサイザープラグインが用意されておりインストールした時点で遊び始めることができるものの、オープンソースの例に漏れずクソUIを持っており使いにくい。GIMPやBlenderもそうだが1990年代後半〜2000年代前半あたりに流行したMDI(Multiple Document Interface)を未だに引きずっているためクソUIになりがちなのだ。
ググると日本国内にも意外とユーザーは居て、DTMやりたいけど初期投資は低く抑えたいみたいなユーザーが選んでいる模様。そういう需要ならLMMSの他に基本無料で全機能が使えて一部のプリセットが有料のVitalっていうソフトウェアシンセサイザーも導入しておくと延々遊べるよ。
オープンソースなWebブラウザとして非常に有名な存在。
Google率いるChromium系Webブラウザに近年物凄く押されているものの独禁法を回避するためGoogleはMozillaへ出資しているという歪な構造を持つ。
Mozillaの運営が下手すぎて資金をドブに捨てることを繰り返しているためGekkoレンダリングエンジンに未来があるのかと一部の識者から不安がられている。
Firefoxは使いやすいのか?と言われたら、それはもう好みの問題としか返せないのだがカスタマイズ性は非常に高い。
MS OfficeやPhotoshopからデファクトを奪うレベルのオープンソースソフトが未だに出てこないのはどういうこと?
LibreOfficeにしろGIMPにしろ、いつまで経っても業務でまともに使えるレベルにならないし。
あとGUIも、オープンソースにおける決定版がこれまた待てど暮らせど出てこない。
てかOSSって、便利である以上に複雑怪奇なUIで、ユーザを苦しめるソフトばっかり作るよね。
(Perl、sendmail、bind、TeX、gnuplotなどなど挙げてったらキリがない)
なんでユーザの使い勝手というか、そこら辺のデザインがこうも蔑ろにされるのか意味がわからん。
結局、viとemacsどっちがいいかという、傍から見たらきのこたけのこ未満のしょーもないレベルで使い勝手を言い争っていた頃から、OSS界隈は何も変わっちゃいないと。
自宅ネットワークで、セキュリティのためにタグVLAN切ったりしたいけどEdgeRouterとか中古RTXのようなCLIで設定するのはめんどくさいな…。Wi-Fiとかも1つの機器で一緒にやってほしいな…。という人にピッタリ。
半年ほど前にUnifi Dream Machine(UDM)を買って、GUIやアプリで細かいところまで設定できるし(CLIアクセスは可能だけど使ったことない)便利だなあと思っていながら愛用していたら、先月にUDRの日本版が発売された。UDM買ったばかりなので迷ったけど、PoEとWi-Fi6がほしいので買ってみた。UDMより安いしね。
結果としては大正解で、UDMとくらべてWi-Fiが強くなって風呂に届くようになり、PoE対応で電源タップを1つ開けることができ、Wi-Fi 6対応で自己満足を得ることもできた。CPUのスペックが下がってるのが懸念点だったけど、スピードテストやCPU使用率の値を見る限りでは個人ユースでは問題なさそう(DPIをつけて外向き600Mbps程度は出る模様。それ以上出るのかは不明)。
一つ気になったのはファンの音で、UDMでは無音に等しかったのがUDRでは若干音が聞こえるようになった。上部のカバーが揺れてるのが音の原因の一つらしく、カバーと本体を養生テープで固定したら気にならなくなった。寝室に置くならUDMにしておいたほうがいいかも。
Unifi製品は安くて(英語が読めるなら)ナレッジも多く、ライセンス料不要でアップデートしてくれるのでおすすめです。APあたりも買ってみたい。
コンピュータサイエンスを学べという人を見たこと無いけど、言いたくなる人の気持ちは分かる気がする。
コンピュータサイエンス自体めちゃくちゃ幅広い。プログラムが動く仕組み、プログラミング言語、GUIアプリケーション、アルゴリズム、ネットワークの仕組み、物理的な機器、アーキテクチャ設計、運用、人工知能、量子力学、組み込み機器。ちょっと違うのもあるかもしれないけど、とにかく色々ある。
この中であなたはどれに興味がありますか?と言って、もし答えが出るならじゃあそれをやれで済むし、答えがなさそうならとにかくコンピュータサイエンスを学んでみろ、という事になる。
今の時代、インターネットに繋げば情報が手に入るし、手を動かせば体験できるようにドキュメント化されている。大学だって講義の資料は公開している。
もしくはコマンド打ってCtrl+CでExcelにコピペして比較、もいっかいPowershellでレジストリ抽出して~と実装せず手作業でやるってことでしょうか?
んなめんどくさいことはしたくなくて、ダウンロードしてきてZip解凍するなりインストールするなりで利用できることを想定してます。
レジストリの抽出だけならあるかも&テキストの差分比較(Diff)ならあります。
それぞれを一緒にやろうとすると厳しそう。
自分ならPowerShellでタイムスタンプつきで抽出して、それをDiffしますかね~。
DIffで思い出したけどPowershellにもDiffありましたね。Excelいらないや。
Linuxでも似たようなことはできるかと。
タイトルにある通り、”ツール”が欲しいんですね。えぇ、タイトルの通り。
プログラム作るなり、スクリプト組むなりすれば実現できる、ということは認識してます。これは”実装”ですよね。
もしくはコマンド打ってCtrl+CでExcelにコピペして比較、もいっかいPowershellでレジストリ抽出して~と実装せず手作業でやるってことでしょうか?
んなめんどくさいことはしたくなくて、ダウンロードしてきてZip解凍するなりインストールするなりで利用できることを想定してます。
CUIではなくGUIで、ボタンポチポチでレジストリの変化を絞り込めるツールです。
メモリエディタはそういった機能があるので、使っていただけると理解しやすいかと。
もしPowershellとかExcelの(ワンライナーですらない)1コマンド(コマンドレット?)でできるならとてもありがたいですが、
そんな機能は私は存じ上げません。
もしあるのであれば教えてほしいです。
タイトルにある通り、”ツール”が欲しいんですね。えぇ、タイトルの通り。
プログラム作るなり、スクリプト組むなりすれば実現できる、ということは認識してます。これは”実装”ですよね。
もしくはコマンド打ってCtrl+CでExcelにコピペして比較、もいっかいPowershellでレジストリ抽出して~と実装せず手作業でやるってことでしょうか?
んなめんどくさいことはしたくなくて、ダウンロードしてきてZip解凍するなりインストールするなりで利用できることを想定してます。
CUIではなくGUIで、ボタンポチポチでレジストリの変化を絞り込めるツールです。
メモリエディタはそういった機能があるので、使っていただけると理解しやすいかと。
もしPowershellとかExcelの(ワンライナーですらない)1コマンド(コマンドレット?)でできるならとてもありがたいですが、
そんな機能は私は存じ上げません。
もしあるのであれば教えてほしいです。
まさに「こんなこともあろうかと」無駄システム
エンターキーをッターンとすると、それまで真っ赤で残り1メモリだった画面が、一気に青くなる
それが出来るって事は、システムを掌握してるって事で
まだなの?とか焦って聞かれてるのに、「おっ、てきさんもなかなかやるねー、もうちょっとまってー、よーしいいこだー」とかブツブツ言いながらコンソールでカチャカチャとバイナリ入力して
仕事が終わった後にPythonをちょっとずつ勉強して数ヶ月になる。入門書の内容は一通り勉強した。
お前らが「作るものがないとプログラミングは挫折するぞw」とかウエメセで言うから簡単なコードでプログラムをいくつか書いたんだが技術力が上がってる気がしない
なにかちょっとしたプログラムを作りたいけどあまり難しいと挫折するし簡単すぎると勉強にならないからバランスが難しい
初心者でもそれなりにサクっと作れて、なおかつ勉強になって、作っていて楽しくて、それなりに達成感があるプログラムを教えて欲しい
「わがまま言うな」って言うかもしれんがお前らは俺みたいな初心者に上から目線で物を教えるのが大好きだろ?win-winだと思うからぜひ教えてくれ
ー
・電卓(Tkinterで作ったGUI付き。ググりまくって作ったからもう一度作れるかというと微妙。四則演算しかできない。)
・化学のシミュレーションプログラム(詳しいことは言えないが化学物質を製造する装置の発熱のアレコレを計算するプログラム。一見難しそうだけど実際は既存の計算モデルを再現するように四則演算をwhileで繰り返しているだけの100行くらいのチンパンコード。でも仕事にはそこそこ役に立った)
・リストに並んだ数字を小さい順にソートするプログラム( 例:[1,5,3,2]を[1,2,3,5]に並べ替える Python謹製メソッドで実現可能なプログラムだけどあえて自分で長ったらしいコードを書いて自作した。意外と難しくてそこそこ楽しかったけどすぐに終わってしまった)
・原始的な大富豪(yamahudasからランダムに手札を配ってプレイヤーAとBが交互にカードを出して手札が無くなったほうの勝ち。階段やペア機能を作ってるうちに、あ、これ複雑なだけであんまり勉強にはならないし完成しても既存のソフトに勝てないな、と思って飽きて途中でやめた。俺IUPACかもしれん...)
このくらいのごく初歩的なことはできるけど難しいことはなにも出来ない。NumPyとかPandasとかもほとんど使えない。
ー
ちなスペックw地方国立大学卒の工学修士。中堅企業の化学エンジニア3年目。化学物質を作る際の装置や製造工程の設計をやっている。
しかし俺が入社する直前に社内でいろいろあったらしく技術に詳しい先輩が部署に1人もおらず、会社の技術力が終わってる。既存の商品を脳死で作りまくることで成立している会社だ。
この会社でこのまま言われたことだけやっていたらダメだと思っているので転職するなり独学で技術に詳しくなるなりしようと考えていて、ひとまずPythonを勉強している。ただ仕事のためだけの勉強だと考えると続かないだろうからゲームを作るなどして遊び方面に持っていきたい気持ちもある。
将来的にITエンジニアに転向するかどうかは自分の中でも決まってない。化学の知識と修士号がもったいないから転向しないほうがいい気がするけど個人的に現場仕事が超嫌いだし上司の倫理観も終わっていて働くのが少し辛いから転向したいかもしれん。①今の会社で頑張る②同業種に転職③ITエンジニアに転向 の3つの選択肢がある。
趣味でWordPressのブログをやっているからそっち方向にも活かしたいけどPythonはWebとそんなに相性良くないんだろ?しらんけど。
「どうぶつしょうぎ作ってみろ」「Sympy無しで方程式を数値的に解くプログラムを作ってみろ」などの表題通りの回答をお待ちしています。それ以外でも、
「Pythonじゃなくてコレ勉強してみろ」「このライブラリ使えるようになると捗るぞ」「お前ならこういうキャリアもいいと思うぞ」などのあまり関係ない意見でも構わん。教えてくれ。
レッツマンスプ!
学歴がよくなくて、就職が困難だったので中小 SIer で働いていた。 (プライム案件を取ってこれる分マシらしい)
レキサルティ、レクサプロ、デパスのお世話になって続けてたけど、結局は薬でどうにかできず、辞めてしまった。
参考程度だけど、未経験の人が 300万 をもらうために、どのようなスキルが必要かを、まとめておく。
ちなみにどれくらいプログラムが書けなかったかというと、競技プログラミングで努力しても AtCoder の黄色になれず青色のままってくらい。
AtCoder でいう、初心者から抜け出せないという、要するにセンスがないということなのだけど、そういう人も居そうなので、参考までに。
未経験のプログラマに対して、これだけ要求されるのだから、未経験の人は覚悟するようにという指針を提供したいので書いた。
基本的に、損害を与えた場合には、それを作業者が補填するという誓約書を結ぶ。
要するに、捨て駒として扱って、失敗したら賠償しろ、という事になる。
このことを認識して、失敗しないように振舞ないと、連帯保証人含めて迷惑をかける事になる。
要するに、低賃金で未経験プログラマを案件にノーリスクで送りこんで、稼ぐための手段です。
基本的に PL (夢想家) → PM (御用聞き) → プログラマ という環境なので、プログラマが自分でディレクションして意思決定する必要がある。
例えば、下請けの場合は、PM の御用聞きの結果の WBS に合わせないと、顧客から DM で 瑕疵担保責任がどうとか言われる。
社内開発の場合は、PL の方から直接、長時間の叱責を受けなくてはならない。
そういう不幸を防ぐためにも、自分でディレクションして、PM の決めた実態を反映していない WBS に合わせて作業するスキルが要求される。
基本的に手戻りは個人の過失になってしまうため、手戻りしないように考え抜いて意思決定をする、というのが重要になる。
これこそ、ガクチカと呼ばれる、頑張れますというスキルなので、学生時代に頑張っておけばよかったなぁ。
こう見せたい、こう表現したい、という事を伝えるには、必然的にデザインの知識が必要になる。
創造的思考とデザインは切っても切り離せない概念で、デザインとは創造なのだから、当たり前である。
ソフトウェアアーキテクチャも、ソフトウェア設計も、コーディングもデザインと言えるかもしれない。
顧客と 1:1 で話す事が DM でもボイチャでも突発的に発生するので、いつ、いかなる時でも論理武装していなければならない。
まぁ、顧客であったり PL であったりはキレるのが仕事なので、それに対して理路整然と説明する必要がある。
なんとなく、では納得しないし、すぐ損害賠償請求とかそういう話にいくので、答えられないと持ち帰りますとお茶を濁して、エマージェンシーになる。
後述する設計能力においても、課題を把握するための言語技術(言語化能力)は重要なファクターだと思う。
C/C++ のシステムプログラムはフレームワークが基本的に無いので、自分で概念を整理して、どのような変更、拡張があるかを考えて設計する必要がある。
この能力が弱いと、手戻りが発生しやすくなり、瑕疵担保責任を問われることになる。
読んだ本の中だと、ボブおじさんの本が、やっぱりしっくりくるなという個人的な感想がある。
UDP で送ってくるデータを受けて 24/365 で停止しない WebAPI への繋ぎ込みという簡単な作業があって、振られた。
リークしてはいけないという事で malloc は禁止で、グローバル変数を利用するという変なルールがあった。
Rust で書けばいいんじゃないかなと思ったけど、Rust 書くのもシンドイし、C/C++ で、しんどくて読みづらいコードを書いた。
あとで保守する人が大変そうだけど、そういうルールを決めたのは PL だしね。
なんか、特殊な PCI Express のカードからベンダーが用意している SDK でデータ引っこ抜いて Web API へつなぎ込む部分をやった。
一応、SDK の使い方をパラ見して 1 日で作ったので、別に負担じゃなかったけど、素人にやらせるんなとは思った。
当たり前だが、DB 作って RestAPI を生やすのは現代のプログラマにとって自然にできなければならない。
なので、新規開発のサブモジュールのバックエンドを任せられた。
だが、ORM の癖を把握したり、発行されるクエリを確認したりするのは、疲れる。 SQL を直書きするのはシンドイ。
結局 SQL を直書きすることにしたけど、あまりいい決断ではなかったと思っている。
それ以外は フレームワーク に乗ってしまっていいので、書き捨てる分には楽だった。
最近だと、TypeScript で Prisma 使うのが、型安全でよさそうだなと思っている。
デプロイを EC2 直でやったり ECS にしたりとしていたので、ベアメタルの知識が必要になった。
要するに systemd のいじり方とか、死活監視の仕方とか。
個人的には、クラウド嫌いなので、ベアメタルの方が安心できる。
Bind で権威DNS を管理して、postfix で絶対止めてはいけないメールサーバを管理するとかもあったけど、出来て当然ではある事だし。
未経験プログラマでも、月単価 100 万以上で顧客に請求してるんだから、会社はそりゃ儲けるだろうと思った。
会社が一人前の経験N年のプログラマといったら、その通りに振舞う必要がある。顧客に責任はないのだから。
当たり前だが、Webディレクション、Webデザイン、Webプログラミング, Webマークアップ は、全て作業者であるプログラマの仕事になる。
個人的には、これが分かれている理由が良く分からないけど、分けたい人がいるんだろう。
デザインで、CSSフレームワークを使うと、その色が出るという事で、全部 CSS は手書きしていた。
tailwind が出た現在では使っていればよかったなと思う。
結局、全く分からない中、手探りでデザインし、コードを書いて、顧客に 1 日 5 ~ 10 回リリースするという行為をした。
顧客は大手企業だったので、自社のエンジニアならもっと出来る、と叱責されまくったけど、だったら自社でやればいいじゃんと思った。
一応、今でもサービスは生きていて、ユニークユーザ数は上がっているらしい。
そして、焼き付け刃だったので、 WAI-ARIA を知らず、アクセシビリティへの配慮が足りない事が問題になってしまった。
これはなんとか保守対応にねじ込めたのでトラブルにならなかったけど、瑕疵担保責任と綱渡りだなと思った。
当たり前だが、リリースサイクルを短くしないと顧客はキレてしまうので、CI/CD を整えないといけない。
今は Github Actions とかあるけど、昔は無くて Bitrise が高いからみたいな理由で Azure Pipelines で CI/CD フローを構築した。
もう Multi Stage Pipeline になってるだろうけど、Release Pipeline が GUI からしか設定できないのが辛みだった。
当然だが、デプロイするためには IaC を整える必要がある。
これを知らずに、コンソールでポチポチしていたので、 IaC 出来てない事がバレた時に色々怒られてしまった。
本来はテストも自動テストを整えて、質保証をしてバグを減らさなければならない。
だが、テストを書くという手間を払えなかったので、人力テストしかできなかった。
一応、リグレッションテストを人力でやりまくったので、バグ発見曲線が結合テストでの IF 不一致しかない、という結果にはなったけど
自動化できれば費用が必要じゃなかったから、怠慢だと、責められてしまった。
未経験でも誓約書を盾に、振られた事全部を出来なくてはならない慣習があるので、プログラマはそんなに良い職業じゃないよ。
甘い考えで、プログラマになろうと思っているのなら、考え直した方がいいです。
オープンソースソフトウェア(OSS)は、ソフトウェア開発でも長い歴史を持ち、なおかつかなり個性的な特徴がある。
ざっと挙げるなら
こうしたコミュニティから生まれてきたソフトを最も多用しているのは、他ならぬWeb系だろう。
サーバサイドプログラミングが中心になることから、Linuxを触る機会も他の開発系に比べて格段に多いだろうし。
結果、「UNIXの哲学」とかGNUの歴史とか全く意識せずとも、こうした活動を通じていつの間にかOSSのエッセンスを身に着けた人が、Web系には少なからずいそう。
その意味では、OSSがどういうわけか今のWeb系の礎になってしまったという意味で、タイトルに書いた通りになっているのかなーと。