Lookback exists to deal with missed scrapes or other gaps in data, 5 minutes is the arbitrarily chosen default value. The reasons mentioned at
https://www.robustperception.io/what-range-should-i-use-with-rate/ apply here too (although if you know you're not calculating a rate you obviously don't need as many samples). It is hard for Prometheus to automatically know what (multiple of) interval to use as you suggest -- a query might return multiple targets which have different scrape intervals.
In this case you could potentially use your knowledge of the interval to use 2 * 15s as the effective lookback interval, by using a query like last_over_time(metric[30s])
You could also change the default value via the command line flag (--query.lookback-delta), although personally I think it's nicer to be explicit in the query, as changing the lookback delta affects all queries (however last_over_time might be slightly more expensive if you used it for a lot of queries).